", "github": "https://github.com/ctavan"}
- ],
- "keywords": ["uuid", "guid", "rfc4122"],
- "dependencies": {},
- "development": {},
- "main": "uuid.js",
- "scripts": [
- "uuid.js"
- ],
- "license": "MIT"
-}
diff --git a/scripts/node_modules/request/node_modules/node-uuid/package.json b/scripts/node_modules/request/node_modules/node-uuid/package.json
deleted file mode 100644
index a273d8f4..00000000
--- a/scripts/node_modules/request/node_modules/node-uuid/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "name": "node-uuid",
- "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
- "url": "http://github.com/broofa/node-uuid",
- "keywords": [
- "uuid",
- "guid",
- "rfc4122"
- ],
- "author": {
- "name": "Robert Kieffer",
- "email": "robert@broofa.com"
- },
- "contributors": [
- {
- "name": "Christoph Tavan",
- "email": "dev@tavan.de"
- }
- ],
- "bin": {
- "uuid": "./bin/uuid"
- },
- "scripts": {
- "test": "node test/test.js"
- },
- "lib": ".",
- "main": "./uuid.js",
- "repository": {
- "type": "git",
- "url": "https://github.com/broofa/node-uuid.git"
- },
- "version": "1.4.3",
- "licenses": [
- {
- "type": "MIT",
- "url": "https://raw.github.com/broofa/node-uuid/master/LICENSE.md"
- }
- ],
- "gitHead": "886463c660a095dfebfa69603921a8d156fdb12c",
- "bugs": {
- "url": "https://github.com/broofa/node-uuid/issues"
- },
- "homepage": "https://github.com/broofa/node-uuid",
- "_id": "node-uuid@1.4.3",
- "_shasum": "319bb7a56e7cb63f00b5c0cd7851cd4b4ddf1df9",
- "_from": "node-uuid@>=1.4.0 <1.5.0",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "broofa",
- "email": "robert@broofa.com"
- },
- "maintainers": [
- {
- "name": "broofa",
- "email": "robert@broofa.com"
- }
- ],
- "dist": {
- "shasum": "319bb7a56e7cb63f00b5c0cd7851cd4b4ddf1df9",
- "tarball": "http://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/request/node_modules/node-uuid/test/compare_v1.js b/scripts/node_modules/request/node_modules/node-uuid/test/compare_v1.js
deleted file mode 100644
index 05af8221..00000000
--- a/scripts/node_modules/request/node_modules/node-uuid/test/compare_v1.js
+++ /dev/null
@@ -1,63 +0,0 @@
-var assert = require('assert'),
- nodeuuid = require('../uuid'),
- uuidjs = require('uuid-js'),
- libuuid = require('uuid').generate,
- util = require('util'),
- exec = require('child_process').exec,
- os = require('os');
-
-// On Mac Os X / macports there's only the ossp-uuid package that provides uuid
-// On Linux there's uuid-runtime which provides uuidgen
-var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t';
-
-function compare(ids) {
- console.log(ids);
- for (var i = 0; i < ids.length; i++) {
- var id = ids[i].split('-');
- id = [id[2], id[1], id[0]].join('');
- ids[i] = id;
- }
- var sorted = ([].concat(ids)).sort();
-
- if (sorted.toString() !== ids.toString()) {
- console.log('Warning: sorted !== ids');
- } else {
- console.log('everything in order!');
- }
-}
-
-// Test time order of v1 uuids
-var ids = [];
-while (ids.length < 10e3) ids.push(nodeuuid.v1());
-
-var max = 10;
-console.log('node-uuid:');
-ids = [];
-for (var i = 0; i < max; i++) ids.push(nodeuuid.v1());
-compare(ids);
-
-console.log('');
-console.log('uuidjs:');
-ids = [];
-for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString());
-compare(ids);
-
-console.log('');
-console.log('libuuid:');
-ids = [];
-var count = 0;
-var last = function() {
- compare(ids);
-}
-var cb = function(err, stdout, stderr) {
- ids.push(stdout.substring(0, stdout.length-1));
- count++;
- if (count < max) {
- return next();
- }
- last();
-};
-var next = function() {
- exec(uuidCmd, cb);
-};
-next();
diff --git a/scripts/node_modules/request/node_modules/node-uuid/test/test.html b/scripts/node_modules/request/node_modules/node-uuid/test/test.html
deleted file mode 100644
index d80326ec..00000000
--- a/scripts/node_modules/request/node_modules/node-uuid/test/test.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/scripts/node_modules/request/node_modules/node-uuid/test/test.js b/scripts/node_modules/request/node_modules/node-uuid/test/test.js
deleted file mode 100644
index 24692256..00000000
--- a/scripts/node_modules/request/node_modules/node-uuid/test/test.js
+++ /dev/null
@@ -1,228 +0,0 @@
-if (!this.uuid) {
- // node.js
- uuid = require('../uuid');
-}
-
-//
-// x-platform log/assert shims
-//
-
-function _log(msg, type) {
- type = type || 'log';
-
- if (typeof(document) != 'undefined') {
- document.write('' + msg.replace(/\n/g, ' ') + '
');
- }
- if (typeof(console) != 'undefined') {
- var color = {
- log: '\033[39m',
- warn: '\033[33m',
- error: '\033[31m'
- };
- console[type](color[type] + msg + color.log);
- }
-}
-
-function log(msg) {_log(msg, 'log');}
-function warn(msg) {_log(msg, 'warn');}
-function error(msg) {_log(msg, 'error');}
-
-function assert(res, msg) {
- if (!res) {
- error('FAIL: ' + msg);
- } else {
- log('Pass: ' + msg);
- }
-}
-
-//
-// Unit tests
-//
-
-// Verify ordering of v1 ids created with explicit times
-var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00
-
-function compare(name, ids) {
- ids = ids.map(function(id) {
- return id.split('-').reverse().join('-');
- }).sort();
- var sorted = ([].concat(ids)).sort();
-
- assert(sorted.toString() == ids.toString(), name + ' have expected order');
-}
-
-// Verify ordering of v1 ids created using default behavior
-compare('uuids with current time', [
- uuid.v1(),
- uuid.v1(),
- uuid.v1(),
- uuid.v1(),
- uuid.v1()
-]);
-
-// Verify ordering of v1 ids created with explicit times
-compare('uuids with time option', [
- uuid.v1({msecs: TIME - 10*3600*1000}),
- uuid.v1({msecs: TIME - 1}),
- uuid.v1({msecs: TIME}),
- uuid.v1({msecs: TIME + 1}),
- uuid.v1({msecs: TIME + 28*24*3600*1000})
-]);
-
-assert(
- uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}),
- 'IDs created at same msec are different'
-);
-
-// Verify throw if too many ids created
-var thrown = false;
-try {
- uuid.v1({msecs: TIME, nsecs: 10000});
-} catch (e) {
- thrown = true;
-}
-assert(thrown, 'Exception thrown when > 10K ids created in 1 ms');
-
-// Verify clock regression bumps clockseq
-var uidt = uuid.v1({msecs: TIME});
-var uidtb = uuid.v1({msecs: TIME - 1});
-assert(
- parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1,
- 'Clock regression by msec increments the clockseq'
-);
-
-// Verify clock regression bumps clockseq
-var uidtn = uuid.v1({msecs: TIME, nsecs: 10});
-var uidtnb = uuid.v1({msecs: TIME, nsecs: 9});
-assert(
- parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1,
- 'Clock regression by nsec increments the clockseq'
-);
-
-// Verify explicit options produce expected id
-var id = uuid.v1({
- msecs: 1321651533573,
- nsecs: 5432,
- clockseq: 0x385c,
- node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ]
-});
-assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id');
-
-// Verify adjacent ids across a msec boundary are 1 time unit apart
-var u0 = uuid.v1({msecs: TIME, nsecs: 9999});
-var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0});
-
-var before = u0.split('-')[0], after = u1.split('-')[0];
-var dt = parseInt(after, 16) - parseInt(before, 16);
-assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart');
-
-//
-// Test parse/unparse
-//
-
-id = '00112233445566778899aabbccddeeff';
-assert(uuid.unparse(uuid.parse(id.substr(0,10))) ==
- '00112233-4400-0000-0000-000000000000', 'Short parse');
-assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) ==
- '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse');
-
-//
-// Perf tests
-//
-
-var generators = {
- v1: uuid.v1,
- v4: uuid.v4
-};
-
-var UUID_FORMAT = {
- v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i,
- v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i
-};
-
-var N = 1e4;
-
-// Get %'age an actual value differs from the ideal value
-function divergence(actual, ideal) {
- return Math.round(100*100*(actual - ideal)/ideal)/100;
-}
-
-function rate(msg, t) {
- log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second');
-}
-
-for (var version in generators) {
- var counts = {}, max = 0;
- var generator = generators[version];
- var format = UUID_FORMAT[version];
-
- log('\nSanity check ' + N + ' ' + version + ' uuids');
- for (var i = 0, ok = 0; i < N; i++) {
- id = generator();
- if (!format.test(id)) {
- throw Error(id + ' is not a valid UUID string');
- }
-
- if (id != uuid.unparse(uuid.parse(id))) {
- assert(fail, id + ' is not a valid id');
- }
-
- // Count digits for our randomness check
- if (version == 'v4') {
- var digits = id.replace(/-/g, '').split('');
- for (var j = digits.length-1; j >= 0; j--) {
- var c = digits[j];
- max = Math.max(max, counts[c] = (counts[c] || 0) + 1);
- }
- }
- }
-
- // Check randomness for v4 UUIDs
- if (version == 'v4') {
- // Limit that we get worried about randomness. (Purely empirical choice, this!)
- var limit = 2*100*Math.sqrt(1/N);
-
- log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)');
-
- for (var i = 0; i < 16; i++) {
- var c = i.toString(16);
- var bar = '', n = counts[c], p = Math.round(n/max*100|0);
-
- // 1-3,5-8, and D-F: 1:16 odds over 30 digits
- var ideal = N*30/16;
- if (i == 4) {
- // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits
- ideal = N*(1 + 30/16);
- } else if (i >= 8 && i <= 11) {
- // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits
- ideal = N*(1/4 + 30/16);
- } else {
- // Otherwise: 1:16 odds on 30 digits
- ideal = N*30/16;
- }
- var d = divergence(n, ideal);
-
- // Draw bar using UTF squares (just for grins)
- var s = n/max*50 | 0;
- while (s--) bar += '=';
-
- assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)');
- }
- }
-}
-
-// Perf tests
-for (var version in generators) {
- log('\nPerformance testing ' + version + ' UUIDs');
- var generator = generators[version];
- var buf = new uuid.BufferClass(16);
-
- for (var i = 0, t = Date.now(); i < N; i++) generator();
- rate('uuid.' + version + '()', t);
-
- for (var i = 0, t = Date.now(); i < N; i++) generator('binary');
- rate('uuid.' + version + '(\'binary\')', t);
-
- for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf);
- rate('uuid.' + version + '(\'binary\', buffer)', t);
-}
diff --git a/scripts/node_modules/request/node_modules/node-uuid/uuid.js b/scripts/node_modules/request/node_modules/node-uuid/uuid.js
deleted file mode 100644
index 0a617697..00000000
--- a/scripts/node_modules/request/node_modules/node-uuid/uuid.js
+++ /dev/null
@@ -1,247 +0,0 @@
-// uuid.js
-//
-// Copyright (c) 2010-2012 Robert Kieffer
-// MIT License - http://opensource.org/licenses/mit-license.php
-
-(function() {
- var _global = this;
-
- // Unique ID creation requires a high quality random # generator. We feature
- // detect to determine the best RNG source, normalizing to a function that
- // returns 128-bits of randomness, since that's what's usually required
- var _rng;
-
- // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html
- //
- // Moderately fast, high quality
- if (typeof(_global.require) == 'function') {
- try {
- var _rb = _global.require('crypto').randomBytes;
- _rng = _rb && function() {return _rb(16);};
- } catch(e) {}
- }
-
- if (!_rng && _global.crypto && crypto.getRandomValues) {
- // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto
- //
- // Moderately fast, high quality
- var _rnds8 = new Uint8Array(16);
- _rng = function whatwgRNG() {
- crypto.getRandomValues(_rnds8);
- return _rnds8;
- };
- }
-
- if (!_rng) {
- // Math.random()-based (RNG)
- //
- // If all else fails, use Math.random(). It's fast, but is of unspecified
- // quality.
- var _rnds = new Array(16);
- _rng = function() {
- for (var i = 0, r; i < 16; i++) {
- if ((i & 0x03) === 0) r = Math.random() * 0x100000000;
- _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;
- }
-
- return _rnds;
- };
- }
-
- // Buffer class to use
- var BufferClass = typeof(_global.Buffer) == 'function' ? _global.Buffer : Array;
-
- // Maps for number <-> hex string conversion
- var _byteToHex = [];
- var _hexToByte = {};
- for (var i = 0; i < 256; i++) {
- _byteToHex[i] = (i + 0x100).toString(16).substr(1);
- _hexToByte[_byteToHex[i]] = i;
- }
-
- // **`parse()` - Parse a UUID into it's component bytes**
- function parse(s, buf, offset) {
- var i = (buf && offset) || 0, ii = 0;
-
- buf = buf || [];
- s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {
- if (ii < 16) { // Don't overflow!
- buf[i + ii++] = _hexToByte[oct];
- }
- });
-
- // Zero out remaining bytes if string was short
- while (ii < 16) {
- buf[i + ii++] = 0;
- }
-
- return buf;
- }
-
- // **`unparse()` - Convert UUID byte array (ala parse()) into a string**
- function unparse(buf, offset) {
- var i = offset || 0, bth = _byteToHex;
- return bth[buf[i++]] + bth[buf[i++]] +
- bth[buf[i++]] + bth[buf[i++]] + '-' +
- bth[buf[i++]] + bth[buf[i++]] + '-' +
- bth[buf[i++]] + bth[buf[i++]] + '-' +
- bth[buf[i++]] + bth[buf[i++]] + '-' +
- bth[buf[i++]] + bth[buf[i++]] +
- bth[buf[i++]] + bth[buf[i++]] +
- bth[buf[i++]] + bth[buf[i++]];
- }
-
- // **`v1()` - Generate time-based UUID**
- //
- // Inspired by https://github.com/LiosK/UUID.js
- // and http://docs.python.org/library/uuid.html
-
- // random #'s we need to init node and clockseq
- var _seedBytes = _rng();
-
- // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
- var _nodeId = [
- _seedBytes[0] | 0x01,
- _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]
- ];
-
- // Per 4.2.2, randomize (14 bit) clockseq
- var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;
-
- // Previous uuid creation time
- var _lastMSecs = 0, _lastNSecs = 0;
-
- // See https://github.com/broofa/node-uuid for API details
- function v1(options, buf, offset) {
- var i = buf && offset || 0;
- var b = buf || [];
-
- options = options || {};
-
- var clockseq = options.clockseq != null ? options.clockseq : _clockseq;
-
- // UUID timestamps are 100 nano-second units since the Gregorian epoch,
- // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so
- // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
- // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
- var msecs = options.msecs != null ? options.msecs : new Date().getTime();
-
- // Per 4.2.1.2, use count of uuid's generated during the current clock
- // cycle to simulate higher resolution clock
- var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1;
-
- // Time since last uuid creation (in msecs)
- var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;
-
- // Per 4.2.1.2, Bump clockseq on clock regression
- if (dt < 0 && options.clockseq == null) {
- clockseq = clockseq + 1 & 0x3fff;
- }
-
- // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
- // time interval
- if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) {
- nsecs = 0;
- }
-
- // Per 4.2.1.2 Throw error if too many uuids are requested
- if (nsecs >= 10000) {
- throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');
- }
-
- _lastMSecs = msecs;
- _lastNSecs = nsecs;
- _clockseq = clockseq;
-
- // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
- msecs += 12219292800000;
-
- // `time_low`
- var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
- b[i++] = tl >>> 24 & 0xff;
- b[i++] = tl >>> 16 & 0xff;
- b[i++] = tl >>> 8 & 0xff;
- b[i++] = tl & 0xff;
-
- // `time_mid`
- var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;
- b[i++] = tmh >>> 8 & 0xff;
- b[i++] = tmh & 0xff;
-
- // `time_high_and_version`
- b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
- b[i++] = tmh >>> 16 & 0xff;
-
- // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
- b[i++] = clockseq >>> 8 | 0x80;
-
- // `clock_seq_low`
- b[i++] = clockseq & 0xff;
-
- // `node`
- var node = options.node || _nodeId;
- for (var n = 0; n < 6; n++) {
- b[i + n] = node[n];
- }
-
- return buf ? buf : unparse(b);
- }
-
- // **`v4()` - Generate random UUID**
-
- // See https://github.com/broofa/node-uuid for API details
- function v4(options, buf, offset) {
- // Deprecated - 'format' argument, as supported in v1.2
- var i = buf && offset || 0;
-
- if (typeof(options) == 'string') {
- buf = options == 'binary' ? new BufferClass(16) : null;
- options = null;
- }
- options = options || {};
-
- var rnds = options.random || (options.rng || _rng)();
-
- // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
- rnds[6] = (rnds[6] & 0x0f) | 0x40;
- rnds[8] = (rnds[8] & 0x3f) | 0x80;
-
- // Copy bytes to buffer, if provided
- if (buf) {
- for (var ii = 0; ii < 16; ii++) {
- buf[i + ii] = rnds[ii];
- }
- }
-
- return buf || unparse(rnds);
- }
-
- // Export public API
- var uuid = v4;
- uuid.v1 = v1;
- uuid.v4 = v4;
- uuid.parse = parse;
- uuid.unparse = unparse;
- uuid.BufferClass = BufferClass;
-
- if (typeof(module) != 'undefined' && module.exports) {
- // Publish as node.js module
- module.exports = uuid;
- } else if (typeof define === 'function' && define.amd) {
- // Publish as AMD module
- define(function() {return uuid;});
-
-
- } else {
- // Publish as global (in browsers)
- var _previousRoot = _global.uuid;
-
- // **`noConflict()` - (browser only) to reset global 'uuid' var**
- uuid.noConflict = function() {
- _global.uuid = _previousRoot;
- return uuid;
- };
-
- _global.uuid = uuid;
- }
-}).call(this);
diff --git a/scripts/node_modules/request/node_modules/oauth-sign/LICENSE b/scripts/node_modules/request/node_modules/oauth-sign/LICENSE
deleted file mode 100644
index a4a9aee0..00000000
--- a/scripts/node_modules/request/node_modules/oauth-sign/LICENSE
+++ /dev/null
@@ -1,55 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
\ No newline at end of file
diff --git a/scripts/node_modules/request/node_modules/oauth-sign/README.md b/scripts/node_modules/request/node_modules/oauth-sign/README.md
deleted file mode 100644
index 34c4a85d..00000000
--- a/scripts/node_modules/request/node_modules/oauth-sign/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-oauth-sign
-==========
-
-OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.
diff --git a/scripts/node_modules/request/node_modules/oauth-sign/index.js b/scripts/node_modules/request/node_modules/oauth-sign/index.js
deleted file mode 100644
index a587541d..00000000
--- a/scripts/node_modules/request/node_modules/oauth-sign/index.js
+++ /dev/null
@@ -1,134 +0,0 @@
-var crypto = require('crypto')
- , qs = require('querystring')
- ;
-
-function sha1 (key, body) {
- return crypto.createHmac('sha1', key).update(body).digest('base64')
-}
-
-function rsa (key, body) {
- return crypto.createSign("RSA-SHA1").update(body).sign(key, 'base64');
-}
-
-function rfc3986 (str) {
- return encodeURIComponent(str)
- .replace(/!/g,'%21')
- .replace(/\*/g,'%2A')
- .replace(/\(/g,'%28')
- .replace(/\)/g,'%29')
- .replace(/'/g,'%27')
- ;
-}
-
-// Maps object to bi-dimensional array
-// Converts { foo: 'A', bar: [ 'b', 'B' ]} to
-// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ]
-function map (obj) {
- var key, val, arr = []
- for (key in obj) {
- val = obj[key]
- if (Array.isArray(val))
- for (var i = 0; i < val.length; i++)
- arr.push([key, val[i]])
- else if (typeof val === "object")
- for (var prop in val)
- arr.push([key + '[' + prop + ']', val[prop]]);
- else
- arr.push([key, val])
- }
- return arr
-}
-
-// Compare function for sort
-function compare (a, b) {
- return a > b ? 1 : a < b ? -1 : 0
-}
-
-function generateBase (httpMethod, base_uri, params) {
- // adapted from https://dev.twitter.com/docs/auth/oauth and
- // https://dev.twitter.com/docs/auth/creating-signature
-
- // Parameter normalization
- // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2
- var normalized = map(params)
- // 1. First, the name and value of each parameter are encoded
- .map(function (p) {
- return [ rfc3986(p[0]), rfc3986(p[1] || '') ]
- })
- // 2. The parameters are sorted by name, using ascending byte value
- // ordering. If two or more parameters share the same name, they
- // are sorted by their value.
- .sort(function (a, b) {
- return compare(a[0], b[0]) || compare(a[1], b[1])
- })
- // 3. The name of each parameter is concatenated to its corresponding
- // value using an "=" character (ASCII code 61) as a separator, even
- // if the value is empty.
- .map(function (p) { return p.join('=') })
- // 4. The sorted name/value pairs are concatenated together into a
- // single string by using an "&" character (ASCII code 38) as
- // separator.
- .join('&')
-
- var base = [
- rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'),
- rfc3986(base_uri),
- rfc3986(normalized)
- ].join('&')
-
- return base
-}
-
-function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) {
- var base = generateBase(httpMethod, base_uri, params)
- var key = [
- consumer_secret || '',
- token_secret || ''
- ].map(rfc3986).join('&')
-
- return sha1(key, base)
-}
-
-function rsasign (httpMethod, base_uri, params, private_key, token_secret) {
- var base = generateBase(httpMethod, base_uri, params)
- var key = private_key || ''
-
- return rsa(key, base)
-}
-
-function plaintext (consumer_secret, token_secret) {
- var key = [
- consumer_secret || '',
- token_secret || ''
- ].map(rfc3986).join('&')
-
- return key
-}
-
-function sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) {
- var method
- var skipArgs = 1
-
- switch (signMethod) {
- case 'RSA-SHA1':
- method = rsasign
- break
- case 'HMAC-SHA1':
- method = hmacsign
- break
- case 'PLAINTEXT':
- method = plaintext
- skipArgs = 4
- break
- default:
- throw new Error("Signature method not supported: " + signMethod)
- }
-
- return method.apply(null, [].slice.call(arguments, skipArgs))
-}
-
-exports.hmacsign = hmacsign
-exports.rsasign = rsasign
-exports.plaintext = plaintext
-exports.sign = sign
-exports.rfc3986 = rfc3986
diff --git a/scripts/node_modules/request/node_modules/oauth-sign/package.json b/scripts/node_modules/request/node_modules/oauth-sign/package.json
deleted file mode 100644
index 074a72ba..00000000
--- a/scripts/node_modules/request/node_modules/oauth-sign/package.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com",
- "url": "http://www.futurealoof.com"
- },
- "name": "oauth-sign",
- "description": "OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.",
- "version": "0.8.0",
- "license": "Apache-2.0",
- "repository": {
- "url": "git+https://github.com/mikeal/oauth-sign.git"
- },
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {},
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "scripts": {
- "test": "node test.js"
- },
- "gitHead": "e1f2b42ff039901ce977f8e81918767d97d496b5",
- "bugs": {
- "url": "https://github.com/mikeal/oauth-sign/issues"
- },
- "homepage": "https://github.com/mikeal/oauth-sign#readme",
- "_id": "oauth-sign@0.8.0",
- "_shasum": "938fdc875765ba527137d8aec9d178e24debc553",
- "_from": "oauth-sign@>=0.8.0 <0.9.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "0.12.4",
- "_npmUser": {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- },
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- {
- "name": "nylen",
- "email": "jnylen@gmail.com"
- },
- {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- }
- ],
- "dist": {
- "shasum": "938fdc875765ba527137d8aec9d178e24debc553",
- "tarball": "http://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz"
-}
diff --git a/scripts/node_modules/request/node_modules/oauth-sign/test.js b/scripts/node_modules/request/node_modules/oauth-sign/test.js
deleted file mode 100644
index a8847270..00000000
--- a/scripts/node_modules/request/node_modules/oauth-sign/test.js
+++ /dev/null
@@ -1,89 +0,0 @@
-var oauth = require('./index')
- , hmacsign = oauth.hmacsign
- , assert = require('assert')
- , qs = require('querystring')
- ;
-
-// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth
-
-var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token',
- { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11'
- , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g'
- , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk'
- , oauth_signature_method: 'HMAC-SHA1'
- , oauth_timestamp: '1272323042'
- , oauth_version: '1.0'
- }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98")
-
-console.log(reqsign)
-console.log('8wUi7m5HFQy76nowoCThusfgB+Q=')
-assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=')
-
-var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token',
- { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g'
- , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8'
- , oauth_signature_method: 'HMAC-SHA1'
- , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc'
- , oauth_timestamp: '1272323047'
- , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY'
- , oauth_version: '1.0'
- }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA")
-
-console.log(accsign)
-console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=')
-assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=')
-
-var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json',
- { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g"
- , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y"
- , oauth_signature_method: "HMAC-SHA1"
- , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw"
- , oauth_timestamp: "1272325550"
- , oauth_version: "1.0"
- , status: 'setting up my twitter 私のさえずりを設定する'
- }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA")
-
-console.log(upsign)
-console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=')
-assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=')
-
-// handle objects in params (useful for Wordpress REST API)
-var upsign = hmacsign('POST', 'http://wordpress.com/wp-json',
- { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g"
- , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y"
- , oauth_signature_method: "HMAC-SHA1"
- , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw"
- , oauth_timestamp: "1272325550"
- , oauth_version: "1.0"
- , filter: { number: "-1" }
- }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA")
-
-console.log(upsign)
-console.log('YrJFBdwnjuIitGpKrxLUplcuuUQ=')
-assert.equal(upsign, 'YrJFBdwnjuIitGpKrxLUplcuuUQ=')
-
-// example in rfc5849
-var params = qs.parse('b5=%3D%253D&a3=a&c%40=&a2=r%20b' + '&' + 'c2&a3=2+q')
-params.oauth_consumer_key = '9djdj82h48djs9d2'
-params.oauth_token = 'kkk9d7dh3k39sjv7'
-params.oauth_nonce = '7d8f3e4a'
-params.oauth_signature_method = 'HMAC-SHA1'
-params.oauth_timestamp = '137131201'
-
-var rfc5849sign = hmacsign('POST', 'http://example.com/request',
- params, "j49sk3j29djd", "dh893hdasih9")
-
-console.log(rfc5849sign)
-console.log('r6/TJjbCOr97/+UU0NsvSne7s5g=')
-assert.equal(rfc5849sign, 'r6/TJjbCOr97/+UU0NsvSne7s5g=')
-
-
-// PLAINTEXT
-
-var plainSign = oauth.sign('PLAINTEXT', 'GET', 'http://dummy.com', {}, 'consumer_secret', 'token_secret')
-console.log(plainSign)
-assert.equal(plainSign, 'consumer_secret&token_secret')
-
-plainSign = oauth.plaintext('consumer_secret', 'token_secret')
-console.log(plainSign)
-assert.equal(plainSign, 'consumer_secret&token_secret')
diff --git a/scripts/node_modules/request/node_modules/qs/.eslintignore b/scripts/node_modules/request/node_modules/qs/.eslintignore
deleted file mode 100644
index 1521c8b7..00000000
--- a/scripts/node_modules/request/node_modules/qs/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-dist
diff --git a/scripts/node_modules/request/node_modules/qs/.npmignore b/scripts/node_modules/request/node_modules/qs/.npmignore
deleted file mode 100644
index 2abba8d2..00000000
--- a/scripts/node_modules/request/node_modules/qs/.npmignore
+++ /dev/null
@@ -1,19 +0,0 @@
-.idea
-*.iml
-npm-debug.log
-dump.rdb
-node_modules
-results.tap
-results.xml
-npm-shrinkwrap.json
-config.json
-.DS_Store
-*/.DS_Store
-*/*/.DS_Store
-._*
-*/._*
-*/*/._*
-coverage.*
-lib-cov
-complexity.md
-dist
diff --git a/scripts/node_modules/request/node_modules/qs/.travis.yml b/scripts/node_modules/request/node_modules/qs/.travis.yml
deleted file mode 100644
index f5021788..00000000
--- a/scripts/node_modules/request/node_modules/qs/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-
-node_js:
- - 0.10
- - 0.12
- - iojs
diff --git a/scripts/node_modules/request/node_modules/qs/CHANGELOG.md b/scripts/node_modules/request/node_modules/qs/CHANGELOG.md
deleted file mode 100644
index 1fadc78e..00000000
--- a/scripts/node_modules/request/node_modules/qs/CHANGELOG.md
+++ /dev/null
@@ -1,88 +0,0 @@
-
-## [**3.1.0**](https://github.com/hapijs/qs/issues?milestone=24&state=open)
-- [**#89**](https://github.com/hapijs/qs/issues/89) Add option to disable "Transform dot notation to bracket notation"
-
-## [**3.0.0**](https://github.com/hapijs/qs/issues?milestone=23&state=closed)
-- [**#77**](https://github.com/hapijs/qs/issues/77) Perf boost
-- [**#60**](https://github.com/hapijs/qs/issues/60) Add explicit option to disable array parsing
-- [**#80**](https://github.com/hapijs/qs/issues/80) qs.parse silently drops properties
-- [**#74**](https://github.com/hapijs/qs/issues/74) Bad parse when turning array into object
-- [**#81**](https://github.com/hapijs/qs/issues/81) Add a `filter` option
-- [**#68**](https://github.com/hapijs/qs/issues/68) Fixed issue with recursion and passing strings into objects.
-- [**#66**](https://github.com/hapijs/qs/issues/66) Add mixed array and object dot notation support Closes: #47
-- [**#76**](https://github.com/hapijs/qs/issues/76) RFC 3986
-- [**#85**](https://github.com/hapijs/qs/issues/85) No equal sign
-- [**#84**](https://github.com/hapijs/qs/issues/84) update license attribute
-
-## [**2.4.1**](https://github.com/hapijs/qs/issues?milestone=20&state=closed)
-- [**#73**](https://github.com/hapijs/qs/issues/73) Property 'hasOwnProperty' of object # is not a function
-
-## [**2.4.0**](https://github.com/hapijs/qs/issues?milestone=19&state=closed)
-- [**#70**](https://github.com/hapijs/qs/issues/70) Add arrayFormat option
-
-## [**2.3.3**](https://github.com/hapijs/qs/issues?milestone=18&state=closed)
-- [**#59**](https://github.com/hapijs/qs/issues/59) make sure array indexes are >= 0, closes #57
-- [**#58**](https://github.com/hapijs/qs/issues/58) make qs usable for browser loader
-
-## [**2.3.2**](https://github.com/hapijs/qs/issues?milestone=17&state=closed)
-- [**#55**](https://github.com/hapijs/qs/issues/55) allow merging a string into an object
-
-## [**2.3.1**](https://github.com/hapijs/qs/issues?milestone=16&state=closed)
-- [**#52**](https://github.com/hapijs/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError".
-
-## [**2.3.0**](https://github.com/hapijs/qs/issues?milestone=15&state=closed)
-- [**#50**](https://github.com/hapijs/qs/issues/50) add option to omit array indices, closes #46
-
-## [**2.2.5**](https://github.com/hapijs/qs/issues?milestone=14&state=closed)
-- [**#39**](https://github.com/hapijs/qs/issues/39) Is there an alternative to Buffer.isBuffer?
-- [**#49**](https://github.com/hapijs/qs/issues/49) refactor utils.merge, fixes #45
-- [**#41**](https://github.com/hapijs/qs/issues/41) avoid browserifying Buffer, for #39
-
-## [**2.2.4**](https://github.com/hapijs/qs/issues?milestone=13&state=closed)
-- [**#38**](https://github.com/hapijs/qs/issues/38) how to handle object keys beginning with a number
-
-## [**2.2.3**](https://github.com/hapijs/qs/issues?milestone=12&state=closed)
-- [**#37**](https://github.com/hapijs/qs/issues/37) parser discards first empty value in array
-- [**#36**](https://github.com/hapijs/qs/issues/36) Update to lab 4.x
-
-## [**2.2.2**](https://github.com/hapijs/qs/issues?milestone=11&state=closed)
-- [**#33**](https://github.com/hapijs/qs/issues/33) Error when plain object in a value
-- [**#34**](https://github.com/hapijs/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty
-- [**#24**](https://github.com/hapijs/qs/issues/24) Changelog? Semver?
-
-## [**2.2.1**](https://github.com/hapijs/qs/issues?milestone=10&state=closed)
-- [**#32**](https://github.com/hapijs/qs/issues/32) account for circular references properly, closes #31
-- [**#31**](https://github.com/hapijs/qs/issues/31) qs.parse stackoverflow on circular objects
-
-## [**2.2.0**](https://github.com/hapijs/qs/issues?milestone=9&state=closed)
-- [**#26**](https://github.com/hapijs/qs/issues/26) Don't use Buffer global if it's not present
-- [**#30**](https://github.com/hapijs/qs/issues/30) Bug when merging non-object values into arrays
-- [**#29**](https://github.com/hapijs/qs/issues/29) Don't call Utils.clone at the top of Utils.merge
-- [**#23**](https://github.com/hapijs/qs/issues/23) Ability to not limit parameters?
-
-## [**2.1.0**](https://github.com/hapijs/qs/issues?milestone=8&state=closed)
-- [**#22**](https://github.com/hapijs/qs/issues/22) Enable using a RegExp as delimiter
-
-## [**2.0.0**](https://github.com/hapijs/qs/issues?milestone=7&state=closed)
-- [**#18**](https://github.com/hapijs/qs/issues/18) Why is there arrayLimit?
-- [**#20**](https://github.com/hapijs/qs/issues/20) Configurable parametersLimit
-- [**#21**](https://github.com/hapijs/qs/issues/21) make all limits optional, for #18, for #20
-
-## [**1.2.2**](https://github.com/hapijs/qs/issues?milestone=6&state=closed)
-- [**#19**](https://github.com/hapijs/qs/issues/19) Don't overwrite null values
-
-## [**1.2.1**](https://github.com/hapijs/qs/issues?milestone=5&state=closed)
-- [**#16**](https://github.com/hapijs/qs/issues/16) ignore non-string delimiters
-- [**#15**](https://github.com/hapijs/qs/issues/15) Close code block
-
-## [**1.2.0**](https://github.com/hapijs/qs/issues?milestone=4&state=closed)
-- [**#12**](https://github.com/hapijs/qs/issues/12) Add optional delim argument
-- [**#13**](https://github.com/hapijs/qs/issues/13) fix #11: flattened keys in array are now correctly parsed
-
-## [**1.1.0**](https://github.com/hapijs/qs/issues?milestone=3&state=closed)
-- [**#7**](https://github.com/hapijs/qs/issues/7) Empty values of a POST array disappear after being submitted
-- [**#9**](https://github.com/hapijs/qs/issues/9) Should not omit equals signs (=) when value is null
-- [**#6**](https://github.com/hapijs/qs/issues/6) Minor grammar fix in README
-
-## [**1.0.2**](https://github.com/hapijs/qs/issues?milestone=2&state=closed)
-- [**#5**](https://github.com/hapijs/qs/issues/5) array holes incorrectly copied into object on large index
diff --git a/scripts/node_modules/request/node_modules/qs/CONTRIBUTING.md b/scripts/node_modules/request/node_modules/qs/CONTRIBUTING.md
deleted file mode 100644
index 89283615..00000000
--- a/scripts/node_modules/request/node_modules/qs/CONTRIBUTING.md
+++ /dev/null
@@ -1 +0,0 @@
-Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md).
diff --git a/scripts/node_modules/request/node_modules/qs/LICENSE b/scripts/node_modules/request/node_modules/qs/LICENSE
deleted file mode 100644
index d4569487..00000000
--- a/scripts/node_modules/request/node_modules/qs/LICENSE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (c) 2014 Nathan LaFreniere and other contributors.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * The names of any contributors may not be used to endorse or promote
- products derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- * * *
-
-The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors
diff --git a/scripts/node_modules/request/node_modules/qs/README.md b/scripts/node_modules/request/node_modules/qs/README.md
deleted file mode 100644
index 48a0de97..00000000
--- a/scripts/node_modules/request/node_modules/qs/README.md
+++ /dev/null
@@ -1,317 +0,0 @@
-# qs
-
-A querystring parsing and stringifying library with some added security.
-
-[![Build Status](https://secure.travis-ci.org/hapijs/qs.svg)](http://travis-ci.org/hapijs/qs)
-
-Lead Maintainer: [Nathan LaFreniere](https://github.com/nlf)
-
-The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring).
-
-## Usage
-
-```javascript
-var Qs = require('qs');
-
-var obj = Qs.parse('a=c'); // { a: 'c' }
-var str = Qs.stringify(obj); // 'a=c'
-```
-
-### Parsing Objects
-
-```javascript
-Qs.parse(string, [options]);
-```
-
-**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`, or prefixing the sub-key with a dot `.`.
-For example, the string `'foo[bar]=baz'` converts to:
-
-```javascript
-{
- foo: {
- bar: 'baz'
- }
-}
-```
-
-When using the `plainObjects` option the parsed value is returned as a plain object, created via `Object.create(null)` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like:
-
-```javascript
-Qs.parse('a.hasOwnProperty=b', { plainObjects: true });
-// { a: { hasOwnProperty: 'b' } }
-```
-
-By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. *WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. Always be careful with this option.
-
-```javascript
-Qs.parse('a.hasOwnProperty=b', { allowPrototypes: true });
-// { a: { hasOwnProperty: 'b' } }
-```
-
-URI encoded strings work too:
-
-```javascript
-Qs.parse('a%5Bb%5D=c');
-// { a: { b: 'c' } }
-```
-
-You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`:
-
-```javascript
-{
- foo: {
- bar: {
- baz: 'foobarbaz'
- }
- }
-}
-```
-
-By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like
-`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be:
-
-```javascript
-{
- a: {
- b: {
- c: {
- d: {
- e: {
- f: {
- '[g][h][i]': 'j'
- }
- }
- }
- }
- }
- }
-}
-```
-
-This depth can be overridden by passing a `depth` option to `Qs.parse(string, [options])`:
-
-```javascript
-Qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 });
-// { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }
-```
-
-The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number.
-
-For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option:
-
-```javascript
-Qs.parse('a=b&c=d', { parameterLimit: 1 });
-// { a: 'b' }
-```
-
-An optional delimiter can also be passed:
-
-```javascript
-Qs.parse('a=b;c=d', { delimiter: ';' });
-// { a: 'b', c: 'd' }
-```
-
-Delimiters can be a regular expression too:
-
-```javascript
-Qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ });
-// { a: 'b', c: 'd', e: 'f' }
-```
-
-Option `allowDots` can be used to disable dot notation:
-
-```javascript
-Qs.parse('a.b=c', { allowDots: false });
-// { 'a.b': 'c' } }
-```
-
-### Parsing Arrays
-
-**qs** can also parse arrays using a similar `[]` notation:
-
-```javascript
-Qs.parse('a[]=b&a[]=c');
-// { a: ['b', 'c'] }
-```
-
-You may specify an index as well:
-
-```javascript
-Qs.parse('a[1]=c&a[0]=b');
-// { a: ['b', 'c'] }
-```
-
-Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number
-to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving
-their order:
-
-```javascript
-Qs.parse('a[1]=b&a[15]=c');
-// { a: ['b', 'c'] }
-```
-
-Note that an empty string is also a value, and will be preserved:
-
-```javascript
-Qs.parse('a[]=&a[]=b');
-// { a: ['', 'b'] }
-Qs.parse('a[0]=b&a[1]=&a[2]=c');
-// { a: ['b', '', 'c'] }
-```
-
-**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will
-instead be converted to an object with the index as the key:
-
-```javascript
-Qs.parse('a[100]=b');
-// { a: { '100': 'b' } }
-```
-
-This limit can be overridden by passing an `arrayLimit` option:
-
-```javascript
-Qs.parse('a[1]=b', { arrayLimit: 0 });
-// { a: { '1': 'b' } }
-```
-
-To disable array parsing entirely, set `parseArrays` to `false`.
-
-```javascript
-Qs.parse('a[]=b', { parseArrays: false });
-// { a: { '0': 'b' } }
-```
-
-If you mix notations, **qs** will merge the two items into an object:
-
-```javascript
-Qs.parse('a[0]=b&a[b]=c');
-// { a: { '0': 'b', b: 'c' } }
-```
-
-You can also create arrays of objects:
-
-```javascript
-Qs.parse('a[][b]=c');
-// { a: [{ b: 'c' }] }
-```
-
-### Stringifying
-
-```javascript
-Qs.stringify(object, [options]);
-```
-
-When stringifying, **qs** always URI encodes output. Objects are stringified as you would expect:
-
-```javascript
-Qs.stringify({ a: 'b' });
-// 'a=b'
-Qs.stringify({ a: { b: 'c' } });
-// 'a%5Bb%5D=c'
-```
-
-Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage.
-
-When arrays are stringified, by default they are given explicit indices:
-
-```javascript
-Qs.stringify({ a: ['b', 'c', 'd'] });
-// 'a[0]=b&a[1]=c&a[2]=d'
-```
-
-You may override this by setting the `indices` option to `false`:
-
-```javascript
-Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });
-// 'a=b&a=c&a=d'
-```
-
-You may use the `arrayFormat` option to specify the format of the output array
-
-```javascript
-Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
-// 'a[0]=b&a[1]=c'
-Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
-// 'a[]=b&a[]=c'
-Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
-// 'a=b&a=c'
-```
-
-Empty strings and null values will omit the value, but the equals sign (=) remains in place:
-
-```javascript
-Qs.stringify({ a: '' });
-// 'a='
-```
-
-Properties that are set to `undefined` will be omitted entirely:
-
-```javascript
-Qs.stringify({ a: null, b: undefined });
-// 'a='
-```
-
-The delimiter may be overridden with stringify as well:
-
-```javascript
-Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' });
-// 'a=b;c=d'
-```
-
-Finally, you can use the `filter` option to restrict which keys will be included in the stringified output.
-If you pass a function, it will be called for each key to obtain the replacement value. Otherwise, if you
-pass an array, it will be used to select properties and array indices for stringification:
-
-```javascript
-function filterFunc(prefix, value) {
- if (prefix == 'b') {
- // Return an `undefined` value to omit a property.
- return;
- }
- if (prefix == 'e[f]') {
- return value.getTime();
- }
- if (prefix == 'e[g][0]') {
- return value * 2;
- }
- return value;
-}
-Qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc })
-// 'a=b&c=d&e[f]=123&e[g][0]=4'
-Qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] })
-// 'a=b&e=f'
-Qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] })
-// 'a[0]=b&a[2]=d'
-```
-
-### Handling of `null` values
-
-By default, `null` values are treated like empty strings:
-
-```javascript
-Qs.stringify({ a: null, b: '' });
-// 'a=&b='
-```
-
-Parsing does not distinguish between parameters with and without equal signs. Both are converted to empty strings.
-
-```javascript
-Qs.parse('a&b=')
-// { a: '', b: '' }
-```
-
-To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null`
-values have no `=` sign:
-
-```javascript
-Qs.stringify({ a: null, b: '' }, { strictNullHandling: true });
-// 'a&b='
-```
-
-To parse values without `=` back to `null` use the `strictNullHandling` flag:
-
-```javascript
-Qs.parse('a&b=', { strictNullHandling: true });
-// { a: null, b: '' }
-
-```
diff --git a/scripts/node_modules/request/node_modules/qs/bower.json b/scripts/node_modules/request/node_modules/qs/bower.json
deleted file mode 100644
index ffd0641d..00000000
--- a/scripts/node_modules/request/node_modules/qs/bower.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "qs",
- "main": "dist/qs.js",
- "version": "3.0.0",
- "homepage": "https://github.com/hapijs/qs",
- "authors": [
- "Nathan LaFreniere "
- ],
- "description": "A querystring parser that supports nesting and arrays, with a depth limit",
- "keywords": [
- "querystring",
- "qs"
- ],
- "license": "BSD-3-Clause",
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests"
- ]
-}
diff --git a/scripts/node_modules/request/node_modules/qs/lib/index.js b/scripts/node_modules/request/node_modules/qs/lib/index.js
deleted file mode 100644
index 0e094933..00000000
--- a/scripts/node_modules/request/node_modules/qs/lib/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// Load modules
-
-var Stringify = require('./stringify');
-var Parse = require('./parse');
-
-
-// Declare internals
-
-var internals = {};
-
-
-module.exports = {
- stringify: Stringify,
- parse: Parse
-};
diff --git a/scripts/node_modules/request/node_modules/qs/lib/parse.js b/scripts/node_modules/request/node_modules/qs/lib/parse.js
deleted file mode 100644
index e7c56c5c..00000000
--- a/scripts/node_modules/request/node_modules/qs/lib/parse.js
+++ /dev/null
@@ -1,186 +0,0 @@
-// Load modules
-
-var Utils = require('./utils');
-
-
-// Declare internals
-
-var internals = {
- delimiter: '&',
- depth: 5,
- arrayLimit: 20,
- parameterLimit: 1000,
- strictNullHandling: false,
- plainObjects: false,
- allowPrototypes: false
-};
-
-
-internals.parseValues = function (str, options) {
-
- var obj = {};
- var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit);
-
- for (var i = 0, il = parts.length; i < il; ++i) {
- var part = parts[i];
- var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1;
-
- if (pos === -1) {
- obj[Utils.decode(part)] = '';
-
- if (options.strictNullHandling) {
- obj[Utils.decode(part)] = null;
- }
- }
- else {
- var key = Utils.decode(part.slice(0, pos));
- var val = Utils.decode(part.slice(pos + 1));
-
- if (!Object.prototype.hasOwnProperty.call(obj, key)) {
- obj[key] = val;
- }
- else {
- obj[key] = [].concat(obj[key]).concat(val);
- }
- }
- }
-
- return obj;
-};
-
-
-internals.parseObject = function (chain, val, options) {
-
- if (!chain.length) {
- return val;
- }
-
- var root = chain.shift();
-
- var obj;
- if (root === '[]') {
- obj = [];
- obj = obj.concat(internals.parseObject(chain, val, options));
- }
- else {
- obj = options.plainObjects ? Object.create(null) : {};
- var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root;
- var index = parseInt(cleanRoot, 10);
- var indexString = '' + index;
- if (!isNaN(index) &&
- root !== cleanRoot &&
- indexString === cleanRoot &&
- index >= 0 &&
- (options.parseArrays &&
- index <= options.arrayLimit)) {
-
- obj = [];
- obj[index] = internals.parseObject(chain, val, options);
- }
- else {
- obj[cleanRoot] = internals.parseObject(chain, val, options);
- }
- }
-
- return obj;
-};
-
-
-internals.parseKeys = function (key, val, options) {
-
- if (!key) {
- return;
- }
-
- // Transform dot notation to bracket notation
-
- if (options.allowDots) {
- key = key.replace(/\.([^\.\[]+)/g, '[$1]');
- }
-
- // The regex chunks
-
- var parent = /^([^\[\]]*)/;
- var child = /(\[[^\[\]]*\])/g;
-
- // Get the parent
-
- var segment = parent.exec(key);
-
- // Stash the parent if it exists
-
- var keys = [];
- if (segment[1]) {
- // If we aren't using plain objects, optionally prefix keys
- // that would overwrite object prototype properties
- if (!options.plainObjects &&
- Object.prototype.hasOwnProperty(segment[1])) {
-
- if (!options.allowPrototypes) {
- return;
- }
- }
-
- keys.push(segment[1]);
- }
-
- // Loop through children appending to the array until we hit depth
-
- var i = 0;
- while ((segment = child.exec(key)) !== null && i < options.depth) {
-
- ++i;
- if (!options.plainObjects &&
- Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) {
-
- if (!options.allowPrototypes) {
- continue;
- }
- }
- keys.push(segment[1]);
- }
-
- // If there's a remainder, just add whatever is left
-
- if (segment) {
- keys.push('[' + key.slice(segment.index) + ']');
- }
-
- return internals.parseObject(keys, val, options);
-};
-
-
-module.exports = function (str, options) {
-
- options = options || {};
- options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter;
- options.depth = typeof options.depth === 'number' ? options.depth : internals.depth;
- options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit;
- options.parseArrays = options.parseArrays !== false;
- options.allowDots = options.allowDots !== false;
- options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : internals.plainObjects;
- options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : internals.allowPrototypes;
- options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit;
- options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;
-
- if (str === '' ||
- str === null ||
- typeof str === 'undefined') {
-
- return options.plainObjects ? Object.create(null) : {};
- }
-
- var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str;
- var obj = options.plainObjects ? Object.create(null) : {};
-
- // Iterate over the keys and setup the new object
-
- var keys = Object.keys(tempObj);
- for (var i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- var newObj = internals.parseKeys(key, tempObj[key], options);
- obj = Utils.merge(obj, newObj, options);
- }
-
- return Utils.compact(obj);
-};
diff --git a/scripts/node_modules/request/node_modules/qs/lib/stringify.js b/scripts/node_modules/request/node_modules/qs/lib/stringify.js
deleted file mode 100644
index 7414284c..00000000
--- a/scripts/node_modules/request/node_modules/qs/lib/stringify.js
+++ /dev/null
@@ -1,121 +0,0 @@
-// Load modules
-
-var Utils = require('./utils');
-
-
-// Declare internals
-
-var internals = {
- delimiter: '&',
- arrayPrefixGenerators: {
- brackets: function (prefix, key) {
-
- return prefix + '[]';
- },
- indices: function (prefix, key) {
-
- return prefix + '[' + key + ']';
- },
- repeat: function (prefix, key) {
-
- return prefix;
- }
- },
- strictNullHandling: false
-};
-
-
-internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, filter) {
-
- if (typeof filter === 'function') {
- obj = filter(prefix, obj);
- }
- else if (Utils.isBuffer(obj)) {
- obj = obj.toString();
- }
- else if (obj instanceof Date) {
- obj = obj.toISOString();
- }
- else if (obj === null) {
- if (strictNullHandling) {
- return Utils.encode(prefix);
- }
-
- obj = '';
- }
-
- if (typeof obj === 'string' ||
- typeof obj === 'number' ||
- typeof obj === 'boolean') {
-
- return [Utils.encode(prefix) + '=' + Utils.encode(obj)];
- }
-
- var values = [];
-
- if (typeof obj === 'undefined') {
- return values;
- }
-
- var objKeys = Array.isArray(filter) ? filter : Object.keys(obj);
- for (var i = 0, il = objKeys.length; i < il; ++i) {
- var key = objKeys[i];
-
- if (Array.isArray(obj)) {
- values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, filter));
- }
- else {
- values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, filter));
- }
- }
-
- return values;
-};
-
-
-module.exports = function (obj, options) {
-
- options = options || {};
- var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter;
- var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling;
- var objKeys;
- var filter;
- if (typeof options.filter === 'function') {
- filter = options.filter;
- obj = filter('', obj);
- }
- else if (Array.isArray(options.filter)) {
- objKeys = filter = options.filter;
- }
-
- var keys = [];
-
- if (typeof obj !== 'object' ||
- obj === null) {
-
- return '';
- }
-
- var arrayFormat;
- if (options.arrayFormat in internals.arrayPrefixGenerators) {
- arrayFormat = options.arrayFormat;
- }
- else if ('indices' in options) {
- arrayFormat = options.indices ? 'indices' : 'repeat';
- }
- else {
- arrayFormat = 'indices';
- }
-
- var generateArrayPrefix = internals.arrayPrefixGenerators[arrayFormat];
-
- if (!objKeys) {
- objKeys = Object.keys(obj);
- }
- for (var i = 0, il = objKeys.length; i < il; ++i) {
- var key = objKeys[i];
- keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, filter));
- }
-
- return keys.join(delimiter);
-};
diff --git a/scripts/node_modules/request/node_modules/qs/lib/utils.js b/scripts/node_modules/request/node_modules/qs/lib/utils.js
deleted file mode 100644
index 88f31473..00000000
--- a/scripts/node_modules/request/node_modules/qs/lib/utils.js
+++ /dev/null
@@ -1,190 +0,0 @@
-// Load modules
-
-
-// Declare internals
-
-var internals = {};
-internals.hexTable = new Array(256);
-for (var h = 0; h < 256; ++h) {
- internals.hexTable[h] = '%' + ((h < 16 ? '0' : '') + h.toString(16)).toUpperCase();
-}
-
-
-exports.arrayToObject = function (source, options) {
-
- var obj = options.plainObjects ? Object.create(null) : {};
- for (var i = 0, il = source.length; i < il; ++i) {
- if (typeof source[i] !== 'undefined') {
-
- obj[i] = source[i];
- }
- }
-
- return obj;
-};
-
-
-exports.merge = function (target, source, options) {
-
- if (!source) {
- return target;
- }
-
- if (typeof source !== 'object') {
- if (Array.isArray(target)) {
- target.push(source);
- }
- else if (typeof target === 'object') {
- target[source] = true;
- }
- else {
- target = [target, source];
- }
-
- return target;
- }
-
- if (typeof target !== 'object') {
- target = [target].concat(source);
- return target;
- }
-
- if (Array.isArray(target) &&
- !Array.isArray(source)) {
-
- target = exports.arrayToObject(target, options);
- }
-
- var keys = Object.keys(source);
- for (var k = 0, kl = keys.length; k < kl; ++k) {
- var key = keys[k];
- var value = source[key];
-
- if (!Object.prototype.hasOwnProperty.call(target, key)) {
- target[key] = value;
- }
- else {
- target[key] = exports.merge(target[key], value, options);
- }
- }
-
- return target;
-};
-
-
-exports.decode = function (str) {
-
- try {
- return decodeURIComponent(str.replace(/\+/g, ' '));
- } catch (e) {
- return str;
- }
-};
-
-exports.encode = function (str) {
-
- // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
- // It has been adapted here for stricter adherence to RFC 3986
- if (str.length === 0) {
- return str;
- }
-
- if (typeof str !== 'string') {
- str = '' + str;
- }
-
- var out = '';
- for (var i = 0, il = str.length; i < il; ++i) {
- var c = str.charCodeAt(i);
-
- if (c === 0x2D || // -
- c === 0x2E || // .
- c === 0x5F || // _
- c === 0x7E || // ~
- (c >= 0x30 && c <= 0x39) || // 0-9
- (c >= 0x41 && c <= 0x5A) || // a-z
- (c >= 0x61 && c <= 0x7A)) { // A-Z
-
- out += str[i];
- continue;
- }
-
- if (c < 0x80) {
- out += internals.hexTable[c];
- continue;
- }
-
- if (c < 0x800) {
- out += internals.hexTable[0xC0 | (c >> 6)] + internals.hexTable[0x80 | (c & 0x3F)];
- continue;
- }
-
- if (c < 0xD800 || c >= 0xE000) {
- out += internals.hexTable[0xE0 | (c >> 12)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)];
- continue;
- }
-
- ++i;
- c = 0x10000 + (((c & 0x3FF) << 10) | (str.charCodeAt(i) & 0x3FF));
- out += internals.hexTable[0xF0 | (c >> 18)] + internals.hexTable[0x80 | ((c >> 12) & 0x3F)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)];
- }
-
- return out;
-};
-
-exports.compact = function (obj, refs) {
-
- if (typeof obj !== 'object' ||
- obj === null) {
-
- return obj;
- }
-
- refs = refs || [];
- var lookup = refs.indexOf(obj);
- if (lookup !== -1) {
- return refs[lookup];
- }
-
- refs.push(obj);
-
- if (Array.isArray(obj)) {
- var compacted = [];
-
- for (var i = 0, il = obj.length; i < il; ++i) {
- if (typeof obj[i] !== 'undefined') {
- compacted.push(obj[i]);
- }
- }
-
- return compacted;
- }
-
- var keys = Object.keys(obj);
- for (i = 0, il = keys.length; i < il; ++i) {
- var key = keys[i];
- obj[key] = exports.compact(obj[key], refs);
- }
-
- return obj;
-};
-
-
-exports.isRegExp = function (obj) {
-
- return Object.prototype.toString.call(obj) === '[object RegExp]';
-};
-
-
-exports.isBuffer = function (obj) {
-
- if (obj === null ||
- typeof obj === 'undefined') {
-
- return false;
- }
-
- return !!(obj.constructor &&
- obj.constructor.isBuffer &&
- obj.constructor.isBuffer(obj));
-};
diff --git a/scripts/node_modules/request/node_modules/qs/package.json b/scripts/node_modules/request/node_modules/qs/package.json
deleted file mode 100644
index 390fbc6f..00000000
--- a/scripts/node_modules/request/node_modules/qs/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "name": "qs",
- "version": "4.0.0",
- "description": "A querystring parser that supports nesting and arrays, with a depth limit",
- "homepage": "https://github.com/hapijs/qs",
- "main": "lib/index.js",
- "dependencies": {},
- "devDependencies": {
- "browserify": "^10.2.1",
- "code": "1.x.x",
- "lab": "5.x.x"
- },
- "scripts": {
- "test": "lab -a code -t 100 -L",
- "test-cov-html": "lab -a code -r html -o coverage.html",
- "dist": "browserify --standalone Qs lib/index.js > dist/qs.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/hapijs/qs.git"
- },
- "keywords": [
- "querystring",
- "qs"
- ],
- "license": "BSD-3-Clause",
- "gitHead": "e573dd08eae6cce30d2202704691a102dfa3782a",
- "bugs": {
- "url": "https://github.com/hapijs/qs/issues"
- },
- "_id": "qs@4.0.0",
- "_shasum": "c31d9b74ec27df75e543a86c78728ed8d4623607",
- "_from": "qs@>=4.0.0 <4.1.0",
- "_npmVersion": "2.12.0",
- "_nodeVersion": "0.12.4",
- "_npmUser": {
- "name": "nlf",
- "email": "quitlahok@gmail.com"
- },
- "dist": {
- "shasum": "c31d9b74ec27df75e543a86c78728ed8d4623607",
- "tarball": "http://registry.npmjs.org/qs/-/qs-4.0.0.tgz"
- },
- "maintainers": [
- {
- "name": "nlf",
- "email": "quitlahok@gmail.com"
- },
- {
- "name": "hueniverse",
- "email": "eran@hueniverse.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz"
-}
diff --git a/scripts/node_modules/request/node_modules/qs/test/parse.js b/scripts/node_modules/request/node_modules/qs/test/parse.js
deleted file mode 100644
index a19d7645..00000000
--- a/scripts/node_modules/request/node_modules/qs/test/parse.js
+++ /dev/null
@@ -1,478 +0,0 @@
-/* eslint no-extend-native:0 */
-// Load modules
-
-var Code = require('code');
-var Lab = require('lab');
-var Qs = require('../');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var expect = Code.expect;
-var describe = lab.experiment;
-var it = lab.test;
-
-
-describe('parse()', function () {
-
- it('parses a simple string', function (done) {
-
- expect(Qs.parse('0=foo')).to.deep.equal({ '0': 'foo' });
- expect(Qs.parse('foo=c++')).to.deep.equal({ foo: 'c ' });
- expect(Qs.parse('a[>=]=23')).to.deep.equal({ a: { '>=': '23' } });
- expect(Qs.parse('a[<=>]==23')).to.deep.equal({ a: { '<=>': '=23' } });
- expect(Qs.parse('a[==]=23')).to.deep.equal({ a: { '==': '23' } });
- expect(Qs.parse('foo', { strictNullHandling: true })).to.deep.equal({ foo: null });
- expect(Qs.parse('foo' )).to.deep.equal({ foo: '' });
- expect(Qs.parse('foo=')).to.deep.equal({ foo: '' });
- expect(Qs.parse('foo=bar')).to.deep.equal({ foo: 'bar' });
- expect(Qs.parse(' foo = bar = baz ')).to.deep.equal({ ' foo ': ' bar = baz ' });
- expect(Qs.parse('foo=bar=baz')).to.deep.equal({ foo: 'bar=baz' });
- expect(Qs.parse('foo=bar&bar=baz')).to.deep.equal({ foo: 'bar', bar: 'baz' });
- expect(Qs.parse('foo2=bar2&baz2=')).to.deep.equal({ foo2: 'bar2', baz2: '' });
- expect(Qs.parse('foo=bar&baz', { strictNullHandling: true })).to.deep.equal({ foo: 'bar', baz: null });
- expect(Qs.parse('foo=bar&baz')).to.deep.equal({ foo: 'bar', baz: '' });
- expect(Qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World')).to.deep.equal({
- cht: 'p3',
- chd: 't:60,40',
- chs: '250x100',
- chl: 'Hello|World'
- });
- done();
- });
-
- it('allows disabling dot notation', function (done) {
-
- expect(Qs.parse('a.b=c')).to.deep.equal({ a: { b: 'c' } });
- expect(Qs.parse('a.b=c', { allowDots: false })).to.deep.equal({ 'a.b': 'c' });
- done();
- });
-
- it('parses a single nested string', function (done) {
-
- expect(Qs.parse('a[b]=c')).to.deep.equal({ a: { b: 'c' } });
- done();
- });
-
- it('parses a double nested string', function (done) {
-
- expect(Qs.parse('a[b][c]=d')).to.deep.equal({ a: { b: { c: 'd' } } });
- done();
- });
-
- it('defaults to a depth of 5', function (done) {
-
- expect(Qs.parse('a[b][c][d][e][f][g][h]=i')).to.deep.equal({ a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } });
- done();
- });
-
- it('only parses one level when depth = 1', function (done) {
-
- expect(Qs.parse('a[b][c]=d', { depth: 1 })).to.deep.equal({ a: { b: { '[c]': 'd' } } });
- expect(Qs.parse('a[b][c][d]=e', { depth: 1 })).to.deep.equal({ a: { b: { '[c][d]': 'e' } } });
- done();
- });
-
- it('parses a simple array', function (done) {
-
- expect(Qs.parse('a=b&a=c')).to.deep.equal({ a: ['b', 'c'] });
- done();
- });
-
- it('parses an explicit array', function (done) {
-
- expect(Qs.parse('a[]=b')).to.deep.equal({ a: ['b'] });
- expect(Qs.parse('a[]=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] });
- expect(Qs.parse('a[]=b&a[]=c&a[]=d')).to.deep.equal({ a: ['b', 'c', 'd'] });
- done();
- });
-
- it('parses a mix of simple and explicit arrays', function (done) {
-
- expect(Qs.parse('a=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] });
- expect(Qs.parse('a[]=b&a=c')).to.deep.equal({ a: ['b', 'c'] });
- expect(Qs.parse('a[0]=b&a=c')).to.deep.equal({ a: ['b', 'c'] });
- expect(Qs.parse('a=b&a[0]=c')).to.deep.equal({ a: ['b', 'c'] });
- expect(Qs.parse('a[1]=b&a=c')).to.deep.equal({ a: ['b', 'c'] });
- expect(Qs.parse('a=b&a[1]=c')).to.deep.equal({ a: ['b', 'c'] });
- done();
- });
-
- it('parses a nested array', function (done) {
-
- expect(Qs.parse('a[b][]=c&a[b][]=d')).to.deep.equal({ a: { b: ['c', 'd'] } });
- expect(Qs.parse('a[>=]=25')).to.deep.equal({ a: { '>=': '25' } });
- done();
- });
-
- it('allows to specify array indices', function (done) {
-
- expect(Qs.parse('a[1]=c&a[0]=b&a[2]=d')).to.deep.equal({ a: ['b', 'c', 'd'] });
- expect(Qs.parse('a[1]=c&a[0]=b')).to.deep.equal({ a: ['b', 'c'] });
- expect(Qs.parse('a[1]=c')).to.deep.equal({ a: ['c'] });
- done();
- });
-
- it('limits specific array indices to 20', function (done) {
-
- expect(Qs.parse('a[20]=a')).to.deep.equal({ a: ['a'] });
- expect(Qs.parse('a[21]=a')).to.deep.equal({ a: { '21': 'a' } });
- done();
- });
-
- it('supports keys that begin with a number', function (done) {
-
- expect(Qs.parse('a[12b]=c')).to.deep.equal({ a: { '12b': 'c' } });
- done();
- });
-
- it('supports encoded = signs', function (done) {
-
- expect(Qs.parse('he%3Dllo=th%3Dere')).to.deep.equal({ 'he=llo': 'th=ere' });
- done();
- });
-
- it('is ok with url encoded strings', function (done) {
-
- expect(Qs.parse('a[b%20c]=d')).to.deep.equal({ a: { 'b c': 'd' } });
- expect(Qs.parse('a[b]=c%20d')).to.deep.equal({ a: { b: 'c d' } });
- done();
- });
-
- it('allows brackets in the value', function (done) {
-
- expect(Qs.parse('pets=["tobi"]')).to.deep.equal({ pets: '["tobi"]' });
- expect(Qs.parse('operators=[">=", "<="]')).to.deep.equal({ operators: '[">=", "<="]' });
- done();
- });
-
- it('allows empty values', function (done) {
-
- expect(Qs.parse('')).to.deep.equal({});
- expect(Qs.parse(null)).to.deep.equal({});
- expect(Qs.parse(undefined)).to.deep.equal({});
- done();
- });
-
- it('transforms arrays to objects', function (done) {
-
- expect(Qs.parse('foo[0]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } });
- expect(Qs.parse('foo[bad]=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } });
- expect(Qs.parse('foo[bad]=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } });
- expect(Qs.parse('foo[]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } });
- expect(Qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } });
- expect(Qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb')).to.deep.equal({ foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
- expect(Qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c')).to.deep.equal({ a: { '0': 'b', t: 'u', c: true } });
- expect(Qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y')).to.deep.equal({ a: { '0': 'b', '1': 'c', x: 'y' } });
- done();
- });
-
- it('transforms arrays to objects (dot notation)', function (done) {
-
- expect(Qs.parse('foo[0].baz=bar&fool.bad=baz')).to.deep.equal({ foo: [{ baz: 'bar' }], fool: { bad: 'baz' } });
- expect(Qs.parse('foo[0].baz=bar&fool.bad.boo=baz')).to.deep.equal({ foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } });
- expect(Qs.parse('foo[0][0].baz=bar&fool.bad=baz')).to.deep.equal({ foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } });
- expect(Qs.parse('foo[0].baz[0]=15&foo[0].bar=2')).to.deep.equal({ foo: [{ baz: ['15'], bar: '2' }] });
- expect(Qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2')).to.deep.equal({ foo: [{ baz: ['15', '16'], bar: '2' }] });
- expect(Qs.parse('foo.bad=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } });
- expect(Qs.parse('foo.bad=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } });
- expect(Qs.parse('foo[]=bar&foo.bad=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } });
- expect(Qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } });
- expect(Qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb')).to.deep.equal({ foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] });
- done();
- });
-
- it('can add keys to objects', function (done) {
-
- expect(Qs.parse('a[b]=c&a=d')).to.deep.equal({ a: { b: 'c', d: true } });
- done();
- });
-
- it('correctly prunes undefined values when converting an array to an object', function (done) {
-
- expect(Qs.parse('a[2]=b&a[99999999]=c')).to.deep.equal({ a: { '2': 'b', '99999999': 'c' } });
- done();
- });
-
- it('supports malformed uri characters', function (done) {
-
- expect(Qs.parse('{%:%}', { strictNullHandling: true })).to.deep.equal({ '{%:%}': null });
- expect(Qs.parse('{%:%}=')).to.deep.equal({ '{%:%}': '' });
- expect(Qs.parse('foo=%:%}')).to.deep.equal({ foo: '%:%}' });
- done();
- });
-
- it('doesn\'t produce empty keys', function (done) {
-
- expect(Qs.parse('_r=1&')).to.deep.equal({ '_r': '1' });
- done();
- });
-
- it('cannot access Object prototype', function (done) {
-
- Qs.parse('constructor[prototype][bad]=bad');
- Qs.parse('bad[constructor][prototype][bad]=bad');
- expect(typeof Object.prototype.bad).to.equal('undefined');
- done();
- });
-
- it('parses arrays of objects', function (done) {
-
- expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] });
- expect(Qs.parse('a[0][b]=c')).to.deep.equal({ a: [{ b: 'c' }] });
- done();
- });
-
- it('allows for empty strings in arrays', function (done) {
-
- expect(Qs.parse('a[]=b&a[]=&a[]=c')).to.deep.equal({ a: ['b', '', 'c'] });
- expect(Qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true })).to.deep.equal({ a: ['b', null, 'c', ''] });
- expect(Qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true })).to.deep.equal({ a: ['b', '', 'c', null] });
- expect(Qs.parse('a[]=&a[]=b&a[]=c')).to.deep.equal({ a: ['', 'b', 'c'] });
- done();
- });
-
- it('compacts sparse arrays', function (done) {
-
- expect(Qs.parse('a[10]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] });
- done();
- });
-
- it('parses semi-parsed strings', function (done) {
-
- expect(Qs.parse({ 'a[b]': 'c' })).to.deep.equal({ a: { b: 'c' } });
- expect(Qs.parse({ 'a[b]': 'c', 'a[d]': 'e' })).to.deep.equal({ a: { b: 'c', d: 'e' } });
- done();
- });
-
- it('parses buffers correctly', function (done) {
-
- var b = new Buffer('test');
- expect(Qs.parse({ a: b })).to.deep.equal({ a: b });
- done();
- });
-
- it('continues parsing when no parent is found', function (done) {
-
- expect(Qs.parse('[]=&a=b')).to.deep.equal({ '0': '', a: 'b' });
- expect(Qs.parse('[]&a=b', { strictNullHandling: true })).to.deep.equal({ '0': null, a: 'b' });
- expect(Qs.parse('[foo]=bar')).to.deep.equal({ foo: 'bar' });
- done();
- });
-
- it('does not error when parsing a very long array', function (done) {
-
- var str = 'a[]=a';
- while (Buffer.byteLength(str) < 128 * 1024) {
- str += '&' + str;
- }
-
- expect(function () {
-
- Qs.parse(str);
- }).to.not.throw();
-
- done();
- });
-
- it('should not throw when a native prototype has an enumerable property', { parallel: false }, function (done) {
-
- Object.prototype.crash = '';
- Array.prototype.crash = '';
- expect(Qs.parse.bind(null, 'a=b')).to.not.throw();
- expect(Qs.parse('a=b')).to.deep.equal({ a: 'b' });
- expect(Qs.parse.bind(null, 'a[][b]=c')).to.not.throw();
- expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] });
- delete Object.prototype.crash;
- delete Array.prototype.crash;
- done();
- });
-
- it('parses a string with an alternative string delimiter', function (done) {
-
- expect(Qs.parse('a=b;c=d', { delimiter: ';' })).to.deep.equal({ a: 'b', c: 'd' });
- done();
- });
-
- it('parses a string with an alternative RegExp delimiter', function (done) {
-
- expect(Qs.parse('a=b; c=d', { delimiter: /[;,] */ })).to.deep.equal({ a: 'b', c: 'd' });
- done();
- });
-
- it('does not use non-splittable objects as delimiters', function (done) {
-
- expect(Qs.parse('a=b&c=d', { delimiter: true })).to.deep.equal({ a: 'b', c: 'd' });
- done();
- });
-
- it('allows overriding parameter limit', function (done) {
-
- expect(Qs.parse('a=b&c=d', { parameterLimit: 1 })).to.deep.equal({ a: 'b' });
- done();
- });
-
- it('allows setting the parameter limit to Infinity', function (done) {
-
- expect(Qs.parse('a=b&c=d', { parameterLimit: Infinity })).to.deep.equal({ a: 'b', c: 'd' });
- done();
- });
-
- it('allows overriding array limit', function (done) {
-
- expect(Qs.parse('a[0]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '0': 'b' } });
- expect(Qs.parse('a[-1]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '-1': 'b' } });
- expect(Qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 })).to.deep.equal({ a: { '0': 'b', '1': 'c' } });
- done();
- });
-
- it('allows disabling array parsing', function (done) {
-
- expect(Qs.parse('a[0]=b&a[1]=c', { parseArrays: false })).to.deep.equal({ a: { '0': 'b', '1': 'c' } });
- done();
- });
-
- it('parses an object', function (done) {
-
- var input = {
- 'user[name]': { 'pop[bob]': 3 },
- 'user[email]': null
- };
-
- var expected = {
- 'user': {
- 'name': { 'pop[bob]': 3 },
- 'email': null
- }
- };
-
- var result = Qs.parse(input);
-
- expect(result).to.deep.equal(expected);
- done();
- });
-
- it('parses an object in dot notation', function (done) {
-
- var input = {
- 'user.name': { 'pop[bob]': 3 },
- 'user.email.': null
- };
-
- var expected = {
- 'user': {
- 'name': { 'pop[bob]': 3 },
- 'email': null
- }
- };
-
- var result = Qs.parse(input);
-
- expect(result).to.deep.equal(expected);
- done();
- });
-
- it('parses an object and not child values', function (done) {
-
- var input = {
- 'user[name]': { 'pop[bob]': { 'test': 3 } },
- 'user[email]': null
- };
-
- var expected = {
- 'user': {
- 'name': { 'pop[bob]': { 'test': 3 } },
- 'email': null
- }
- };
-
- var result = Qs.parse(input);
-
- expect(result).to.deep.equal(expected);
- done();
- });
-
- it('does not blow up when Buffer global is missing', function (done) {
-
- var tempBuffer = global.Buffer;
- delete global.Buffer;
- var result = Qs.parse('a=b&c=d');
- global.Buffer = tempBuffer;
- expect(result).to.deep.equal({ a: 'b', c: 'd' });
- done();
- });
-
- it('does not crash when parsing circular references', function (done) {
-
- var a = {};
- a.b = a;
-
- var parsed;
-
- expect(function () {
-
- parsed = Qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a });
- }).to.not.throw();
-
- expect(parsed).to.contain('foo');
- expect(parsed.foo).to.contain('bar', 'baz');
- expect(parsed.foo.bar).to.equal('baz');
- expect(parsed.foo.baz).to.deep.equal(a);
- done();
- });
-
- it('parses plain objects correctly', function (done) {
-
- var a = Object.create(null);
- a.b = 'c';
-
- expect(Qs.parse(a)).to.deep.equal({ b: 'c' });
- var result = Qs.parse({ a: a });
- expect(result).to.contain('a');
- expect(result.a).to.deep.equal(a);
- done();
- });
-
- it('parses dates correctly', function (done) {
-
- var now = new Date();
- expect(Qs.parse({ a: now })).to.deep.equal({ a: now });
- done();
- });
-
- it('parses regular expressions correctly', function (done) {
-
- var re = /^test$/;
- expect(Qs.parse({ a: re })).to.deep.equal({ a: re });
- done();
- });
-
- it('can allow overwriting prototype properties', function (done) {
-
- expect(Qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true })).to.deep.equal({ a: { hasOwnProperty: 'b' } }, { prototype: false });
- expect(Qs.parse('hasOwnProperty=b', { allowPrototypes: true })).to.deep.equal({ hasOwnProperty: 'b' }, { prototype: false });
- done();
- });
-
- it('can return plain objects', function (done) {
-
- var expected = Object.create(null);
- expected.a = Object.create(null);
- expected.a.b = 'c';
- expected.a.hasOwnProperty = 'd';
- expect(Qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true })).to.deep.equal(expected);
- expect(Qs.parse(null, { plainObjects: true })).to.deep.equal(Object.create(null));
- var expectedArray = Object.create(null);
- expectedArray.a = Object.create(null);
- expectedArray.a['0'] = 'b';
- expectedArray.a.c = 'd';
- expect(Qs.parse('a[]=b&a[c]=d', { plainObjects: true })).to.deep.equal(expectedArray);
- done();
- });
-});
diff --git a/scripts/node_modules/request/node_modules/qs/test/stringify.js b/scripts/node_modules/request/node_modules/qs/test/stringify.js
deleted file mode 100644
index 48b7803f..00000000
--- a/scripts/node_modules/request/node_modules/qs/test/stringify.js
+++ /dev/null
@@ -1,259 +0,0 @@
-/* eslint no-extend-native:0 */
-// Load modules
-
-var Code = require('code');
-var Lab = require('lab');
-var Qs = require('../');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var expect = Code.expect;
-var describe = lab.experiment;
-var it = lab.test;
-
-
-describe('stringify()', function () {
-
- it('stringifies a querystring object', function (done) {
-
- expect(Qs.stringify({ a: 'b' })).to.equal('a=b');
- expect(Qs.stringify({ a: 1 })).to.equal('a=1');
- expect(Qs.stringify({ a: 1, b: 2 })).to.equal('a=1&b=2');
- expect(Qs.stringify({ a: 'A_Z' })).to.equal('a=A_Z');
- expect(Qs.stringify({ a: '€' })).to.equal('a=%E2%82%AC');
- expect(Qs.stringify({ a: '' })).to.equal('a=%EE%80%80');
- expect(Qs.stringify({ a: 'א' })).to.equal('a=%D7%90');
- expect(Qs.stringify({ a: '𐐷' })).to.equal('a=%F0%90%90%B7');
- done();
- });
-
- it('stringifies a nested object', function (done) {
-
- expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c');
- expect(Qs.stringify({ a: { b: { c: { d: 'e' } } } })).to.equal('a%5Bb%5D%5Bc%5D%5Bd%5D=e');
- done();
- });
-
- it('stringifies an array value', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c', 'd'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d');
- done();
- });
-
- it('omits array indices when asked', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false })).to.equal('a=b&a=c&a=d');
- done();
- });
-
- it('stringifies a nested array value', function (done) {
-
- expect(Qs.stringify({ a: { b: ['c', 'd'] } })).to.equal('a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d');
- done();
- });
-
- it('stringifies an object inside an array', function (done) {
-
- expect(Qs.stringify({ a: [{ b: 'c' }] })).to.equal('a%5B0%5D%5Bb%5D=c');
- expect(Qs.stringify({ a: [{ b: { c: [1] } }] })).to.equal('a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1');
- done();
- });
-
- it('does not omit object keys when indices = false', function (done) {
-
- expect(Qs.stringify({ a: [{ b: 'c' }] }, { indices: false })).to.equal('a%5Bb%5D=c');
- done();
- });
-
- it('uses indices notation for arrays when indices=true', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] }, { indices: true })).to.equal('a%5B0%5D=b&a%5B1%5D=c');
- done();
- });
-
- it('uses indices notation for arrays when no arrayFormat is specified', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c');
- done();
- });
-
- it('uses indices notation for arrays when no arrayFormat=indices', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })).to.equal('a%5B0%5D=b&a%5B1%5D=c');
- done();
- });
-
- it('uses repeat notation for arrays when no arrayFormat=repeat', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })).to.equal('a=b&a=c');
- done();
- });
-
- it('uses brackets notation for arrays when no arrayFormat=brackets', function (done) {
-
- expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })).to.equal('a%5B%5D=b&a%5B%5D=c');
- done();
- });
-
- it('stringifies a complicated object', function (done) {
-
- expect(Qs.stringify({ a: { b: 'c', d: 'e' } })).to.equal('a%5Bb%5D=c&a%5Bd%5D=e');
- done();
- });
-
- it('stringifies an empty value', function (done) {
-
- expect(Qs.stringify({ a: '' })).to.equal('a=');
- expect(Qs.stringify({ a: null }, { strictNullHandling: true })).to.equal('a');
-
- expect(Qs.stringify({ a: '', b: '' })).to.equal('a=&b=');
- expect(Qs.stringify({ a: null, b: '' }, { strictNullHandling: true })).to.equal('a&b=');
-
- expect(Qs.stringify({ a: { b: '' } })).to.equal('a%5Bb%5D=');
- expect(Qs.stringify({ a: { b: null } }, { strictNullHandling: true })).to.equal('a%5Bb%5D');
- expect(Qs.stringify({ a: { b: null } }, { strictNullHandling: false })).to.equal('a%5Bb%5D=');
-
- done();
- });
-
- it('stringifies an empty object', function (done) {
-
- var obj = Object.create(null);
- obj.a = 'b';
- expect(Qs.stringify(obj)).to.equal('a=b');
- done();
- });
-
- it('returns an empty string for invalid input', function (done) {
-
- expect(Qs.stringify(undefined)).to.equal('');
- expect(Qs.stringify(false)).to.equal('');
- expect(Qs.stringify(null)).to.equal('');
- expect(Qs.stringify('')).to.equal('');
- done();
- });
-
- it('stringifies an object with an empty object as a child', function (done) {
-
- var obj = {
- a: Object.create(null)
- };
-
- obj.a.b = 'c';
- expect(Qs.stringify(obj)).to.equal('a%5Bb%5D=c');
- done();
- });
-
- it('drops keys with a value of undefined', function (done) {
-
- expect(Qs.stringify({ a: undefined })).to.equal('');
-
- expect(Qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true })).to.equal('a%5Bc%5D');
- expect(Qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false })).to.equal('a%5Bc%5D=');
- expect(Qs.stringify({ a: { b: undefined, c: '' } })).to.equal('a%5Bc%5D=');
- done();
- });
-
- it('url encodes values', function (done) {
-
- expect(Qs.stringify({ a: 'b c' })).to.equal('a=b%20c');
- done();
- });
-
- it('stringifies a date', function (done) {
-
- var now = new Date();
- var str = 'a=' + encodeURIComponent(now.toISOString());
- expect(Qs.stringify({ a: now })).to.equal(str);
- done();
- });
-
- it('stringifies the weird object from qs', function (done) {
-
- expect(Qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' })).to.equal('my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F');
- done();
- });
-
- it('skips properties that are part of the object prototype', function (done) {
-
- Object.prototype.crash = 'test';
- expect(Qs.stringify({ a: 'b' })).to.equal('a=b');
- expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c');
- delete Object.prototype.crash;
- done();
- });
-
- it('stringifies boolean values', function (done) {
-
- expect(Qs.stringify({ a: true })).to.equal('a=true');
- expect(Qs.stringify({ a: { b: true } })).to.equal('a%5Bb%5D=true');
- expect(Qs.stringify({ b: false })).to.equal('b=false');
- expect(Qs.stringify({ b: { c: false } })).to.equal('b%5Bc%5D=false');
- done();
- });
-
- it('stringifies buffer values', function (done) {
-
- expect(Qs.stringify({ a: new Buffer('test') })).to.equal('a=test');
- expect(Qs.stringify({ a: { b: new Buffer('test') } })).to.equal('a%5Bb%5D=test');
- done();
- });
-
- it('stringifies an object using an alternative delimiter', function (done) {
-
- expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d');
- done();
- });
-
- it('doesn\'t blow up when Buffer global is missing', function (done) {
-
- var tempBuffer = global.Buffer;
- delete global.Buffer;
- expect(Qs.stringify({ a: 'b', c: 'd' })).to.equal('a=b&c=d');
- global.Buffer = tempBuffer;
- done();
- });
-
- it('selects properties when filter=array', function (done) {
-
- expect(Qs.stringify({ a: 'b' }, { filter: ['a'] })).to.equal('a=b');
- expect(Qs.stringify({ a: 1 }, { filter: [] })).to.equal('');
- expect(Qs.stringify({ a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, { filter: ['a', 'b', 0, 2] })).to.equal('a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3');
- done();
-
- });
-
- it('supports custom representations when filter=function', function (done) {
-
- var calls = 0;
- var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } };
- var filterFunc = function (prefix, value) {
-
- calls++;
- if (calls === 1) {
- expect(prefix).to.be.empty();
- expect(value).to.equal(obj);
- }
- else if (prefix === 'c') {
- return;
- }
- else if (value instanceof Date) {
- expect(prefix).to.equal('e[f]');
- return value.getTime();
- }
- return value;
- };
-
- expect(Qs.stringify(obj, { filter: filterFunc })).to.equal('a=b&e%5Bf%5D=1257894000000');
- expect(calls).to.equal(5);
- done();
-
- });
-});
diff --git a/scripts/node_modules/request/node_modules/qs/test/utils.js b/scripts/node_modules/request/node_modules/qs/test/utils.js
deleted file mode 100644
index a9a6b520..00000000
--- a/scripts/node_modules/request/node_modules/qs/test/utils.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Load modules
-
-var Code = require('code');
-var Lab = require('lab');
-var Utils = require('../lib/utils');
-
-
-// Declare internals
-
-var internals = {};
-
-
-// Test shortcuts
-
-var lab = exports.lab = Lab.script();
-var expect = Code.expect;
-var describe = lab.experiment;
-var it = lab.test;
-
-
-describe('merge()', function () {
-
- it('can merge two objects with the same key', function (done) {
-
- expect(Utils.merge({ a: 'b' }, { a: 'c' })).to.deep.equal({ a: ['b', 'c'] });
- done();
- });
-});
diff --git a/scripts/node_modules/request/node_modules/stringstream/.npmignore b/scripts/node_modules/request/node_modules/stringstream/.npmignore
deleted file mode 100644
index 7dccd970..00000000
--- a/scripts/node_modules/request/node_modules/stringstream/.npmignore
+++ /dev/null
@@ -1,15 +0,0 @@
-lib-cov
-*.seed
-*.log
-*.csv
-*.dat
-*.out
-*.pid
-*.gz
-
-pids
-logs
-results
-
-node_modules
-npm-debug.log
\ No newline at end of file
diff --git a/scripts/node_modules/request/node_modules/stringstream/.travis.yml b/scripts/node_modules/request/node_modules/stringstream/.travis.yml
deleted file mode 100644
index f1d0f13c..00000000
--- a/scripts/node_modules/request/node_modules/stringstream/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - 0.4
- - 0.6
diff --git a/scripts/node_modules/request/node_modules/stringstream/LICENSE.txt b/scripts/node_modules/request/node_modules/stringstream/LICENSE.txt
deleted file mode 100644
index eac18815..00000000
--- a/scripts/node_modules/request/node_modules/stringstream/LICENSE.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Copyright 2012 Michael Hart (michael.hart.au@gmail.com)
-
-This project is free software released under the MIT license:
-http://www.opensource.org/licenses/mit-license.php
diff --git a/scripts/node_modules/request/node_modules/stringstream/README.md b/scripts/node_modules/request/node_modules/stringstream/README.md
deleted file mode 100644
index 32fc9825..00000000
--- a/scripts/node_modules/request/node_modules/stringstream/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Decode streams into strings The Right Way(tm)
-
-```javascript
-var fs = require('fs')
-var zlib = require('zlib')
-var strs = require('stringstream')
-
-var utf8Stream = fs.createReadStream('massiveLogFile.gz')
- .pipe(zlib.createGunzip())
- .pipe(strs('utf8'))
-```
-
-No need to deal with `setEncoding()` weirdness, just compose streams
-like they were supposed to be!
-
-Handles input and output encoding:
-
-```javascript
-// Stream from utf8 to hex to base64... Why not, ay.
-var hex64Stream = fs.createReadStream('myFile')
- .pipe(strs('utf8', 'hex'))
- .pipe(strs('hex', 'base64'))
-```
-
-Also deals with `base64` output correctly by aligning each emitted data
-chunk so that there are no dangling `=` characters:
-
-```javascript
-var stream = fs.createReadStream('myFile').pipe(strs('base64'))
-
-var base64Str = ''
-
-stream.on('data', function(data) { base64Str += data })
-stream.on('end', function() {
- console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding()
- console.log('Original file is: ' + new Buffer(base64Str, 'base64'))
-})
-```
diff --git a/scripts/node_modules/request/node_modules/stringstream/example.js b/scripts/node_modules/request/node_modules/stringstream/example.js
deleted file mode 100644
index f82b85ed..00000000
--- a/scripts/node_modules/request/node_modules/stringstream/example.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var fs = require('fs')
-var zlib = require('zlib')
-var strs = require('stringstream')
-
-var utf8Stream = fs.createReadStream('massiveLogFile.gz')
- .pipe(zlib.createGunzip())
- .pipe(strs('utf8'))
-
-utf8Stream.pipe(process.stdout)
-
-// Stream from utf8 to hex to base64... Why not, ay.
-var hex64Stream = fs.createReadStream('myFile')
- .pipe(strs('utf8', 'hex'))
- .pipe(strs('hex', 'base64'))
-
-hex64Stream.pipe(process.stdout)
-
-// Deals with base64 correctly by aligning chunks
-var stream = fs.createReadStream('myFile').pipe(strs('base64'))
-
-var base64Str = ''
-
-stream.on('data', function(data) { base64Str += data })
-stream.on('end', function() {
- console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding()
- console.log('Original file is: ' + new Buffer(base64Str, 'base64'))
-})
diff --git a/scripts/node_modules/request/node_modules/stringstream/package.json b/scripts/node_modules/request/node_modules/stringstream/package.json
deleted file mode 100644
index 7069ff8a..00000000
--- a/scripts/node_modules/request/node_modules/stringstream/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "stringstream",
- "version": "0.0.4",
- "description": "Encode and decode streams into string streams",
- "author": {
- "name": "Michael Hart",
- "email": "michael.hart.au@gmail.com",
- "url": "http://github.com/mhart"
- },
- "main": "stringstream.js",
- "keywords": [
- "string",
- "stream",
- "base64",
- "gzip"
- ],
- "repository": {
- "type": "git",
- "url": "https://github.com/mhart/StringStream.git"
- },
- "license": "MIT",
- "readme": "# Decode streams into strings The Right Way(tm)\n\n```javascript\nvar fs = require('fs')\nvar zlib = require('zlib')\nvar strs = require('stringstream')\n\nvar utf8Stream = fs.createReadStream('massiveLogFile.gz')\n .pipe(zlib.createGunzip())\n .pipe(strs('utf8'))\n```\n\nNo need to deal with `setEncoding()` weirdness, just compose streams\nlike they were supposed to be!\n\nHandles input and output encoding:\n\n```javascript\n// Stream from utf8 to hex to base64... Why not, ay.\nvar hex64Stream = fs.createReadStream('myFile')\n .pipe(strs('utf8', 'hex'))\n .pipe(strs('hex', 'base64'))\n```\n\nAlso deals with `base64` output correctly by aligning each emitted data\nchunk so that there are no dangling `=` characters:\n\n```javascript\nvar stream = fs.createReadStream('myFile').pipe(strs('base64'))\n\nvar base64Str = ''\n\nstream.on('data', function(data) { base64Str += data })\nstream.on('end', function() {\n console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding()\n console.log('Original file is: ' + new Buffer(base64Str, 'base64'))\n})\n```\n",
- "readmeFilename": "README.md",
- "_id": "stringstream@0.0.4",
- "dist": {
- "shasum": "0f0e3423f942960b5692ac324a57dd093bc41a92",
- "tarball": "http://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz"
- },
- "_npmVersion": "1.2.0",
- "_npmUser": {
- "name": "hichaelmart",
- "email": "michael.hart.au@gmail.com"
- },
- "maintainers": [
- {
- "name": "hichaelmart",
- "email": "michael.hart.au@gmail.com"
- }
- ],
- "directories": {},
- "_shasum": "0f0e3423f942960b5692ac324a57dd093bc41a92",
- "_resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz",
- "_from": "stringstream@>=0.0.4 <0.1.0",
- "bugs": {
- "url": "https://github.com/mhart/StringStream/issues"
- },
- "homepage": "https://github.com/mhart/StringStream"
-}
diff --git a/scripts/node_modules/request/node_modules/stringstream/stringstream.js b/scripts/node_modules/request/node_modules/stringstream/stringstream.js
deleted file mode 100644
index 4ece1275..00000000
--- a/scripts/node_modules/request/node_modules/stringstream/stringstream.js
+++ /dev/null
@@ -1,102 +0,0 @@
-var util = require('util')
-var Stream = require('stream')
-var StringDecoder = require('string_decoder').StringDecoder
-
-module.exports = StringStream
-module.exports.AlignedStringDecoder = AlignedStringDecoder
-
-function StringStream(from, to) {
- if (!(this instanceof StringStream)) return new StringStream(from, to)
-
- Stream.call(this)
-
- if (from == null) from = 'utf8'
-
- this.readable = this.writable = true
- this.paused = false
- this.toEncoding = (to == null ? from : to)
- this.fromEncoding = (to == null ? '' : from)
- this.decoder = new AlignedStringDecoder(this.toEncoding)
-}
-util.inherits(StringStream, Stream)
-
-StringStream.prototype.write = function(data) {
- if (!this.writable) {
- var err = new Error('stream not writable')
- err.code = 'EPIPE'
- this.emit('error', err)
- return false
- }
- if (this.fromEncoding) {
- if (Buffer.isBuffer(data)) data = data.toString()
- data = new Buffer(data, this.fromEncoding)
- }
- var string = this.decoder.write(data)
- if (string.length) this.emit('data', string)
- return !this.paused
-}
-
-StringStream.prototype.flush = function() {
- if (this.decoder.flush) {
- var string = this.decoder.flush()
- if (string.length) this.emit('data', string)
- }
-}
-
-StringStream.prototype.end = function() {
- if (!this.writable && !this.readable) return
- this.flush()
- this.emit('end')
- this.writable = this.readable = false
- this.destroy()
-}
-
-StringStream.prototype.destroy = function() {
- this.decoder = null
- this.writable = this.readable = false
- this.emit('close')
-}
-
-StringStream.prototype.pause = function() {
- this.paused = true
-}
-
-StringStream.prototype.resume = function () {
- if (this.paused) this.emit('drain')
- this.paused = false
-}
-
-function AlignedStringDecoder(encoding) {
- StringDecoder.call(this, encoding)
-
- switch (this.encoding) {
- case 'base64':
- this.write = alignedWrite
- this.alignedBuffer = new Buffer(3)
- this.alignedBytes = 0
- break
- }
-}
-util.inherits(AlignedStringDecoder, StringDecoder)
-
-AlignedStringDecoder.prototype.flush = function() {
- if (!this.alignedBuffer || !this.alignedBytes) return ''
- var leftover = this.alignedBuffer.toString(this.encoding, 0, this.alignedBytes)
- this.alignedBytes = 0
- return leftover
-}
-
-function alignedWrite(buffer) {
- var rem = (this.alignedBytes + buffer.length) % this.alignedBuffer.length
- if (!rem && !this.alignedBytes) return buffer.toString(this.encoding)
-
- var returnBuffer = new Buffer(this.alignedBytes + buffer.length - rem)
-
- this.alignedBuffer.copy(returnBuffer, 0, 0, this.alignedBytes)
- buffer.copy(returnBuffer, this.alignedBytes, 0, buffer.length - rem)
-
- buffer.copy(this.alignedBuffer, 0, buffer.length - rem, buffer.length)
- this.alignedBytes = rem
-
- return returnBuffer.toString(this.encoding)
-}
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/.editorconfig b/scripts/node_modules/request/node_modules/tough-cookie/.editorconfig
deleted file mode 100644
index e09b844f..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/.editorconfig
+++ /dev/null
@@ -1,12 +0,0 @@
-# This file is for unifying the coding style for different editors and IDEs
-# editorconfig.org
-
-root = true
-
-[*]
-end_of_line = lf
-charset = utf-8
-insert_final_newline = true
-trim_trailing_whitespace = true
-indent_style = space
-indent_size = 2
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/.jshintrc b/scripts/node_modules/request/node_modules/tough-cookie/.jshintrc
deleted file mode 100644
index fb11913a..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/.jshintrc
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "passfail" : false,
- "maxerr" : 100,
-
- "browser" : false,
- "node" : true,
- "rhino" : false,
- "couch" : false,
- "wsh" : false,
-
- "jquery" : false,
- "prototypejs" : false,
- "mootools" : false,
- "dojo" : false,
-
- "debug" : false,
- "devel" : false,
-
- "esnext" : true,
- "strict" : true,
- "globalstrict" : true,
-
- "asi" : false,
- "laxbreak" : false,
- "bitwise" : true,
- "boss" : false,
- "curly" : true,
- "eqeqeq" : false,
- "eqnull" : true,
- "evil" : false,
- "expr" : false,
- "forin" : false,
- "immed" : true,
- "lastsemic" : true,
- "latedef" : false,
- "loopfunc" : false,
- "noarg" : true,
- "regexp" : false,
- "regexdash" : false,
- "scripturl" : false,
- "shadow" : false,
- "supernew" : false,
- "undef" : true,
- "unused" : true,
-
- "newcap" : true,
- "noempty" : true,
- "nonew" : true,
- "nomen" : false,
- "onevar" : false,
- "onecase" : true,
- "plusplus" : false,
- "proto" : false,
- "sub" : true,
- "trailing" : true,
- "white" : false,
-
- "predef": [
- "describe",
- "it",
- "before",
- "beforeEach",
- "after",
- "afterEach",
- "expect",
- "setTimeout",
- "clearTimeout"
- ],
- "maxlen": 0
-}
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/.npmignore b/scripts/node_modules/request/node_modules/tough-cookie/.npmignore
deleted file mode 100644
index 5a8d2d85..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-.idea
-node_modules/
-.*.sw[nmop]
-npm-debug.log
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/.travis.yml b/scripts/node_modules/request/node_modules/tough-cookie/.travis.yml
deleted file mode 100644
index 02059d0d..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/.travis.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-language: node_js
-node_js:
-- "0.10"
-- "0.12"
-- iojs
-matrix:
- fast_finish: true
- allow_failures:
- - node_js: 0.11
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/LICENSE b/scripts/node_modules/request/node_modules/tough-cookie/LICENSE
deleted file mode 100644
index 84e0cad1..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/LICENSE
+++ /dev/null
@@ -1,74 +0,0 @@
-Copyright (c) 2015, Salesforce.com, Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
-3. Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-===
-
-The following exceptions apply:
-
-===
-
-`pubSufTest()` of generate-pubsuffix.js is in the public domain.
-
- // Any copyright is dedicated to the Public Domain.
- // http://creativecommons.org/publicdomain/zero/1.0/
-
-===
-
-`public-suffix.txt` was obtained from
-
-via .
-
-That file contains the usual Mozilla triple-license, for which this project uses it
-under the terms of the MPL 1.1:
-
- // ***** BEGIN LICENSE BLOCK *****
- // Version: MPL 1.1/GPL 2.0/LGPL 2.1
- //
- // The contents of this file are subject to the Mozilla Public License Version
- // 1.1 (the "License"); you may not use this file except in compliance with
- // the License. You may obtain a copy of the License at
- // http://www.mozilla.org/MPL/
- //
- // Software distributed under the License is distributed on an "AS IS" basis,
- // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- // for the specific language governing rights and limitations under the
- // License.
- //
- // The Original Code is the Public Suffix List.
- //
- // The Initial Developer of the Original Code is
- // Jo Hermans .
- // Portions created by the Initial Developer are Copyright (C) 2007
- // the Initial Developer. All Rights Reserved.
- //
- // Contributor(s):
- // Ruben Arakelyan
- // Gervase Markham
- // Pamela Greene
- // David Triendl
- // Jothan Frakes
- // The kind representatives of many TLD registries
- //
- // Alternatively, the contents of this file may be used under the terms of
- // either the GNU General Public License Version 2 or later (the "GPL"), or
- // the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- // in which case the provisions of the GPL or the LGPL are applicable instead
- // of those above. If you wish to allow use of your version of this file only
- // under the terms of either the GPL or the LGPL, and not to allow others to
- // use your version of this file under the terms of the MPL, indicate your
- // decision by deleting the provisions above and replace them with the notice
- // and other provisions required by the GPL or the LGPL. If you do not delete
- // the provisions above, a recipient may use your version of this file under
- // the terms of any one of the MPL, the GPL or the LGPL.
- //
- // ***** END LICENSE BLOCK *****
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/README.md b/scripts/node_modules/request/node_modules/tough-cookie/README.md
deleted file mode 100644
index 419dd48d..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/README.md
+++ /dev/null
@@ -1,486 +0,0 @@
-[RFC6265](https://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js
-
-[![Build Status](https://travis-ci.org/SalesforceEng/tough-cookie.png?branch=master)](https://travis-ci.org/SalesforceEng/tough-cookie)
-
-[![NPM Stats](https://nodei.co/npm/tough-cookie.png?downloads=true&stars=true)](https://npmjs.org/package/tough-cookie)
-![NPM Downloads](https://nodei.co/npm-dl/tough-cookie.png?months=9)
-
-# Synopsis
-
-``` javascript
-var tough = require('tough-cookie');
-var Cookie = tough.Cookie;
-var cookie = Cookie.parse(header);
-cookie.value = 'somethingdifferent';
-header = cookie.toString();
-
-var cookiejar = new tough.CookieJar();
-cookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb);
-// ...
-cookiejar.getCookies('http://example.com/otherpath',function(err,cookies) {
- res.headers['cookie'] = cookies.join('; ');
-});
-```
-
-# Installation
-
-It's _so_ easy!
-
-`npm install tough-cookie`
-
-Why the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken.
-
-# API
-
-## tough
-
-Functions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be "bound".
-
-**Note**: prior to 1.0.x, several of these functions took a `strict` parameter. This has since been removed from the API as it was no longer necessary.
-
-### `parseDate(string)`
-
-Parse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`.
-
-### `formatDate(date)`
-
-Format a Date into a RFC1123 string (the RFC6265-recommended format).
-
-### `canonicalDomain(str)`
-
-Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects).
-
-### `domainMatch(str,domStr[,canonicalize=true])`
-
-Answers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match".
-
-The `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not.
-
-### `defaultPath(path)`
-
-Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC.
-
-The `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output.
-
-### `pathMatch(reqPath,cookiePath)`
-
-Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean.
-
-This is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`.
-
-### `parse(header)`
-
-alias for `Cookie.parse(header)`
-
-### `fromJSON(string)`
-
-alias for `Cookie.fromJSON(string)`
-
-### `getPublicSuffix(hostname)`
-
-Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it.
-
-For example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`.
-
-For further information, see http://publicsuffix.org/. This module derives its list from that site.
-
-### `cookieCompare(a,b)`
-
-For use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). The sort algorithm is, in order of precedence:
-
-* Longest `.path`
-* oldest `.creation` (which has a 1ms precision, same as `Date`)
-* lowest `.creationIndex` (to get beyond the 1ms precision)
-
-``` javascript
-var cookies = [ /* unsorted array of Cookie objects */ ];
-cookies = cookies.sort(cookieCompare);
-```
-
-**Note**: Since JavaScript's `Date` is limited to a 1ms precision, cookies within the same milisecond are entirely possible. This is especially true when using the `now` option to `.setCookie()`. The `.creationIndex` property is a per-process global counter, assigned during construction with `new Cookie()`. This preserves the spirit of the RFC sorting: older cookies go first. This works great for `MemoryCookieStore`, since `Set-Cookie` headers are parsed in order, but may not be so great for distributed systems. Sophisticated `Store`s may wish to set this to some other _logical clock_ such that if cookies A and B are created in the same millisecond, but cookie A is created before cookie B, then `A.creationIndex < B.creationIndex`. If you want to alter the global counter, which you probably _shouldn't_ do, it's stored in `Cookie.cookiesCreated`.
-
-### `permuteDomain(domain)`
-
-Generates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores.
-
-### `permutePath(path)`
-
-Generates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores.
-
-
-## Cookie
-
-Exported via `tough.Cookie`.
-
-### `Cookie.parse(header)`
-
-Parses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed.
-
-Here's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response:
-
-``` javascript
-if (res.headers['set-cookie'] instanceof Array)
- cookies = res.headers['set-cookie'].map(function (c) { return (Cookie.parse(c)); });
-else
- cookies = [Cookie.parse(res.headers['set-cookie'])];
-```
-
-### Properties
-
-Cookie object properties:
-
- * _key_ - string - the name or key of the cookie (default "")
- * _value_ - string - the value of the cookie (default "")
- * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()`
- * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()`
- * _domain_ - string - the `Domain=` attribute of the cookie
- * _path_ - string - the `Path=` of the cookie
- * _secure_ - boolean - the `Secure` cookie flag
- * _httpOnly_ - boolean - the `HttpOnly` cookie flag
- * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside)
- * _creation_ - `Date` - when this cookie was constructed
- * _creationIndex_ - number - set at construction, used to provide greater sort precision (please see `cookieCompare(a,b)` for a full explanation)
-
-After a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes:
-
- * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied)
- * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one.
- * _creation_ - `Date` - **modified** from construction to when the cookie was added to the jar
- * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute.
-
-### `Cookie([{properties}])`
-
-Receives an options object that can contain any of the above Cookie properties, uses the default for unspecified properties.
-
-### `.toString()`
-
-encode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`.
-
-### `.cookieString()`
-
-encode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '=').
-
-### `.setExpires(String)`
-
-sets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `"Infinity"` (a string) is set.
-
-### `.setMaxAge(number)`
-
-sets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly.
-
-### `.expiryTime([now=Date.now()])`
-
-### `.expiryDate([now=Date.now()])`
-
-expiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds.
-
-Max-Age takes precedence over Expires (as per the RFC). The `.creation` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute.
-
-If Expires (`.expires`) is set, that's returned.
-
-Otherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents).
-
-### `.TTL([now=Date.now()])`
-
-compute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply.
-
-The "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned.
-
-### `.canonicalizedDoman()`
-
-### `.cdomain()`
-
-return the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters.
-
-### `.toJSON()`
-
-For convenience in using `JSON.serialize(cookie)`. Returns a plain-old `Object` that can be JSON-serialized.
-
-Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are exported in ISO format (`.toISOString()`).
-
-**NOTE**: Custom `Cookie` properties will be discarded. In tough-cookie 1.x, since there was no `.toJSON` method explicitly defined, all enumerable properties were captured. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array.
-
-### `Cookie.fromJSON(strOrObj)`
-
-Does the reverse of `cookie.toJSON()`. If passed a string, will `JSON.parse()` that first.
-
-Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are parsed via `Date.parse()`, not the tough-cookie `parseDate`, since it's JavaScript/JSON-y timestamps being handled at this layer.
-
-Returns `null` upon JSON parsing error.
-
-### `.clone()`
-
-Does a deep clone of this cookie, exactly implemented as `Cookie.fromJSON(cookie.toJSON())`.
-
-### `.validate()`
-
-Status: *IN PROGRESS*. Works for a few things, but is by no means comprehensive.
-
-validates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct:
-
-``` javascript
-if (cookie.validate() === true) {
- // it's tasty
-} else {
- // yuck!
-}
-```
-
-
-## CookieJar
-
-Exported via `tough.CookieJar`.
-
-### `CookieJar([store],[rejectPublicSuffixes])`
-
-Simply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used.
-
-### Properties
-
-CookieJar object properties:
-
- * _rejectPublicSuffixes_ - boolean - reject cookies with domains like "com" and "co.uk" (default: `true`)
-
-Since eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods.
-
-### `.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))`
-
-Attempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.creation`, `.lastAccessed` and `.hostOnly` properties.
-
-The `options` object can be omitted and can have the following properties:
-
- * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.
- * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.
- * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies
- * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. `Store` errors aren't ignored by this option.
-
-As per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual).
-
-### `.setCookieSync(cookieOrString, currentUrl, [{options}])`
-
-Synchronous version of `setCookie`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).
-
-### `.getCookies(currentUrl, [{options},] cb(err,cookies))`
-
-Retrieve the list of cookies that can be sent in a Cookie header for the current url.
-
-If an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given.
-
-The `options` object can be omitted and can have the following properties:
-
- * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies.
- * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`.
- * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies
- * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially).
- * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the underlying store (the default `MemoryCookieStore` supports it).
-
-The `.lastAccessed` property of the returned cookies will have been updated.
-
-### `.getCookiesSync(currentUrl, [{options}])`
-
-Synchronous version of `getCookies`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).
-
-### `.getCookieString(...)`
-
-Accepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`.
-
-### `.getCookieStringSync(...)`
-
-Synchronous version of `getCookieString`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).
-
-### `.getSetCookieStrings(...)`
-
-Returns an array of strings suitable for **Set-Cookie** headers. Accepts the same options as `.getCookies()`. Simply maps the cookie array via `.toString()`.
-
-### `.getSetCookieStringsSync(...)`
-
-Synchronous version of `getSetCookieStrings`; only works with synchronous stores (e.g. the default `MemoryCookieStore`).
-
-### `.serialize(cb(err,serializedObject))`
-
-Serialize the Jar if the underlying store supports `.getAllCookies`.
-
-**NOTE**: Custom `Cookie` properties will be discarded. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array.
-
-See [Serialization Format].
-
-### `.serializeSync()`
-
-Sync version of .serialize
-
-### `.toJSON()`
-
-Alias of .serializeSync() for the convenience of `JSON.stringify(cookiejar)`.
-
-### `CookieJar.deserialize(serialized, [store], cb(err,object))`
-
-A new Jar is created and the serialized Cookies are added to the underlying store. Each `Cookie` is added via `store.putCookie` in the order in which they appear in the serialization.
-
-The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created.
-
-As a convenience, if `serialized` is a string, it is passed through `JSON.parse` first. If that throws an error, this is passed to the callback.
-
-### `CookieJar.deserializeSync(serialized, [store])`
-
-Sync version of `.deserialize`. _Note_ that the `store` must be synchronous for this to work.
-
-### `CookieJar.fromJSON(string)`
-
-Alias of `.deserializeSync` to provide consistency with `Cookie.fromJSON()`.
-
-### `.clone([store,]cb(err,newJar))`
-
-Produces a deep clone of this jar. Modifications to the original won't affect the clone, and vice versa.
-
-The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created. Transferring between store types is supported so long as the source implements `.getAllCookies()` and the destination implements `.putCookie()`.
-
-### `.cloneSync([store])`
-
-Synchronous version of `.clone`, returning a new `CookieJar` instance.
-
-The `store` argument is optional, but must be a _synchronous_ `Store` instance if specified. If not passed, a new instance of `MemoryCookieStore` is used.
-
-The _source_ and _destination_ must both be synchronous `Store`s. If one or both stores are asynchronous, use `.clone` instead. Recall that `MemoryCookieStore` supports both synchronous and asynchronous API calls.
-
-## Store
-
-Base class for CookieJar stores. Available as `tough.Store`.
-
-## Store API
-
-The storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores.
-
-Stores should inherit from the base `Store` class, which is available as `require('tough-cookie').Store`.
-
-Stores are asynchronous by default, but if `store.synchronous` is set to `true`, then the `*Sync` methods on the of the containing `CookieJar` can be used (however, the continuation-passing style
-
-All `domain` parameters will have been normalized before calling.
-
-The Cookie store must have all of the following methods.
-
-### `store.findCookie(domain, path, key, cb(err,cookie))`
-
-Retrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned.
-
-Callback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error).
-
-### `store.findCookies(domain, path, cb(err,cookies))`
-
-Locates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above.
-
-If no cookies are found, the callback MUST be passed an empty array.
-
-The resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done.
-
-As of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only).
-
-### `store.putCookie(cookie, cb(err))`
-
-Adds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur.
-
-The `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties.
-
-Pass an error if the cookie cannot be stored.
-
-### `store.updateCookie(oldCookie, newCookie, cb(err))`
-
-Update an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store.
-
-The `.lastAccessed` property will always be different between the two objects (to the precision possible via JavaScript's clock). Both `.creation` and `.creationIndex` are guaranteed to be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are selected for automatic deletion (e.g., least-recently-used, which is up to the store to implement).
-
-Stores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object.
-
-The `newCookie` and `oldCookie` objects MUST NOT be modified.
-
-Pass an error if the newCookie cannot be stored.
-
-### `store.removeCookie(domain, path, key, cb(err))`
-
-Remove a cookie from the store (see notes on `findCookie` about the uniqueness constraint).
-
-The implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie.
-
-### `store.removeCookies(domain, path, cb(err))`
-
-Removes matching cookies from the store. The `path` parameter is optional, and if missing means all paths in a domain should be removed.
-
-Pass an error ONLY if removing any existing cookies failed.
-
-### `store.getAllCookies(cb(err, cookies))`
-
-Produces an `Array` of all cookies during `jar.serialize()`. The items in the array can be true `Cookie` objects or generic `Object`s with the [Serialization Format] data structure.
-
-Cookies SHOULD be returned in creation order to preserve sorting via `compareCookies()`. For reference, `MemoryCookieStore` will sort by `.creationIndex` since it uses true `Cookie` objects internally. If you don't return the cookies in creation order, they'll still be sorted by creation time, but this only has a precision of 1ms. See `compareCookies` for more detail.
-
-Pass an error if retrieval fails.
-
-## MemoryCookieStore
-
-Inherits from `Store`.
-
-A just-in-memory CookieJar synchronous store implementation, used by default. Despite being a synchronous implementation, it's usable with both the synchronous and asynchronous forms of the `CookieJar` API.
-
-# Serialization Format
-
-**NOTE**: if you want to have custom `Cookie` properties serialized, add the property name to `Cookie.serializableProperties`.
-
-```js
- {
- // The version of tough-cookie that serialized this jar.
- version: 'tough-cookie@1.x.y',
-
- // add the store type, to make humans happy:
- storeType: 'MemoryCookieStore',
-
- // CookieJar configuration:
- rejectPublicSuffixes: true,
- // ... future items go here
-
- // Gets filled from jar.store.getAllCookies():
- cookies: [
- {
- key: 'string',
- value: 'string',
- // ...
- /* other Cookie.serializableProperties go here */
- }
- ]
- }
-```
-
-# Copyright and License
-
-(tl;dr: BSD-3-Clause with some MPL/1.1)
-
-```text
- Copyright (c) 2015, Salesforce.com, Inc.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- 3. Neither the name of Salesforce.com nor the names of its contributors may
- be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-```
-
-Portions may be licensed under different licenses (in particular public-suffix.txt is MPL/1.1); please read the LICENSE file for full details.
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js b/scripts/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js
deleted file mode 100644
index ba054f4c..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js
+++ /dev/null
@@ -1,293 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-'use strict';
-var fs = require('fs');
-var assert = require('assert');
-var punycode = require('punycode');
-
-fs.readFile('./public-suffix.txt', 'utf8', function(err,string) {
- if (err) {
- throw err;
- }
- var lines = string.split("\n");
- process.nextTick(function() {
- processList(lines);
- });
-});
-
-var index = {};
-
-var COMMENT = new RegExp('//.+');
-function processList(lines) {
- while (lines.length) {
- var line = lines.shift();
- line = line.replace(COMMENT,'').trim();
- if (!line) {
- continue;
- }
- addToIndex(index,line);
- }
-
- pubSufTest();
-
- var w = fs.createWriteStream('./lib/pubsuffix.js',{
- flags: 'w',
- encoding: 'utf8',
- mode: parseInt('644',8)
- });
- w.on('end', process.exit);
- w.write("/****************************************************\n");
- w.write(" * AUTOMATICALLY GENERATED by generate-pubsuffix.js *\n");
- w.write(" * DO NOT EDIT! *\n");
- w.write(" ****************************************************/\n\n");
-
- w.write('"use strict";\n\n');
- w.write("var punycode = require('punycode');\n\n");
-
- w.write("module.exports.getPublicSuffix = ");
- w.write(getPublicSuffix.toString());
- w.write(";\n\n");
-
- w.write("// The following generated structure is used under the MPL version 1.1\n");
- w.write("// See public-suffix.txt for more information\n\n");
- w.write("var index = module.exports.index = Object.freeze(\n");
- w.write(JSON.stringify(index));
- w.write(");\n\n");
- w.write("// END of automatically generated file\n");
-
- w.end();
-}
-
-function addToIndex(index,line) {
- var prefix = '';
- if (line.replace(/^(!|\*\.)/)) {
- prefix = RegExp.$1;
- line = line.slice(prefix.length);
- }
- line = prefix + punycode.toASCII(line);
-
- if (line.substr(0,1) == '!') {
- index[line.substr(1)] = false;
- } else {
- index[line] = true;
- }
-}
-
-// include the licence in the function since it gets written to pubsuffix.js
-function getPublicSuffix(domain) {
- /*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
- if (!domain) {
- return null;
- }
- if (domain.match(/^\./)) {
- return null;
- }
- var asciiDomain = punycode.toASCII(domain);
- var converted = false;
- if (asciiDomain !== domain) {
- domain = asciiDomain;
- converted = true;
- }
- if (index[domain]) {
- return null;
- }
-
- domain = domain.toLowerCase();
- var parts = domain.split('.').reverse();
-
- var suffix = '';
- var suffixLen = 0;
- for (var i=0; i suffixLen) {
- var publicSuffix = parts.slice(0,suffixLen+1).reverse().join('.');
- return converted ? punycode.toUnicode(publicSuffix) : publicSuffix;
- }
-
- return null;
-}
-
-function checkPublicSuffix(give,get) {
- var got = getPublicSuffix(give);
- assert.equal(got, get, give+' should be '+(get==null?'NULL':get)+' but got '+got);
-}
-
-// pubSufTest() was converted to JavaScript from http://mxr.mozilla.org/mozilla-central/source/netwerk/test/unit/data/test_psl.txt?raw=1
-function pubSufTest() {
- // For this function-scope and this function-scope ONLY:
- // Any copyright is dedicated to the Public Domain.
- // http://creativecommons.org/publicdomain/zero/1.0/
-
- // NULL input.
- checkPublicSuffix(null, null);
- // Mixed case.
- checkPublicSuffix('COM', null);
- checkPublicSuffix('example.COM', 'example.com');
- checkPublicSuffix('WwW.example.COM', 'example.com');
- // Leading dot.
- checkPublicSuffix('.com', null);
- checkPublicSuffix('.example', null);
- checkPublicSuffix('.example.com', null);
- checkPublicSuffix('.example.example', null);
- // Unlisted TLD.
- checkPublicSuffix('example', null);
- checkPublicSuffix('example.example', 'example.example');
- checkPublicSuffix('b.example.example', 'example.example');
- checkPublicSuffix('a.b.example.example', 'example.example');
- // Listed, but non-Internet, TLD.
- //checkPublicSuffix('local', null);
- //checkPublicSuffix('example.local', null);
- //checkPublicSuffix('b.example.local', null);
- //checkPublicSuffix('a.b.example.local', null);
- // TLD with only 1 rule.
- checkPublicSuffix('biz', null);
- checkPublicSuffix('domain.biz', 'domain.biz');
- checkPublicSuffix('b.domain.biz', 'domain.biz');
- checkPublicSuffix('a.b.domain.biz', 'domain.biz');
- // TLD with some 2-level rules.
- checkPublicSuffix('com', null);
- checkPublicSuffix('example.com', 'example.com');
- checkPublicSuffix('b.example.com', 'example.com');
- checkPublicSuffix('a.b.example.com', 'example.com');
- checkPublicSuffix('uk.com', null);
- checkPublicSuffix('example.uk.com', 'example.uk.com');
- checkPublicSuffix('b.example.uk.com', 'example.uk.com');
- checkPublicSuffix('a.b.example.uk.com', 'example.uk.com');
- checkPublicSuffix('test.ac', 'test.ac');
- // TLD with only 1 (wildcard) rule.
- checkPublicSuffix('cy', null);
- checkPublicSuffix('c.cy', null);
- checkPublicSuffix('b.c.cy', 'b.c.cy');
- checkPublicSuffix('a.b.c.cy', 'b.c.cy');
- // More complex TLD.
- checkPublicSuffix('jp', null);
- checkPublicSuffix('test.jp', 'test.jp');
- checkPublicSuffix('www.test.jp', 'test.jp');
- checkPublicSuffix('ac.jp', null);
- checkPublicSuffix('test.ac.jp', 'test.ac.jp');
- checkPublicSuffix('www.test.ac.jp', 'test.ac.jp');
- checkPublicSuffix('kyoto.jp', null);
- checkPublicSuffix('test.kyoto.jp', 'test.kyoto.jp');
- checkPublicSuffix('ide.kyoto.jp', null);
- checkPublicSuffix('b.ide.kyoto.jp', 'b.ide.kyoto.jp');
- checkPublicSuffix('a.b.ide.kyoto.jp', 'b.ide.kyoto.jp');
- checkPublicSuffix('c.kobe.jp', null);
- checkPublicSuffix('b.c.kobe.jp', 'b.c.kobe.jp');
- checkPublicSuffix('a.b.c.kobe.jp', 'b.c.kobe.jp');
- checkPublicSuffix('city.kobe.jp', 'city.kobe.jp');
- checkPublicSuffix('www.city.kobe.jp', 'city.kobe.jp');
- // TLD with a wildcard rule and exceptions.
- checkPublicSuffix('ck', null);
- checkPublicSuffix('test.ck', null);
- checkPublicSuffix('b.test.ck', 'b.test.ck');
- checkPublicSuffix('a.b.test.ck', 'b.test.ck');
- checkPublicSuffix('www.ck', 'www.ck');
- checkPublicSuffix('www.www.ck', 'www.ck');
- // US K12.
- checkPublicSuffix('us', null);
- checkPublicSuffix('test.us', 'test.us');
- checkPublicSuffix('www.test.us', 'test.us');
- checkPublicSuffix('ak.us', null);
- checkPublicSuffix('test.ak.us', 'test.ak.us');
- checkPublicSuffix('www.test.ak.us', 'test.ak.us');
- checkPublicSuffix('k12.ak.us', null);
- checkPublicSuffix('test.k12.ak.us', 'test.k12.ak.us');
- checkPublicSuffix('www.test.k12.ak.us', 'test.k12.ak.us');
- // IDN labels.
- checkPublicSuffix('食狮.com.cn', '食狮.com.cn');
- checkPublicSuffix('食狮.公司.cn', '食狮.公司.cn');
- checkPublicSuffix('www.食狮.公司.cn', '食狮.公司.cn');
- checkPublicSuffix('shishi.公司.cn', 'shishi.公司.cn');
- checkPublicSuffix('公司.cn', null);
- checkPublicSuffix('食狮.中国', '食狮.中国');
- checkPublicSuffix('www.食狮.中国', '食狮.中国');
- checkPublicSuffix('shishi.中国', 'shishi.中国');
- checkPublicSuffix('中国', null);
- // Same as above, but punycoded.
- checkPublicSuffix('xn--85x722f.com.cn', 'xn--85x722f.com.cn');
- checkPublicSuffix('xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn');
- checkPublicSuffix('www.xn--85x722f.xn--55qx5d.cn', 'xn--85x722f.xn--55qx5d.cn');
- checkPublicSuffix('shishi.xn--55qx5d.cn', 'shishi.xn--55qx5d.cn');
- checkPublicSuffix('xn--55qx5d.cn', null);
- checkPublicSuffix('xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s');
- checkPublicSuffix('www.xn--85x722f.xn--fiqs8s', 'xn--85x722f.xn--fiqs8s');
- checkPublicSuffix('shishi.xn--fiqs8s', 'shishi.xn--fiqs8s');
- checkPublicSuffix('xn--fiqs8s', null);
-}
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/lib/cookie.js b/scripts/node_modules/request/node_modules/tough-cookie/lib/cookie.js
deleted file mode 100644
index 4f677c38..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/lib/cookie.js
+++ /dev/null
@@ -1,1309 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-'use strict';
-var net = require('net');
-var urlParse = require('url').parse;
-var pubsuffix = require('./pubsuffix');
-var Store = require('./store').Store;
-var MemoryCookieStore = require('./memstore').MemoryCookieStore;
-var pathMatch = require('./pathMatch').pathMatch;
-var VERSION = require('../package.json').version;
-
-var punycode;
-try {
- punycode = require('punycode');
-} catch(e) {
- console.warn("cookie: can't load punycode; won't use punycode for domain normalization");
-}
-
-var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/;
-
-// From RFC6265 S4.1.1
-// note that it excludes \x3B ";"
-var COOKIE_OCTET = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/;
-var COOKIE_OCTETS = new RegExp('^'+COOKIE_OCTET.source+'$');
-
-// Double quotes are part of the value (see: S4.1.1).
-// '\r', '\n' and '\0' should be treated as a terminator in the "relaxed" mode
-// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60)
-// '=' and ';' are attribute/values separators
-// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L64)
-var COOKIE_PAIR = /^([^=;]+)\s*=\s*(("?)[^\n\r\0]*\3)/;
-
-// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"'
-// Note ';' is \x3B
-var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/;
-
-// Used for checking whether or not there is a trailing semi-colon
-var TRAILING_SEMICOLON = /;+$/;
-
-var DAY_OF_MONTH = /^(\d{1,2})[^\d]*$/;
-var TIME = /^(\d{1,2})[^\d]*:(\d{1,2})[^\d]*:(\d{1,2})[^\d]*$/;
-var MONTH = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i;
-
-var MONTH_TO_NUM = {
- jan:0, feb:1, mar:2, apr:3, may:4, jun:5,
- jul:6, aug:7, sep:8, oct:9, nov:10, dec:11
-};
-var NUM_TO_MONTH = [
- 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'
-];
-var NUM_TO_DAY = [
- 'Sun','Mon','Tue','Wed','Thu','Fri','Sat'
-];
-
-var YEAR = /^(\d{2}|\d{4})$/; // 2 to 4 digits
-
-var MAX_TIME = 2147483647000; // 31-bit max
-var MIN_TIME = 0; // 31-bit min
-
-
-// RFC6265 S5.1.1 date parser:
-function parseDate(str) {
- if (!str) {
- return;
- }
-
- /* RFC6265 S5.1.1:
- * 2. Process each date-token sequentially in the order the date-tokens
- * appear in the cookie-date
- */
- var tokens = str.split(DATE_DELIM);
- if (!tokens) {
- return;
- }
-
- var hour = null;
- var minutes = null;
- var seconds = null;
- var day = null;
- var month = null;
- var year = null;
-
- for (var i=0; i 23 || minutes > 59 || seconds > 59) {
- return;
- }
-
- continue;
- }
- }
-
- /* 2.2. If the found-day-of-month flag is not set and the date-token matches
- * the day-of-month production, set the found-day-of- month flag and set
- * the day-of-month-value to the number denoted by the date-token. Skip
- * the remaining sub-steps and continue to the next date-token.
- */
- if (day === null) {
- result = DAY_OF_MONTH.exec(token);
- if (result) {
- day = parseInt(result, 10);
- /* RFC6265 S5.1.1.5:
- * [fail if] the day-of-month-value is less than 1 or greater than 31
- */
- if(day < 1 || day > 31) {
- return;
- }
- continue;
- }
- }
-
- /* 2.3. If the found-month flag is not set and the date-token matches the
- * month production, set the found-month flag and set the month-value to
- * the month denoted by the date-token. Skip the remaining sub-steps and
- * continue to the next date-token.
- */
- if (month === null) {
- result = MONTH.exec(token);
- if (result) {
- month = MONTH_TO_NUM[result[1].toLowerCase()];
- continue;
- }
- }
-
- /* 2.4. If the found-year flag is not set and the date-token matches the year
- * production, set the found-year flag and set the year-value to the number
- * denoted by the date-token. Skip the remaining sub-steps and continue to
- * the next date-token.
- */
- if (year === null) {
- result = YEAR.exec(token);
- if (result) {
- year = parseInt(result[0], 10);
- /* From S5.1.1:
- * 3. If the year-value is greater than or equal to 70 and less
- * than or equal to 99, increment the year-value by 1900.
- * 4. If the year-value is greater than or equal to 0 and less
- * than or equal to 69, increment the year-value by 2000.
- */
- if (70 <= year && year <= 99) {
- year += 1900;
- } else if (0 <= year && year <= 69) {
- year += 2000;
- }
-
- if (year < 1601) {
- return; // 5. ... the year-value is less than 1601
- }
- }
- }
- }
-
- if (seconds === null || day === null || month === null || year === null) {
- return; // 5. ... at least one of the found-day-of-month, found-month, found-
- // year, or found-time flags is not set,
- }
-
- return new Date(Date.UTC(year, month, day, hour, minutes, seconds));
-}
-
-function formatDate(date) {
- var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d;
- var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h;
- var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m;
- var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s;
- return NUM_TO_DAY[date.getUTCDay()] + ', ' +
- d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+
- h+':'+m+':'+s+' GMT';
-}
-
-// S5.1.2 Canonicalized Host Names
-function canonicalDomain(str) {
- if (str == null) {
- return null;
- }
- str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading .
-
- // convert to IDN if any non-ASCII characters
- if (punycode && /[^\u0001-\u007f]/.test(str)) {
- str = punycode.toASCII(str);
- }
-
- return str.toLowerCase();
-}
-
-// S5.1.3 Domain Matching
-function domainMatch(str, domStr, canonicalize) {
- if (str == null || domStr == null) {
- return null;
- }
- if (canonicalize !== false) {
- str = canonicalDomain(str);
- domStr = canonicalDomain(domStr);
- }
-
- /*
- * "The domain string and the string are identical. (Note that both the
- * domain string and the string will have been canonicalized to lower case at
- * this point)"
- */
- if (str == domStr) {
- return true;
- }
-
- /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */
-
- /* "* The string is a host name (i.e., not an IP address)." */
- if (net.isIP(str)) {
- return false;
- }
-
- /* "* The domain string is a suffix of the string" */
- var idx = str.indexOf(domStr);
- if (idx <= 0) {
- return false; // it's a non-match (-1) or prefix (0)
- }
-
- // e.g "a.b.c".indexOf("b.c") === 2
- // 5 === 3+2
- if (str.length !== domStr.length + idx) { // it's not a suffix
- return false;
- }
-
- /* "* The last character of the string that is not included in the domain
- * string is a %x2E (".") character." */
- if (str.substr(idx-1,1) !== '.') {
- return false;
- }
-
- return true;
-}
-
-
-// RFC6265 S5.1.4 Paths and Path-Match
-
-/*
- * "The user agent MUST use an algorithm equivalent to the following algorithm
- * to compute the default-path of a cookie:"
- *
- * Assumption: the path (and not query part or absolute uri) is passed in.
- */
-function defaultPath(path) {
- // "2. If the uri-path is empty or if the first character of the uri-path is not
- // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps.
- if (!path || path.substr(0,1) !== "/") {
- return "/";
- }
-
- // "3. If the uri-path contains no more than one %x2F ("/") character, output
- // %x2F ("/") and skip the remaining step."
- if (path === "/") {
- return path;
- }
-
- var rightSlash = path.lastIndexOf("/");
- if (rightSlash === 0) {
- return "/";
- }
-
- // "4. Output the characters of the uri-path from the first character up to,
- // but not including, the right-most %x2F ("/")."
- return path.slice(0, rightSlash);
-}
-
-
-function parse(str) {
- str = str.trim();
-
- // S4.1.1 Trailing semi-colons are not part of the specification.
- var semiColonCheck = TRAILING_SEMICOLON.exec(str);
- if (semiColonCheck) {
- str = str.slice(0, semiColonCheck.index);
- }
-
- // We use a regex to parse the "name-value-pair" part of S5.2
- var firstSemi = str.indexOf(';'); // S5.2 step 1
- var result = COOKIE_PAIR.exec(firstSemi === -1 ? str : str.substr(0,firstSemi));
-
- // Rx satisfies the "the name string is empty" and "lacks a %x3D ("=")"
- // constraints as well as trimming any whitespace.
- if (!result) {
- return;
- }
-
- var c = new Cookie();
- c.key = result[1].trim();
- c.value = result[2].trim();
-
- if (firstSemi === -1) {
- return c;
- }
-
- // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string
- // (including the %x3B (";") in question)." plus later on in the same section
- // "discard the first ";" and trim".
- var unparsed = str.slice(firstSemi).replace(/^\s*;\s*/,'').trim();
-
- // "If the unparsed-attributes string is empty, skip the rest of these
- // steps."
- if (unparsed.length === 0) {
- return c;
- }
-
- /*
- * S5.2 says that when looping over the items "[p]rocess the attribute-name
- * and attribute-value according to the requirements in the following
- * subsections" for every item. Plus, for many of the individual attributes
- * in S5.3 it says to use the "attribute-value of the last attribute in the
- * cookie-attribute-list". Therefore, in this implementation, we overwrite
- * the previous value.
- */
- var cookie_avs = unparsed.split(/\s*;\s*/);
- while (cookie_avs.length) {
- var av = cookie_avs.shift();
- var av_sep = av.indexOf('=');
- var av_key, av_value;
-
- if (av_sep === -1) {
- av_key = av;
- av_value = null;
- } else {
- av_key = av.substr(0,av_sep);
- av_value = av.substr(av_sep+1);
- }
-
- av_key = av_key.trim().toLowerCase();
-
- if (av_value) {
- av_value = av_value.trim();
- }
-
- switch(av_key) {
- case 'expires': // S5.2.1
- if (av_value) {
- var exp = parseDate(av_value);
- // "If the attribute-value failed to parse as a cookie date, ignore the
- // cookie-av."
- if (exp) {
- // over and underflow not realistically a concern: V8's getTime() seems to
- // store something larger than a 32-bit time_t (even with 32-bit node)
- c.expires = exp;
- }
- }
- break;
-
- case 'max-age': // S5.2.2
- if (av_value) {
- // "If the first character of the attribute-value is not a DIGIT or a "-"
- // character ...[or]... If the remainder of attribute-value contains a
- // non-DIGIT character, ignore the cookie-av."
- if (/^-?[0-9]+$/.test(av_value)) {
- var delta = parseInt(av_value, 10);
- // "If delta-seconds is less than or equal to zero (0), let expiry-time
- // be the earliest representable date and time."
- c.setMaxAge(delta);
- }
- }
- break;
-
- case 'domain': // S5.2.3
- // "If the attribute-value is empty, the behavior is undefined. However,
- // the user agent SHOULD ignore the cookie-av entirely."
- if (av_value) {
- // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E
- // (".") character."
- var domain = av_value.trim().replace(/^\./, '');
- if (domain) {
- // "Convert the cookie-domain to lower case."
- c.domain = domain.toLowerCase();
- }
- }
- break;
-
- case 'path': // S5.2.4
- /*
- * "If the attribute-value is empty or if the first character of the
- * attribute-value is not %x2F ("/"):
- * Let cookie-path be the default-path.
- * Otherwise:
- * Let cookie-path be the attribute-value."
- *
- * We'll represent the default-path as null since it depends on the
- * context of the parsing.
- */
- c.path = av_value && av_value[0] === "/" ? av_value : null;
- break;
-
- case 'secure': // S5.2.5
- /*
- * "If the attribute-name case-insensitively matches the string "Secure",
- * the user agent MUST append an attribute to the cookie-attribute-list
- * with an attribute-name of Secure and an empty attribute-value."
- */
- c.secure = true;
- break;
-
- case 'httponly': // S5.2.6 -- effectively the same as 'secure'
- c.httpOnly = true;
- break;
-
- default:
- c.extensions = c.extensions || [];
- c.extensions.push(av);
- break;
- }
- }
-
- return c;
-}
-
-// avoid the V8 deoptimization monster!
-function jsonParse(str) {
- var obj;
- try {
- obj = JSON.parse(str);
- } catch (e) {
- return e;
- }
- return obj;
-}
-
-function fromJSON(str) {
- if (!str) {
- return null;
- }
-
- var obj;
- if (typeof str === 'string') {
- obj = jsonParse(str);
- if (obj instanceof Error) {
- return null;
- }
- } else {
- // assume it's an Object
- obj = str;
- }
-
- var c = new Cookie();
- for (var i=0; i 1) {
- var lindex = path.lastIndexOf('/');
- if (lindex === 0) {
- break;
- }
- path = path.substr(0,lindex);
- permutations.push(path);
- }
- permutations.push('/');
- return permutations;
-}
-
-function getCookieContext(url) {
- if (url instanceof Object) {
- return url;
- }
- // NOTE: decodeURI will throw on malformed URIs (see GH-32).
- // Therefore, we will just skip decoding for such URIs.
- try {
- url = decodeURI(url);
- }
- catch(err) {
- // Silently swallow error
- }
-
- return urlParse(url);
-}
-
-function Cookie(opts) {
- opts = opts || {};
-
- Object.keys(opts).forEach(function(prop) {
- if (Cookie.prototype.hasOwnProperty(prop) &&
- Cookie.prototype[prop] !== opts[prop] &&
- prop.substr(0,1) !== '_')
- {
- this[prop] = opts[prop];
- }
- }, this);
-
- this.creation = this.creation || new Date();
-
- // used to break creation ties in cookieCompare():
- Object.defineProperty(this, 'creationIndex', {
- configurable: false,
- enumerable: false, // important for assert.deepEqual checks
- writable: true,
- value: ++Cookie.cookiesCreated
- });
-}
-
-Cookie.cookiesCreated = 0; // incremented each time a cookie is created
-
-Cookie.parse = parse;
-Cookie.fromJSON = fromJSON;
-
-Cookie.prototype.key = "";
-Cookie.prototype.value = "";
-
-// the order in which the RFC has them:
-Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity
-Cookie.prototype.maxAge = null; // takes precedence over expires for TTL
-Cookie.prototype.domain = null;
-Cookie.prototype.path = null;
-Cookie.prototype.secure = false;
-Cookie.prototype.httpOnly = false;
-Cookie.prototype.extensions = null;
-
-// set by the CookieJar:
-Cookie.prototype.hostOnly = null; // boolean when set
-Cookie.prototype.pathIsDefault = null; // boolean when set
-Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse
-Cookie.prototype.lastAccessed = null; // Date when set
-Object.defineProperty(Cookie.prototype, 'creationIndex', {
- configurable: true,
- enumerable: false,
- writable: true,
- value: 0
-});
-
-Cookie.serializableProperties = Object.keys(Cookie.prototype)
- .filter(function(prop) {
- return !(
- Cookie.prototype[prop] instanceof Function ||
- prop === 'creationIndex' ||
- prop.substr(0,1) === '_'
- );
- });
-
-Cookie.prototype.inspect = function inspect() {
- var now = Date.now();
- return 'Cookie="'+this.toString() +
- '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') +
- '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') +
- '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') +
- '"';
-};
-
-Cookie.prototype.toJSON = function() {
- var obj = {};
-
- var props = Cookie.serializableProperties;
- for (var i=0; i suffixLen) {
- var publicSuffix = parts.slice(0,suffixLen+1).reverse().join('.');
- return converted ? punycode.toUnicode(publicSuffix) : publicSuffix;
- }
-
- return null;
-};
-
-// The following generated structure is used under the MPL version 1.1
-// See public-suffix.txt for more information
-
-var index = module.exports.index = Object.freeze(
-{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"marketplace.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"taxi.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"an":true,"com.an":true,"net.an":true,"org.an":true,"edu.an":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"ar":true,"com.ar":true,"edu.ar":true,"gob.ar":true,"gov.ar":true,"int.ar":true,"mil.ar":true,"net.ar":true,"org.ar":true,"tur.ar":true,"arpa":true,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"au":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"org.ba":true,"net.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"unsa.ba":true,"unbi.ba":true,"co.ba":true,"com.ba":true,"rs.ba":true,"bb":true,"biz.bb":true,"co.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"tv.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gov.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"br":true,"adm.br":true,"adv.br":true,"agr.br":true,"am.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"coop.br":true,"ecn.br":true,"eco.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"flog.br":true,"fm.br":true,"fnd.br":true,"fot.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"gov.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jor.br":true,"jus.br":true,"leg.br":true,"lel.br":true,"mat.br":true,"med.br":true,"mil.br":true,"mp.br":true,"mus.br":true,"net.br":true,"*.nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"slg.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"vet.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bv":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"co.cm":true,"com.cm":true,"gov.cm":true,"net.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cw":true,"com.cw":true,"edu.cw":true,"net.cw":true,"org.cw":true,"cx":true,"gov.cx":true,"*.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"et":true,"com.et":true,"gov.et":true,"org.et":true,"edu.et":true,"biz.et":true,"name.et":true,"info.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gb":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"net.gg":true,"org.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"gm":true,"gn":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"gt":true,"com.gt":true,"edu.gt":true,"gob.gt":true,"ind.gt":true,"mil.gt":true,"net.gt":true,"org.gt":true,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"net.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"biz.id":true,"co.id":true,"desa.id":true,"go.id":true,"mil.id":true,"my.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"*.il":true,"im":true,"ac.im":true,"co.im":true,"com.im":true,"ltd.co.im":true,"net.im":true,"org.im":true,"plc.co.im":true,"tt.im":true,"tv.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"abr.it":true,"abruzzo.it":true,"aosta-valley.it":true,"aostavalley.it":true,"bas.it":true,"basilicata.it":true,"cal.it":true,"calabria.it":true,"cam.it":true,"campania.it":true,"emilia-romagna.it":true,"emiliaromagna.it":true,"emr.it":true,"friuli-v-giulia.it":true,"friuli-ve-giulia.it":true,"friuli-vegiulia.it":true,"friuli-venezia-giulia.it":true,"friuli-veneziagiulia.it":true,"friuli-vgiulia.it":true,"friuliv-giulia.it":true,"friulive-giulia.it":true,"friulivegiulia.it":true,"friulivenezia-giulia.it":true,"friuliveneziagiulia.it":true,"friulivgiulia.it":true,"fvg.it":true,"laz.it":true,"lazio.it":true,"lig.it":true,"liguria.it":true,"lom.it":true,"lombardia.it":true,"lombardy.it":true,"lucania.it":true,"mar.it":true,"marche.it":true,"mol.it":true,"molise.it":true,"piedmont.it":true,"piemonte.it":true,"pmn.it":true,"pug.it":true,"puglia.it":true,"sar.it":true,"sardegna.it":true,"sardinia.it":true,"sic.it":true,"sicilia.it":true,"sicily.it":true,"taa.it":true,"tos.it":true,"toscana.it":true,"trentino-a-adige.it":true,"trentino-aadige.it":true,"trentino-alto-adige.it":true,"trentino-altoadige.it":true,"trentino-s-tirol.it":true,"trentino-stirol.it":true,"trentino-sud-tirol.it":true,"trentino-sudtirol.it":true,"trentino-sued-tirol.it":true,"trentino-suedtirol.it":true,"trentinoa-adige.it":true,"trentinoaadige.it":true,"trentinoalto-adige.it":true,"trentinoaltoadige.it":true,"trentinos-tirol.it":true,"trentinostirol.it":true,"trentinosud-tirol.it":true,"trentinosudtirol.it":true,"trentinosued-tirol.it":true,"trentinosuedtirol.it":true,"tuscany.it":true,"umb.it":true,"umbria.it":true,"val-d-aosta.it":true,"val-daosta.it":true,"vald-aosta.it":true,"valdaosta.it":true,"valle-aosta.it":true,"valle-d-aosta.it":true,"valle-daosta.it":true,"valleaosta.it":true,"valled-aosta.it":true,"valledaosta.it":true,"vallee-aoste.it":true,"valleeaoste.it":true,"vao.it":true,"vda.it":true,"ven.it":true,"veneto.it":true,"ag.it":true,"agrigento.it":true,"al.it":true,"alessandria.it":true,"alto-adige.it":true,"altoadige.it":true,"an.it":true,"ancona.it":true,"andria-barletta-trani.it":true,"andria-trani-barletta.it":true,"andriabarlettatrani.it":true,"andriatranibarletta.it":true,"ao.it":true,"aosta.it":true,"aoste.it":true,"ap.it":true,"aq.it":true,"aquila.it":true,"ar.it":true,"arezzo.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"asti.it":true,"at.it":true,"av.it":true,"avellino.it":true,"ba.it":true,"balsan.it":true,"bari.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"belluno.it":true,"benevento.it":true,"bergamo.it":true,"bg.it":true,"bi.it":true,"biella.it":true,"bl.it":true,"bn.it":true,"bo.it":true,"bologna.it":true,"bolzano.it":true,"bozen.it":true,"br.it":true,"brescia.it":true,"brindisi.it":true,"bs.it":true,"bt.it":true,"bz.it":true,"ca.it":true,"cagliari.it":true,"caltanissetta.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"campobasso.it":true,"carbonia-iglesias.it":true,"carboniaiglesias.it":true,"carrara-massa.it":true,"carraramassa.it":true,"caserta.it":true,"catania.it":true,"catanzaro.it":true,"cb.it":true,"ce.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"ch.it":true,"chieti.it":true,"ci.it":true,"cl.it":true,"cn.it":true,"co.it":true,"como.it":true,"cosenza.it":true,"cr.it":true,"cremona.it":true,"crotone.it":true,"cs.it":true,"ct.it":true,"cuneo.it":true,"cz.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"en.it":true,"enna.it":true,"fc.it":true,"fe.it":true,"fermo.it":true,"ferrara.it":true,"fg.it":true,"fi.it":true,"firenze.it":true,"florence.it":true,"fm.it":true,"foggia.it":true,"forli-cesena.it":true,"forlicesena.it":true,"fr.it":true,"frosinone.it":true,"ge.it":true,"genoa.it":true,"genova.it":true,"go.it":true,"gorizia.it":true,"gr.it":true,"grosseto.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"im.it":true,"imperia.it":true,"is.it":true,"isernia.it":true,"kr.it":true,"la-spezia.it":true,"laquila.it":true,"laspezia.it":true,"latina.it":true,"lc.it":true,"le.it":true,"lecce.it":true,"lecco.it":true,"li.it":true,"livorno.it":true,"lo.it":true,"lodi.it":true,"lt.it":true,"lu.it":true,"lucca.it":true,"macerata.it":true,"mantova.it":true,"massa-carrara.it":true,"massacarrara.it":true,"matera.it":true,"mb.it":true,"mc.it":true,"me.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"messina.it":true,"mi.it":true,"milan.it":true,"milano.it":true,"mn.it":true,"mo.it":true,"modena.it":true,"monza-brianza.it":true,"monza-e-della-brianza.it":true,"monza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"ms.it":true,"mt.it":true,"na.it":true,"naples.it":true,"napoli.it":true,"no.it":true,"novara.it":true,"nu.it":true,"nuoro.it":true,"og.it":true,"ogliastra.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"or.it":true,"oristano.it":true,"ot.it":true,"pa.it":true,"padova.it":true,"padua.it":true,"palermo.it":true,"parma.it":true,"pavia.it":true,"pc.it":true,"pd.it":true,"pe.it":true,"perugia.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"pescara.it":true,"pg.it":true,"pi.it":true,"piacenza.it":true,"pisa.it":true,"pistoia.it":true,"pn.it":true,"po.it":true,"pordenone.it":true,"potenza.it":true,"pr.it":true,"prato.it":true,"pt.it":true,"pu.it":true,"pv.it":true,"pz.it":true,"ra.it":true,"ragusa.it":true,"ravenna.it":true,"rc.it":true,"re.it":true,"reggio-calabria.it":true,"reggio-emilia.it":true,"reggiocalabria.it":true,"reggioemilia.it":true,"rg.it":true,"ri.it":true,"rieti.it":true,"rimini.it":true,"rm.it":true,"rn.it":true,"ro.it":true,"roma.it":true,"rome.it":true,"rovigo.it":true,"sa.it":true,"salerno.it":true,"sassari.it":true,"savona.it":true,"si.it":true,"siena.it":true,"siracusa.it":true,"so.it":true,"sondrio.it":true,"sp.it":true,"sr.it":true,"ss.it":true,"suedtirol.it":true,"sv.it":true,"ta.it":true,"taranto.it":true,"te.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"teramo.it":true,"terni.it":true,"tn.it":true,"to.it":true,"torino.it":true,"tp.it":true,"tr.it":true,"trani-andria-barletta.it":true,"trani-barletta-andria.it":true,"traniandriabarletta.it":true,"tranibarlettaandria.it":true,"trapani.it":true,"trentino.it":true,"trento.it":true,"treviso.it":true,"trieste.it":true,"ts.it":true,"turin.it":true,"tv.it":true,"ud.it":true,"udine.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"va.it":true,"varese.it":true,"vb.it":true,"vc.it":true,"ve.it":true,"venezia.it":true,"venice.it":true,"verbania.it":true,"vercelli.it":true,"verona.it":true,"vi.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vicenza.it":true,"viterbo.it":true,"vr.it":true,"vs.it":true,"vt.it":true,"vv.it":true,"je":true,"co.je":true,"net.je":true,"org.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"aichi.jp":true,"akita.jp":true,"aomori.jp":true,"chiba.jp":true,"ehime.jp":true,"fukui.jp":true,"fukuoka.jp":true,"fukushima.jp":true,"gifu.jp":true,"gunma.jp":true,"hiroshima.jp":true,"hokkaido.jp":true,"hyogo.jp":true,"ibaraki.jp":true,"ishikawa.jp":true,"iwate.jp":true,"kagawa.jp":true,"kagoshima.jp":true,"kanagawa.jp":true,"kochi.jp":true,"kumamoto.jp":true,"kyoto.jp":true,"mie.jp":true,"miyagi.jp":true,"miyazaki.jp":true,"nagano.jp":true,"nagasaki.jp":true,"nara.jp":true,"niigata.jp":true,"oita.jp":true,"okayama.jp":true,"okinawa.jp":true,"osaka.jp":true,"saga.jp":true,"saitama.jp":true,"shiga.jp":true,"shimane.jp":true,"shizuoka.jp":true,"tochigi.jp":true,"tokushima.jp":true,"tokyo.jp":true,"tottori.jp":true,"toyama.jp":true,"wakayama.jp":true,"yamagata.jp":true,"yamaguchi.jp":true,"yamanashi.jp":true,"xn--4pvxs.jp":true,"xn--vgu402c.jp":true,"xn--c3s14m.jp":true,"xn--f6qx53a.jp":true,"xn--8pvr4u.jp":true,"xn--uist22h.jp":true,"xn--djrs72d6uy.jp":true,"xn--mkru45i.jp":true,"xn--0trq7p7nn.jp":true,"xn--8ltr62k.jp":true,"xn--2m4a15e.jp":true,"xn--efvn9s.jp":true,"xn--32vp30h.jp":true,"xn--4it797k.jp":true,"xn--1lqs71d.jp":true,"xn--5rtp49c.jp":true,"xn--5js045d.jp":true,"xn--ehqz56n.jp":true,"xn--1lqs03n.jp":true,"xn--qqqt11m.jp":true,"xn--kbrq7o.jp":true,"xn--pssu33l.jp":true,"xn--ntsq17g.jp":true,"xn--uisz3g.jp":true,"xn--6btw5a.jp":true,"xn--1ctwo.jp":true,"xn--6orx2r.jp":true,"xn--rht61e.jp":true,"xn--rht27z.jp":true,"xn--djty4k.jp":true,"xn--nit225k.jp":true,"xn--rht3d.jp":true,"xn--klty5x.jp":true,"xn--kltx9a.jp":true,"xn--kltp7d.jp":true,"xn--uuwu58a.jp":true,"xn--zbx025d.jp":true,"xn--ntso0iqx3a.jp":true,"xn--elqq16h.jp":true,"xn--4it168d.jp":true,"xn--klt787d.jp":true,"xn--rny31h.jp":true,"xn--7t0a264c.jp":true,"xn--5rtq34k.jp":true,"xn--k7yn95e.jp":true,"xn--tor131o.jp":true,"xn--d5qv7z876c.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.nagoya.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.yokohama.jp":true,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.nagoya.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.yokohama.jp":false,"aisai.aichi.jp":true,"ama.aichi.jp":true,"anjo.aichi.jp":true,"asuke.aichi.jp":true,"chiryu.aichi.jp":true,"chita.aichi.jp":true,"fuso.aichi.jp":true,"gamagori.aichi.jp":true,"handa.aichi.jp":true,"hazu.aichi.jp":true,"hekinan.aichi.jp":true,"higashiura.aichi.jp":true,"ichinomiya.aichi.jp":true,"inazawa.aichi.jp":true,"inuyama.aichi.jp":true,"isshiki.aichi.jp":true,"iwakura.aichi.jp":true,"kanie.aichi.jp":true,"kariya.aichi.jp":true,"kasugai.aichi.jp":true,"kira.aichi.jp":true,"kiyosu.aichi.jp":true,"komaki.aichi.jp":true,"konan.aichi.jp":true,"kota.aichi.jp":true,"mihama.aichi.jp":true,"miyoshi.aichi.jp":true,"nishio.aichi.jp":true,"nisshin.aichi.jp":true,"obu.aichi.jp":true,"oguchi.aichi.jp":true,"oharu.aichi.jp":true,"okazaki.aichi.jp":true,"owariasahi.aichi.jp":true,"seto.aichi.jp":true,"shikatsu.aichi.jp":true,"shinshiro.aichi.jp":true,"shitara.aichi.jp":true,"tahara.aichi.jp":true,"takahama.aichi.jp":true,"tobishima.aichi.jp":true,"toei.aichi.jp":true,"togo.aichi.jp":true,"tokai.aichi.jp":true,"tokoname.aichi.jp":true,"toyoake.aichi.jp":true,"toyohashi.aichi.jp":true,"toyokawa.aichi.jp":true,"toyone.aichi.jp":true,"toyota.aichi.jp":true,"tsushima.aichi.jp":true,"yatomi.aichi.jp":true,"akita.akita.jp":true,"daisen.akita.jp":true,"fujisato.akita.jp":true,"gojome.akita.jp":true,"hachirogata.akita.jp":true,"happou.akita.jp":true,"higashinaruse.akita.jp":true,"honjo.akita.jp":true,"honjyo.akita.jp":true,"ikawa.akita.jp":true,"kamikoani.akita.jp":true,"kamioka.akita.jp":true,"katagami.akita.jp":true,"kazuno.akita.jp":true,"kitaakita.akita.jp":true,"kosaka.akita.jp":true,"kyowa.akita.jp":true,"misato.akita.jp":true,"mitane.akita.jp":true,"moriyoshi.akita.jp":true,"nikaho.akita.jp":true,"noshiro.akita.jp":true,"odate.akita.jp":true,"oga.akita.jp":true,"ogata.akita.jp":true,"semboku.akita.jp":true,"yokote.akita.jp":true,"yurihonjo.akita.jp":true,"aomori.aomori.jp":true,"gonohe.aomori.jp":true,"hachinohe.aomori.jp":true,"hashikami.aomori.jp":true,"hiranai.aomori.jp":true,"hirosaki.aomori.jp":true,"itayanagi.aomori.jp":true,"kuroishi.aomori.jp":true,"misawa.aomori.jp":true,"mutsu.aomori.jp":true,"nakadomari.aomori.jp":true,"noheji.aomori.jp":true,"oirase.aomori.jp":true,"owani.aomori.jp":true,"rokunohe.aomori.jp":true,"sannohe.aomori.jp":true,"shichinohe.aomori.jp":true,"shingo.aomori.jp":true,"takko.aomori.jp":true,"towada.aomori.jp":true,"tsugaru.aomori.jp":true,"tsuruta.aomori.jp":true,"abiko.chiba.jp":true,"asahi.chiba.jp":true,"chonan.chiba.jp":true,"chosei.chiba.jp":true,"choshi.chiba.jp":true,"chuo.chiba.jp":true,"funabashi.chiba.jp":true,"futtsu.chiba.jp":true,"hanamigawa.chiba.jp":true,"ichihara.chiba.jp":true,"ichikawa.chiba.jp":true,"ichinomiya.chiba.jp":true,"inzai.chiba.jp":true,"isumi.chiba.jp":true,"kamagaya.chiba.jp":true,"kamogawa.chiba.jp":true,"kashiwa.chiba.jp":true,"katori.chiba.jp":true,"katsuura.chiba.jp":true,"kimitsu.chiba.jp":true,"kisarazu.chiba.jp":true,"kozaki.chiba.jp":true,"kujukuri.chiba.jp":true,"kyonan.chiba.jp":true,"matsudo.chiba.jp":true,"midori.chiba.jp":true,"mihama.chiba.jp":true,"minamiboso.chiba.jp":true,"mobara.chiba.jp":true,"mutsuzawa.chiba.jp":true,"nagara.chiba.jp":true,"nagareyama.chiba.jp":true,"narashino.chiba.jp":true,"narita.chiba.jp":true,"noda.chiba.jp":true,"oamishirasato.chiba.jp":true,"omigawa.chiba.jp":true,"onjuku.chiba.jp":true,"otaki.chiba.jp":true,"sakae.chiba.jp":true,"sakura.chiba.jp":true,"shimofusa.chiba.jp":true,"shirako.chiba.jp":true,"shiroi.chiba.jp":true,"shisui.chiba.jp":true,"sodegaura.chiba.jp":true,"sosa.chiba.jp":true,"tako.chiba.jp":true,"tateyama.chiba.jp":true,"togane.chiba.jp":true,"tohnosho.chiba.jp":true,"tomisato.chiba.jp":true,"urayasu.chiba.jp":true,"yachimata.chiba.jp":true,"yachiyo.chiba.jp":true,"yokaichiba.chiba.jp":true,"yokoshibahikari.chiba.jp":true,"yotsukaido.chiba.jp":true,"ainan.ehime.jp":true,"honai.ehime.jp":true,"ikata.ehime.jp":true,"imabari.ehime.jp":true,"iyo.ehime.jp":true,"kamijima.ehime.jp":true,"kihoku.ehime.jp":true,"kumakogen.ehime.jp":true,"masaki.ehime.jp":true,"matsuno.ehime.jp":true,"matsuyama.ehime.jp":true,"namikata.ehime.jp":true,"niihama.ehime.jp":true,"ozu.ehime.jp":true,"saijo.ehime.jp":true,"seiyo.ehime.jp":true,"shikokuchuo.ehime.jp":true,"tobe.ehime.jp":true,"toon.ehime.jp":true,"uchiko.ehime.jp":true,"uwajima.ehime.jp":true,"yawatahama.ehime.jp":true,"echizen.fukui.jp":true,"eiheiji.fukui.jp":true,"fukui.fukui.jp":true,"ikeda.fukui.jp":true,"katsuyama.fukui.jp":true,"mihama.fukui.jp":true,"minamiechizen.fukui.jp":true,"obama.fukui.jp":true,"ohi.fukui.jp":true,"ono.fukui.jp":true,"sabae.fukui.jp":true,"sakai.fukui.jp":true,"takahama.fukui.jp":true,"tsuruga.fukui.jp":true,"wakasa.fukui.jp":true,"ashiya.fukuoka.jp":true,"buzen.fukuoka.jp":true,"chikugo.fukuoka.jp":true,"chikuho.fukuoka.jp":true,"chikujo.fukuoka.jp":true,"chikushino.fukuoka.jp":true,"chikuzen.fukuoka.jp":true,"chuo.fukuoka.jp":true,"dazaifu.fukuoka.jp":true,"fukuchi.fukuoka.jp":true,"hakata.fukuoka.jp":true,"higashi.fukuoka.jp":true,"hirokawa.fukuoka.jp":true,"hisayama.fukuoka.jp":true,"iizuka.fukuoka.jp":true,"inatsuki.fukuoka.jp":true,"kaho.fukuoka.jp":true,"kasuga.fukuoka.jp":true,"kasuya.fukuoka.jp":true,"kawara.fukuoka.jp":true,"keisen.fukuoka.jp":true,"koga.fukuoka.jp":true,"kurate.fukuoka.jp":true,"kurogi.fukuoka.jp":true,"kurume.fukuoka.jp":true,"minami.fukuoka.jp":true,"miyako.fukuoka.jp":true,"miyama.fukuoka.jp":true,"miyawaka.fukuoka.jp":true,"mizumaki.fukuoka.jp":true,"munakata.fukuoka.jp":true,"nakagawa.fukuoka.jp":true,"nakama.fukuoka.jp":true,"nishi.fukuoka.jp":true,"nogata.fukuoka.jp":true,"ogori.fukuoka.jp":true,"okagaki.fukuoka.jp":true,"okawa.fukuoka.jp":true,"oki.fukuoka.jp":true,"omuta.fukuoka.jp":true,"onga.fukuoka.jp":true,"onojo.fukuoka.jp":true,"oto.fukuoka.jp":true,"saigawa.fukuoka.jp":true,"sasaguri.fukuoka.jp":true,"shingu.fukuoka.jp":true,"shinyoshitomi.fukuoka.jp":true,"shonai.fukuoka.jp":true,"soeda.fukuoka.jp":true,"sue.fukuoka.jp":true,"tachiarai.fukuoka.jp":true,"tagawa.fukuoka.jp":true,"takata.fukuoka.jp":true,"toho.fukuoka.jp":true,"toyotsu.fukuoka.jp":true,"tsuiki.fukuoka.jp":true,"ukiha.fukuoka.jp":true,"umi.fukuoka.jp":true,"usui.fukuoka.jp":true,"yamada.fukuoka.jp":true,"yame.fukuoka.jp":true,"yanagawa.fukuoka.jp":true,"yukuhashi.fukuoka.jp":true,"aizubange.fukushima.jp":true,"aizumisato.fukushima.jp":true,"aizuwakamatsu.fukushima.jp":true,"asakawa.fukushima.jp":true,"bandai.fukushima.jp":true,"date.fukushima.jp":true,"fukushima.fukushima.jp":true,"furudono.fukushima.jp":true,"futaba.fukushima.jp":true,"hanawa.fukushima.jp":true,"higashi.fukushima.jp":true,"hirata.fukushima.jp":true,"hirono.fukushima.jp":true,"iitate.fukushima.jp":true,"inawashiro.fukushima.jp":true,"ishikawa.fukushima.jp":true,"iwaki.fukushima.jp":true,"izumizaki.fukushima.jp":true,"kagamiishi.fukushima.jp":true,"kaneyama.fukushima.jp":true,"kawamata.fukushima.jp":true,"kitakata.fukushima.jp":true,"kitashiobara.fukushima.jp":true,"koori.fukushima.jp":true,"koriyama.fukushima.jp":true,"kunimi.fukushima.jp":true,"miharu.fukushima.jp":true,"mishima.fukushima.jp":true,"namie.fukushima.jp":true,"nango.fukushima.jp":true,"nishiaizu.fukushima.jp":true,"nishigo.fukushima.jp":true,"okuma.fukushima.jp":true,"omotego.fukushima.jp":true,"ono.fukushima.jp":true,"otama.fukushima.jp":true,"samegawa.fukushima.jp":true,"shimogo.fukushima.jp":true,"shirakawa.fukushima.jp":true,"showa.fukushima.jp":true,"soma.fukushima.jp":true,"sukagawa.fukushima.jp":true,"taishin.fukushima.jp":true,"tamakawa.fukushima.jp":true,"tanagura.fukushima.jp":true,"tenei.fukushima.jp":true,"yabuki.fukushima.jp":true,"yamato.fukushima.jp":true,"yamatsuri.fukushima.jp":true,"yanaizu.fukushima.jp":true,"yugawa.fukushima.jp":true,"anpachi.gifu.jp":true,"ena.gifu.jp":true,"gifu.gifu.jp":true,"ginan.gifu.jp":true,"godo.gifu.jp":true,"gujo.gifu.jp":true,"hashima.gifu.jp":true,"hichiso.gifu.jp":true,"hida.gifu.jp":true,"higashishirakawa.gifu.jp":true,"ibigawa.gifu.jp":true,"ikeda.gifu.jp":true,"kakamigahara.gifu.jp":true,"kani.gifu.jp":true,"kasahara.gifu.jp":true,"kasamatsu.gifu.jp":true,"kawaue.gifu.jp":true,"kitagata.gifu.jp":true,"mino.gifu.jp":true,"minokamo.gifu.jp":true,"mitake.gifu.jp":true,"mizunami.gifu.jp":true,"motosu.gifu.jp":true,"nakatsugawa.gifu.jp":true,"ogaki.gifu.jp":true,"sakahogi.gifu.jp":true,"seki.gifu.jp":true,"sekigahara.gifu.jp":true,"shirakawa.gifu.jp":true,"tajimi.gifu.jp":true,"takayama.gifu.jp":true,"tarui.gifu.jp":true,"toki.gifu.jp":true,"tomika.gifu.jp":true,"wanouchi.gifu.jp":true,"yamagata.gifu.jp":true,"yaotsu.gifu.jp":true,"yoro.gifu.jp":true,"annaka.gunma.jp":true,"chiyoda.gunma.jp":true,"fujioka.gunma.jp":true,"higashiagatsuma.gunma.jp":true,"isesaki.gunma.jp":true,"itakura.gunma.jp":true,"kanna.gunma.jp":true,"kanra.gunma.jp":true,"katashina.gunma.jp":true,"kawaba.gunma.jp":true,"kiryu.gunma.jp":true,"kusatsu.gunma.jp":true,"maebashi.gunma.jp":true,"meiwa.gunma.jp":true,"midori.gunma.jp":true,"minakami.gunma.jp":true,"naganohara.gunma.jp":true,"nakanojo.gunma.jp":true,"nanmoku.gunma.jp":true,"numata.gunma.jp":true,"oizumi.gunma.jp":true,"ora.gunma.jp":true,"ota.gunma.jp":true,"shibukawa.gunma.jp":true,"shimonita.gunma.jp":true,"shinto.gunma.jp":true,"showa.gunma.jp":true,"takasaki.gunma.jp":true,"takayama.gunma.jp":true,"tamamura.gunma.jp":true,"tatebayashi.gunma.jp":true,"tomioka.gunma.jp":true,"tsukiyono.gunma.jp":true,"tsumagoi.gunma.jp":true,"ueno.gunma.jp":true,"yoshioka.gunma.jp":true,"asaminami.hiroshima.jp":true,"daiwa.hiroshima.jp":true,"etajima.hiroshima.jp":true,"fuchu.hiroshima.jp":true,"fukuyama.hiroshima.jp":true,"hatsukaichi.hiroshima.jp":true,"higashihiroshima.hiroshima.jp":true,"hongo.hiroshima.jp":true,"jinsekikogen.hiroshima.jp":true,"kaita.hiroshima.jp":true,"kui.hiroshima.jp":true,"kumano.hiroshima.jp":true,"kure.hiroshima.jp":true,"mihara.hiroshima.jp":true,"miyoshi.hiroshima.jp":true,"naka.hiroshima.jp":true,"onomichi.hiroshima.jp":true,"osakikamijima.hiroshima.jp":true,"otake.hiroshima.jp":true,"saka.hiroshima.jp":true,"sera.hiroshima.jp":true,"seranishi.hiroshima.jp":true,"shinichi.hiroshima.jp":true,"shobara.hiroshima.jp":true,"takehara.hiroshima.jp":true,"abashiri.hokkaido.jp":true,"abira.hokkaido.jp":true,"aibetsu.hokkaido.jp":true,"akabira.hokkaido.jp":true,"akkeshi.hokkaido.jp":true,"asahikawa.hokkaido.jp":true,"ashibetsu.hokkaido.jp":true,"ashoro.hokkaido.jp":true,"assabu.hokkaido.jp":true,"atsuma.hokkaido.jp":true,"bibai.hokkaido.jp":true,"biei.hokkaido.jp":true,"bifuka.hokkaido.jp":true,"bihoro.hokkaido.jp":true,"biratori.hokkaido.jp":true,"chippubetsu.hokkaido.jp":true,"chitose.hokkaido.jp":true,"date.hokkaido.jp":true,"ebetsu.hokkaido.jp":true,"embetsu.hokkaido.jp":true,"eniwa.hokkaido.jp":true,"erimo.hokkaido.jp":true,"esan.hokkaido.jp":true,"esashi.hokkaido.jp":true,"fukagawa.hokkaido.jp":true,"fukushima.hokkaido.jp":true,"furano.hokkaido.jp":true,"furubira.hokkaido.jp":true,"haboro.hokkaido.jp":true,"hakodate.hokkaido.jp":true,"hamatonbetsu.hokkaido.jp":true,"hidaka.hokkaido.jp":true,"higashikagura.hokkaido.jp":true,"higashikawa.hokkaido.jp":true,"hiroo.hokkaido.jp":true,"hokuryu.hokkaido.jp":true,"hokuto.hokkaido.jp":true,"honbetsu.hokkaido.jp":true,"horokanai.hokkaido.jp":true,"horonobe.hokkaido.jp":true,"ikeda.hokkaido.jp":true,"imakane.hokkaido.jp":true,"ishikari.hokkaido.jp":true,"iwamizawa.hokkaido.jp":true,"iwanai.hokkaido.jp":true,"kamifurano.hokkaido.jp":true,"kamikawa.hokkaido.jp":true,"kamishihoro.hokkaido.jp":true,"kamisunagawa.hokkaido.jp":true,"kamoenai.hokkaido.jp":true,"kayabe.hokkaido.jp":true,"kembuchi.hokkaido.jp":true,"kikonai.hokkaido.jp":true,"kimobetsu.hokkaido.jp":true,"kitahiroshima.hokkaido.jp":true,"kitami.hokkaido.jp":true,"kiyosato.hokkaido.jp":true,"koshimizu.hokkaido.jp":true,"kunneppu.hokkaido.jp":true,"kuriyama.hokkaido.jp":true,"kuromatsunai.hokkaido.jp":true,"kushiro.hokkaido.jp":true,"kutchan.hokkaido.jp":true,"kyowa.hokkaido.jp":true,"mashike.hokkaido.jp":true,"matsumae.hokkaido.jp":true,"mikasa.hokkaido.jp":true,"minamifurano.hokkaido.jp":true,"mombetsu.hokkaido.jp":true,"moseushi.hokkaido.jp":true,"mukawa.hokkaido.jp":true,"muroran.hokkaido.jp":true,"naie.hokkaido.jp":true,"nakagawa.hokkaido.jp":true,"nakasatsunai.hokkaido.jp":true,"nakatombetsu.hokkaido.jp":true,"nanae.hokkaido.jp":true,"nanporo.hokkaido.jp":true,"nayoro.hokkaido.jp":true,"nemuro.hokkaido.jp":true,"niikappu.hokkaido.jp":true,"niki.hokkaido.jp":true,"nishiokoppe.hokkaido.jp":true,"noboribetsu.hokkaido.jp":true,"numata.hokkaido.jp":true,"obihiro.hokkaido.jp":true,"obira.hokkaido.jp":true,"oketo.hokkaido.jp":true,"okoppe.hokkaido.jp":true,"otaru.hokkaido.jp":true,"otobe.hokkaido.jp":true,"otofuke.hokkaido.jp":true,"otoineppu.hokkaido.jp":true,"oumu.hokkaido.jp":true,"ozora.hokkaido.jp":true,"pippu.hokkaido.jp":true,"rankoshi.hokkaido.jp":true,"rebun.hokkaido.jp":true,"rikubetsu.hokkaido.jp":true,"rishiri.hokkaido.jp":true,"rishirifuji.hokkaido.jp":true,"saroma.hokkaido.jp":true,"sarufutsu.hokkaido.jp":true,"shakotan.hokkaido.jp":true,"shari.hokkaido.jp":true,"shibecha.hokkaido.jp":true,"shibetsu.hokkaido.jp":true,"shikabe.hokkaido.jp":true,"shikaoi.hokkaido.jp":true,"shimamaki.hokkaido.jp":true,"shimizu.hokkaido.jp":true,"shimokawa.hokkaido.jp":true,"shinshinotsu.hokkaido.jp":true,"shintoku.hokkaido.jp":true,"shiranuka.hokkaido.jp":true,"shiraoi.hokkaido.jp":true,"shiriuchi.hokkaido.jp":true,"sobetsu.hokkaido.jp":true,"sunagawa.hokkaido.jp":true,"taiki.hokkaido.jp":true,"takasu.hokkaido.jp":true,"takikawa.hokkaido.jp":true,"takinoue.hokkaido.jp":true,"teshikaga.hokkaido.jp":true,"tobetsu.hokkaido.jp":true,"tohma.hokkaido.jp":true,"tomakomai.hokkaido.jp":true,"tomari.hokkaido.jp":true,"toya.hokkaido.jp":true,"toyako.hokkaido.jp":true,"toyotomi.hokkaido.jp":true,"toyoura.hokkaido.jp":true,"tsubetsu.hokkaido.jp":true,"tsukigata.hokkaido.jp":true,"urakawa.hokkaido.jp":true,"urausu.hokkaido.jp":true,"uryu.hokkaido.jp":true,"utashinai.hokkaido.jp":true,"wakkanai.hokkaido.jp":true,"wassamu.hokkaido.jp":true,"yakumo.hokkaido.jp":true,"yoichi.hokkaido.jp":true,"aioi.hyogo.jp":true,"akashi.hyogo.jp":true,"ako.hyogo.jp":true,"amagasaki.hyogo.jp":true,"aogaki.hyogo.jp":true,"asago.hyogo.jp":true,"ashiya.hyogo.jp":true,"awaji.hyogo.jp":true,"fukusaki.hyogo.jp":true,"goshiki.hyogo.jp":true,"harima.hyogo.jp":true,"himeji.hyogo.jp":true,"ichikawa.hyogo.jp":true,"inagawa.hyogo.jp":true,"itami.hyogo.jp":true,"kakogawa.hyogo.jp":true,"kamigori.hyogo.jp":true,"kamikawa.hyogo.jp":true,"kasai.hyogo.jp":true,"kasuga.hyogo.jp":true,"kawanishi.hyogo.jp":true,"miki.hyogo.jp":true,"minamiawaji.hyogo.jp":true,"nishinomiya.hyogo.jp":true,"nishiwaki.hyogo.jp":true,"ono.hyogo.jp":true,"sanda.hyogo.jp":true,"sannan.hyogo.jp":true,"sasayama.hyogo.jp":true,"sayo.hyogo.jp":true,"shingu.hyogo.jp":true,"shinonsen.hyogo.jp":true,"shiso.hyogo.jp":true,"sumoto.hyogo.jp":true,"taishi.hyogo.jp":true,"taka.hyogo.jp":true,"takarazuka.hyogo.jp":true,"takasago.hyogo.jp":true,"takino.hyogo.jp":true,"tamba.hyogo.jp":true,"tatsuno.hyogo.jp":true,"toyooka.hyogo.jp":true,"yabu.hyogo.jp":true,"yashiro.hyogo.jp":true,"yoka.hyogo.jp":true,"yokawa.hyogo.jp":true,"ami.ibaraki.jp":true,"asahi.ibaraki.jp":true,"bando.ibaraki.jp":true,"chikusei.ibaraki.jp":true,"daigo.ibaraki.jp":true,"fujishiro.ibaraki.jp":true,"hitachi.ibaraki.jp":true,"hitachinaka.ibaraki.jp":true,"hitachiomiya.ibaraki.jp":true,"hitachiota.ibaraki.jp":true,"ibaraki.ibaraki.jp":true,"ina.ibaraki.jp":true,"inashiki.ibaraki.jp":true,"itako.ibaraki.jp":true,"iwama.ibaraki.jp":true,"joso.ibaraki.jp":true,"kamisu.ibaraki.jp":true,"kasama.ibaraki.jp":true,"kashima.ibaraki.jp":true,"kasumigaura.ibaraki.jp":true,"koga.ibaraki.jp":true,"miho.ibaraki.jp":true,"mito.ibaraki.jp":true,"moriya.ibaraki.jp":true,"naka.ibaraki.jp":true,"namegata.ibaraki.jp":true,"oarai.ibaraki.jp":true,"ogawa.ibaraki.jp":true,"omitama.ibaraki.jp":true,"ryugasaki.ibaraki.jp":true,"sakai.ibaraki.jp":true,"sakuragawa.ibaraki.jp":true,"shimodate.ibaraki.jp":true,"shimotsuma.ibaraki.jp":true,"shirosato.ibaraki.jp":true,"sowa.ibaraki.jp":true,"suifu.ibaraki.jp":true,"takahagi.ibaraki.jp":true,"tamatsukuri.ibaraki.jp":true,"tokai.ibaraki.jp":true,"tomobe.ibaraki.jp":true,"tone.ibaraki.jp":true,"toride.ibaraki.jp":true,"tsuchiura.ibaraki.jp":true,"tsukuba.ibaraki.jp":true,"uchihara.ibaraki.jp":true,"ushiku.ibaraki.jp":true,"yachiyo.ibaraki.jp":true,"yamagata.ibaraki.jp":true,"yawara.ibaraki.jp":true,"yuki.ibaraki.jp":true,"anamizu.ishikawa.jp":true,"hakui.ishikawa.jp":true,"hakusan.ishikawa.jp":true,"kaga.ishikawa.jp":true,"kahoku.ishikawa.jp":true,"kanazawa.ishikawa.jp":true,"kawakita.ishikawa.jp":true,"komatsu.ishikawa.jp":true,"nakanoto.ishikawa.jp":true,"nanao.ishikawa.jp":true,"nomi.ishikawa.jp":true,"nonoichi.ishikawa.jp":true,"noto.ishikawa.jp":true,"shika.ishikawa.jp":true,"suzu.ishikawa.jp":true,"tsubata.ishikawa.jp":true,"tsurugi.ishikawa.jp":true,"uchinada.ishikawa.jp":true,"wajima.ishikawa.jp":true,"fudai.iwate.jp":true,"fujisawa.iwate.jp":true,"hanamaki.iwate.jp":true,"hiraizumi.iwate.jp":true,"hirono.iwate.jp":true,"ichinohe.iwate.jp":true,"ichinoseki.iwate.jp":true,"iwaizumi.iwate.jp":true,"iwate.iwate.jp":true,"joboji.iwate.jp":true,"kamaishi.iwate.jp":true,"kanegasaki.iwate.jp":true,"karumai.iwate.jp":true,"kawai.iwate.jp":true,"kitakami.iwate.jp":true,"kuji.iwate.jp":true,"kunohe.iwate.jp":true,"kuzumaki.iwate.jp":true,"miyako.iwate.jp":true,"mizusawa.iwate.jp":true,"morioka.iwate.jp":true,"ninohe.iwate.jp":true,"noda.iwate.jp":true,"ofunato.iwate.jp":true,"oshu.iwate.jp":true,"otsuchi.iwate.jp":true,"rikuzentakata.iwate.jp":true,"shiwa.iwate.jp":true,"shizukuishi.iwate.jp":true,"sumita.iwate.jp":true,"tanohata.iwate.jp":true,"tono.iwate.jp":true,"yahaba.iwate.jp":true,"yamada.iwate.jp":true,"ayagawa.kagawa.jp":true,"higashikagawa.kagawa.jp":true,"kanonji.kagawa.jp":true,"kotohira.kagawa.jp":true,"manno.kagawa.jp":true,"marugame.kagawa.jp":true,"mitoyo.kagawa.jp":true,"naoshima.kagawa.jp":true,"sanuki.kagawa.jp":true,"tadotsu.kagawa.jp":true,"takamatsu.kagawa.jp":true,"tonosho.kagawa.jp":true,"uchinomi.kagawa.jp":true,"utazu.kagawa.jp":true,"zentsuji.kagawa.jp":true,"akune.kagoshima.jp":true,"amami.kagoshima.jp":true,"hioki.kagoshima.jp":true,"isa.kagoshima.jp":true,"isen.kagoshima.jp":true,"izumi.kagoshima.jp":true,"kagoshima.kagoshima.jp":true,"kanoya.kagoshima.jp":true,"kawanabe.kagoshima.jp":true,"kinko.kagoshima.jp":true,"kouyama.kagoshima.jp":true,"makurazaki.kagoshima.jp":true,"matsumoto.kagoshima.jp":true,"minamitane.kagoshima.jp":true,"nakatane.kagoshima.jp":true,"nishinoomote.kagoshima.jp":true,"satsumasendai.kagoshima.jp":true,"soo.kagoshima.jp":true,"tarumizu.kagoshima.jp":true,"yusui.kagoshima.jp":true,"aikawa.kanagawa.jp":true,"atsugi.kanagawa.jp":true,"ayase.kanagawa.jp":true,"chigasaki.kanagawa.jp":true,"ebina.kanagawa.jp":true,"fujisawa.kanagawa.jp":true,"hadano.kanagawa.jp":true,"hakone.kanagawa.jp":true,"hiratsuka.kanagawa.jp":true,"isehara.kanagawa.jp":true,"kaisei.kanagawa.jp":true,"kamakura.kanagawa.jp":true,"kiyokawa.kanagawa.jp":true,"matsuda.kanagawa.jp":true,"minamiashigara.kanagawa.jp":true,"miura.kanagawa.jp":true,"nakai.kanagawa.jp":true,"ninomiya.kanagawa.jp":true,"odawara.kanagawa.jp":true,"oi.kanagawa.jp":true,"oiso.kanagawa.jp":true,"sagamihara.kanagawa.jp":true,"samukawa.kanagawa.jp":true,"tsukui.kanagawa.jp":true,"yamakita.kanagawa.jp":true,"yamato.kanagawa.jp":true,"yokosuka.kanagawa.jp":true,"yugawara.kanagawa.jp":true,"zama.kanagawa.jp":true,"zushi.kanagawa.jp":true,"aki.kochi.jp":true,"geisei.kochi.jp":true,"hidaka.kochi.jp":true,"higashitsuno.kochi.jp":true,"ino.kochi.jp":true,"kagami.kochi.jp":true,"kami.kochi.jp":true,"kitagawa.kochi.jp":true,"kochi.kochi.jp":true,"mihara.kochi.jp":true,"motoyama.kochi.jp":true,"muroto.kochi.jp":true,"nahari.kochi.jp":true,"nakamura.kochi.jp":true,"nankoku.kochi.jp":true,"nishitosa.kochi.jp":true,"niyodogawa.kochi.jp":true,"ochi.kochi.jp":true,"okawa.kochi.jp":true,"otoyo.kochi.jp":true,"otsuki.kochi.jp":true,"sakawa.kochi.jp":true,"sukumo.kochi.jp":true,"susaki.kochi.jp":true,"tosa.kochi.jp":true,"tosashimizu.kochi.jp":true,"toyo.kochi.jp":true,"tsuno.kochi.jp":true,"umaji.kochi.jp":true,"yasuda.kochi.jp":true,"yusuhara.kochi.jp":true,"amakusa.kumamoto.jp":true,"arao.kumamoto.jp":true,"aso.kumamoto.jp":true,"choyo.kumamoto.jp":true,"gyokuto.kumamoto.jp":true,"hitoyoshi.kumamoto.jp":true,"kamiamakusa.kumamoto.jp":true,"kashima.kumamoto.jp":true,"kikuchi.kumamoto.jp":true,"kosa.kumamoto.jp":true,"kumamoto.kumamoto.jp":true,"mashiki.kumamoto.jp":true,"mifune.kumamoto.jp":true,"minamata.kumamoto.jp":true,"minamioguni.kumamoto.jp":true,"nagasu.kumamoto.jp":true,"nishihara.kumamoto.jp":true,"oguni.kumamoto.jp":true,"ozu.kumamoto.jp":true,"sumoto.kumamoto.jp":true,"takamori.kumamoto.jp":true,"uki.kumamoto.jp":true,"uto.kumamoto.jp":true,"yamaga.kumamoto.jp":true,"yamato.kumamoto.jp":true,"yatsushiro.kumamoto.jp":true,"ayabe.kyoto.jp":true,"fukuchiyama.kyoto.jp":true,"higashiyama.kyoto.jp":true,"ide.kyoto.jp":true,"ine.kyoto.jp":true,"joyo.kyoto.jp":true,"kameoka.kyoto.jp":true,"kamo.kyoto.jp":true,"kita.kyoto.jp":true,"kizu.kyoto.jp":true,"kumiyama.kyoto.jp":true,"kyotamba.kyoto.jp":true,"kyotanabe.kyoto.jp":true,"kyotango.kyoto.jp":true,"maizuru.kyoto.jp":true,"minami.kyoto.jp":true,"minamiyamashiro.kyoto.jp":true,"miyazu.kyoto.jp":true,"muko.kyoto.jp":true,"nagaokakyo.kyoto.jp":true,"nakagyo.kyoto.jp":true,"nantan.kyoto.jp":true,"oyamazaki.kyoto.jp":true,"sakyo.kyoto.jp":true,"seika.kyoto.jp":true,"tanabe.kyoto.jp":true,"uji.kyoto.jp":true,"ujitawara.kyoto.jp":true,"wazuka.kyoto.jp":true,"yamashina.kyoto.jp":true,"yawata.kyoto.jp":true,"asahi.mie.jp":true,"inabe.mie.jp":true,"ise.mie.jp":true,"kameyama.mie.jp":true,"kawagoe.mie.jp":true,"kiho.mie.jp":true,"kisosaki.mie.jp":true,"kiwa.mie.jp":true,"komono.mie.jp":true,"kumano.mie.jp":true,"kuwana.mie.jp":true,"matsusaka.mie.jp":true,"meiwa.mie.jp":true,"mihama.mie.jp":true,"minamiise.mie.jp":true,"misugi.mie.jp":true,"miyama.mie.jp":true,"nabari.mie.jp":true,"shima.mie.jp":true,"suzuka.mie.jp":true,"tado.mie.jp":true,"taiki.mie.jp":true,"taki.mie.jp":true,"tamaki.mie.jp":true,"toba.mie.jp":true,"tsu.mie.jp":true,"udono.mie.jp":true,"ureshino.mie.jp":true,"watarai.mie.jp":true,"yokkaichi.mie.jp":true,"furukawa.miyagi.jp":true,"higashimatsushima.miyagi.jp":true,"ishinomaki.miyagi.jp":true,"iwanuma.miyagi.jp":true,"kakuda.miyagi.jp":true,"kami.miyagi.jp":true,"kawasaki.miyagi.jp":true,"kesennuma.miyagi.jp":true,"marumori.miyagi.jp":true,"matsushima.miyagi.jp":true,"minamisanriku.miyagi.jp":true,"misato.miyagi.jp":true,"murata.miyagi.jp":true,"natori.miyagi.jp":true,"ogawara.miyagi.jp":true,"ohira.miyagi.jp":true,"onagawa.miyagi.jp":true,"osaki.miyagi.jp":true,"rifu.miyagi.jp":true,"semine.miyagi.jp":true,"shibata.miyagi.jp":true,"shichikashuku.miyagi.jp":true,"shikama.miyagi.jp":true,"shiogama.miyagi.jp":true,"shiroishi.miyagi.jp":true,"tagajo.miyagi.jp":true,"taiwa.miyagi.jp":true,"tome.miyagi.jp":true,"tomiya.miyagi.jp":true,"wakuya.miyagi.jp":true,"watari.miyagi.jp":true,"yamamoto.miyagi.jp":true,"zao.miyagi.jp":true,"aya.miyazaki.jp":true,"ebino.miyazaki.jp":true,"gokase.miyazaki.jp":true,"hyuga.miyazaki.jp":true,"kadogawa.miyazaki.jp":true,"kawaminami.miyazaki.jp":true,"kijo.miyazaki.jp":true,"kitagawa.miyazaki.jp":true,"kitakata.miyazaki.jp":true,"kitaura.miyazaki.jp":true,"kobayashi.miyazaki.jp":true,"kunitomi.miyazaki.jp":true,"kushima.miyazaki.jp":true,"mimata.miyazaki.jp":true,"miyakonojo.miyazaki.jp":true,"miyazaki.miyazaki.jp":true,"morotsuka.miyazaki.jp":true,"nichinan.miyazaki.jp":true,"nishimera.miyazaki.jp":true,"nobeoka.miyazaki.jp":true,"saito.miyazaki.jp":true,"shiiba.miyazaki.jp":true,"shintomi.miyazaki.jp":true,"takaharu.miyazaki.jp":true,"takanabe.miyazaki.jp":true,"takazaki.miyazaki.jp":true,"tsuno.miyazaki.jp":true,"achi.nagano.jp":true,"agematsu.nagano.jp":true,"anan.nagano.jp":true,"aoki.nagano.jp":true,"asahi.nagano.jp":true,"azumino.nagano.jp":true,"chikuhoku.nagano.jp":true,"chikuma.nagano.jp":true,"chino.nagano.jp":true,"fujimi.nagano.jp":true,"hakuba.nagano.jp":true,"hara.nagano.jp":true,"hiraya.nagano.jp":true,"iida.nagano.jp":true,"iijima.nagano.jp":true,"iiyama.nagano.jp":true,"iizuna.nagano.jp":true,"ikeda.nagano.jp":true,"ikusaka.nagano.jp":true,"ina.nagano.jp":true,"karuizawa.nagano.jp":true,"kawakami.nagano.jp":true,"kiso.nagano.jp":true,"kisofukushima.nagano.jp":true,"kitaaiki.nagano.jp":true,"komagane.nagano.jp":true,"komoro.nagano.jp":true,"matsukawa.nagano.jp":true,"matsumoto.nagano.jp":true,"miasa.nagano.jp":true,"minamiaiki.nagano.jp":true,"minamimaki.nagano.jp":true,"minamiminowa.nagano.jp":true,"minowa.nagano.jp":true,"miyada.nagano.jp":true,"miyota.nagano.jp":true,"mochizuki.nagano.jp":true,"nagano.nagano.jp":true,"nagawa.nagano.jp":true,"nagiso.nagano.jp":true,"nakagawa.nagano.jp":true,"nakano.nagano.jp":true,"nozawaonsen.nagano.jp":true,"obuse.nagano.jp":true,"ogawa.nagano.jp":true,"okaya.nagano.jp":true,"omachi.nagano.jp":true,"omi.nagano.jp":true,"ookuwa.nagano.jp":true,"ooshika.nagano.jp":true,"otaki.nagano.jp":true,"otari.nagano.jp":true,"sakae.nagano.jp":true,"sakaki.nagano.jp":true,"saku.nagano.jp":true,"sakuho.nagano.jp":true,"shimosuwa.nagano.jp":true,"shinanomachi.nagano.jp":true,"shiojiri.nagano.jp":true,"suwa.nagano.jp":true,"suzaka.nagano.jp":true,"takagi.nagano.jp":true,"takamori.nagano.jp":true,"takayama.nagano.jp":true,"tateshina.nagano.jp":true,"tatsuno.nagano.jp":true,"togakushi.nagano.jp":true,"togura.nagano.jp":true,"tomi.nagano.jp":true,"ueda.nagano.jp":true,"wada.nagano.jp":true,"yamagata.nagano.jp":true,"yamanouchi.nagano.jp":true,"yasaka.nagano.jp":true,"yasuoka.nagano.jp":true,"chijiwa.nagasaki.jp":true,"futsu.nagasaki.jp":true,"goto.nagasaki.jp":true,"hasami.nagasaki.jp":true,"hirado.nagasaki.jp":true,"iki.nagasaki.jp":true,"isahaya.nagasaki.jp":true,"kawatana.nagasaki.jp":true,"kuchinotsu.nagasaki.jp":true,"matsuura.nagasaki.jp":true,"nagasaki.nagasaki.jp":true,"obama.nagasaki.jp":true,"omura.nagasaki.jp":true,"oseto.nagasaki.jp":true,"saikai.nagasaki.jp":true,"sasebo.nagasaki.jp":true,"seihi.nagasaki.jp":true,"shimabara.nagasaki.jp":true,"shinkamigoto.nagasaki.jp":true,"togitsu.nagasaki.jp":true,"tsushima.nagasaki.jp":true,"unzen.nagasaki.jp":true,"ando.nara.jp":true,"gose.nara.jp":true,"heguri.nara.jp":true,"higashiyoshino.nara.jp":true,"ikaruga.nara.jp":true,"ikoma.nara.jp":true,"kamikitayama.nara.jp":true,"kanmaki.nara.jp":true,"kashiba.nara.jp":true,"kashihara.nara.jp":true,"katsuragi.nara.jp":true,"kawai.nara.jp":true,"kawakami.nara.jp":true,"kawanishi.nara.jp":true,"koryo.nara.jp":true,"kurotaki.nara.jp":true,"mitsue.nara.jp":true,"miyake.nara.jp":true,"nara.nara.jp":true,"nosegawa.nara.jp":true,"oji.nara.jp":true,"ouda.nara.jp":true,"oyodo.nara.jp":true,"sakurai.nara.jp":true,"sango.nara.jp":true,"shimoichi.nara.jp":true,"shimokitayama.nara.jp":true,"shinjo.nara.jp":true,"soni.nara.jp":true,"takatori.nara.jp":true,"tawaramoto.nara.jp":true,"tenkawa.nara.jp":true,"tenri.nara.jp":true,"uda.nara.jp":true,"yamatokoriyama.nara.jp":true,"yamatotakada.nara.jp":true,"yamazoe.nara.jp":true,"yoshino.nara.jp":true,"aga.niigata.jp":true,"agano.niigata.jp":true,"gosen.niigata.jp":true,"itoigawa.niigata.jp":true,"izumozaki.niigata.jp":true,"joetsu.niigata.jp":true,"kamo.niigata.jp":true,"kariwa.niigata.jp":true,"kashiwazaki.niigata.jp":true,"minamiuonuma.niigata.jp":true,"mitsuke.niigata.jp":true,"muika.niigata.jp":true,"murakami.niigata.jp":true,"myoko.niigata.jp":true,"nagaoka.niigata.jp":true,"niigata.niigata.jp":true,"ojiya.niigata.jp":true,"omi.niigata.jp":true,"sado.niigata.jp":true,"sanjo.niigata.jp":true,"seiro.niigata.jp":true,"seirou.niigata.jp":true,"sekikawa.niigata.jp":true,"shibata.niigata.jp":true,"tagami.niigata.jp":true,"tainai.niigata.jp":true,"tochio.niigata.jp":true,"tokamachi.niigata.jp":true,"tsubame.niigata.jp":true,"tsunan.niigata.jp":true,"uonuma.niigata.jp":true,"yahiko.niigata.jp":true,"yoita.niigata.jp":true,"yuzawa.niigata.jp":true,"beppu.oita.jp":true,"bungoono.oita.jp":true,"bungotakada.oita.jp":true,"hasama.oita.jp":true,"hiji.oita.jp":true,"himeshima.oita.jp":true,"hita.oita.jp":true,"kamitsue.oita.jp":true,"kokonoe.oita.jp":true,"kuju.oita.jp":true,"kunisaki.oita.jp":true,"kusu.oita.jp":true,"oita.oita.jp":true,"saiki.oita.jp":true,"taketa.oita.jp":true,"tsukumi.oita.jp":true,"usa.oita.jp":true,"usuki.oita.jp":true,"yufu.oita.jp":true,"akaiwa.okayama.jp":true,"asakuchi.okayama.jp":true,"bizen.okayama.jp":true,"hayashima.okayama.jp":true,"ibara.okayama.jp":true,"kagamino.okayama.jp":true,"kasaoka.okayama.jp":true,"kibichuo.okayama.jp":true,"kumenan.okayama.jp":true,"kurashiki.okayama.jp":true,"maniwa.okayama.jp":true,"misaki.okayama.jp":true,"nagi.okayama.jp":true,"niimi.okayama.jp":true,"nishiawakura.okayama.jp":true,"okayama.okayama.jp":true,"satosho.okayama.jp":true,"setouchi.okayama.jp":true,"shinjo.okayama.jp":true,"shoo.okayama.jp":true,"soja.okayama.jp":true,"takahashi.okayama.jp":true,"tamano.okayama.jp":true,"tsuyama.okayama.jp":true,"wake.okayama.jp":true,"yakage.okayama.jp":true,"aguni.okinawa.jp":true,"ginowan.okinawa.jp":true,"ginoza.okinawa.jp":true,"gushikami.okinawa.jp":true,"haebaru.okinawa.jp":true,"higashi.okinawa.jp":true,"hirara.okinawa.jp":true,"iheya.okinawa.jp":true,"ishigaki.okinawa.jp":true,"ishikawa.okinawa.jp":true,"itoman.okinawa.jp":true,"izena.okinawa.jp":true,"kadena.okinawa.jp":true,"kin.okinawa.jp":true,"kitadaito.okinawa.jp":true,"kitanakagusuku.okinawa.jp":true,"kumejima.okinawa.jp":true,"kunigami.okinawa.jp":true,"minamidaito.okinawa.jp":true,"motobu.okinawa.jp":true,"nago.okinawa.jp":true,"naha.okinawa.jp":true,"nakagusuku.okinawa.jp":true,"nakijin.okinawa.jp":true,"nanjo.okinawa.jp":true,"nishihara.okinawa.jp":true,"ogimi.okinawa.jp":true,"okinawa.okinawa.jp":true,"onna.okinawa.jp":true,"shimoji.okinawa.jp":true,"taketomi.okinawa.jp":true,"tarama.okinawa.jp":true,"tokashiki.okinawa.jp":true,"tomigusuku.okinawa.jp":true,"tonaki.okinawa.jp":true,"urasoe.okinawa.jp":true,"uruma.okinawa.jp":true,"yaese.okinawa.jp":true,"yomitan.okinawa.jp":true,"yonabaru.okinawa.jp":true,"yonaguni.okinawa.jp":true,"zamami.okinawa.jp":true,"abeno.osaka.jp":true,"chihayaakasaka.osaka.jp":true,"chuo.osaka.jp":true,"daito.osaka.jp":true,"fujiidera.osaka.jp":true,"habikino.osaka.jp":true,"hannan.osaka.jp":true,"higashiosaka.osaka.jp":true,"higashisumiyoshi.osaka.jp":true,"higashiyodogawa.osaka.jp":true,"hirakata.osaka.jp":true,"ibaraki.osaka.jp":true,"ikeda.osaka.jp":true,"izumi.osaka.jp":true,"izumiotsu.osaka.jp":true,"izumisano.osaka.jp":true,"kadoma.osaka.jp":true,"kaizuka.osaka.jp":true,"kanan.osaka.jp":true,"kashiwara.osaka.jp":true,"katano.osaka.jp":true,"kawachinagano.osaka.jp":true,"kishiwada.osaka.jp":true,"kita.osaka.jp":true,"kumatori.osaka.jp":true,"matsubara.osaka.jp":true,"minato.osaka.jp":true,"minoh.osaka.jp":true,"misaki.osaka.jp":true,"moriguchi.osaka.jp":true,"neyagawa.osaka.jp":true,"nishi.osaka.jp":true,"nose.osaka.jp":true,"osakasayama.osaka.jp":true,"sakai.osaka.jp":true,"sayama.osaka.jp":true,"sennan.osaka.jp":true,"settsu.osaka.jp":true,"shijonawate.osaka.jp":true,"shimamoto.osaka.jp":true,"suita.osaka.jp":true,"tadaoka.osaka.jp":true,"taishi.osaka.jp":true,"tajiri.osaka.jp":true,"takaishi.osaka.jp":true,"takatsuki.osaka.jp":true,"tondabayashi.osaka.jp":true,"toyonaka.osaka.jp":true,"toyono.osaka.jp":true,"yao.osaka.jp":true,"ariake.saga.jp":true,"arita.saga.jp":true,"fukudomi.saga.jp":true,"genkai.saga.jp":true,"hamatama.saga.jp":true,"hizen.saga.jp":true,"imari.saga.jp":true,"kamimine.saga.jp":true,"kanzaki.saga.jp":true,"karatsu.saga.jp":true,"kashima.saga.jp":true,"kitagata.saga.jp":true,"kitahata.saga.jp":true,"kiyama.saga.jp":true,"kouhoku.saga.jp":true,"kyuragi.saga.jp":true,"nishiarita.saga.jp":true,"ogi.saga.jp":true,"omachi.saga.jp":true,"ouchi.saga.jp":true,"saga.saga.jp":true,"shiroishi.saga.jp":true,"taku.saga.jp":true,"tara.saga.jp":true,"tosu.saga.jp":true,"yoshinogari.saga.jp":true,"arakawa.saitama.jp":true,"asaka.saitama.jp":true,"chichibu.saitama.jp":true,"fujimi.saitama.jp":true,"fujimino.saitama.jp":true,"fukaya.saitama.jp":true,"hanno.saitama.jp":true,"hanyu.saitama.jp":true,"hasuda.saitama.jp":true,"hatogaya.saitama.jp":true,"hatoyama.saitama.jp":true,"hidaka.saitama.jp":true,"higashichichibu.saitama.jp":true,"higashimatsuyama.saitama.jp":true,"honjo.saitama.jp":true,"ina.saitama.jp":true,"iruma.saitama.jp":true,"iwatsuki.saitama.jp":true,"kamiizumi.saitama.jp":true,"kamikawa.saitama.jp":true,"kamisato.saitama.jp":true,"kasukabe.saitama.jp":true,"kawagoe.saitama.jp":true,"kawaguchi.saitama.jp":true,"kawajima.saitama.jp":true,"kazo.saitama.jp":true,"kitamoto.saitama.jp":true,"koshigaya.saitama.jp":true,"kounosu.saitama.jp":true,"kuki.saitama.jp":true,"kumagaya.saitama.jp":true,"matsubushi.saitama.jp":true,"minano.saitama.jp":true,"misato.saitama.jp":true,"miyashiro.saitama.jp":true,"miyoshi.saitama.jp":true,"moroyama.saitama.jp":true,"nagatoro.saitama.jp":true,"namegawa.saitama.jp":true,"niiza.saitama.jp":true,"ogano.saitama.jp":true,"ogawa.saitama.jp":true,"ogose.saitama.jp":true,"okegawa.saitama.jp":true,"omiya.saitama.jp":true,"otaki.saitama.jp":true,"ranzan.saitama.jp":true,"ryokami.saitama.jp":true,"saitama.saitama.jp":true,"sakado.saitama.jp":true,"satte.saitama.jp":true,"sayama.saitama.jp":true,"shiki.saitama.jp":true,"shiraoka.saitama.jp":true,"soka.saitama.jp":true,"sugito.saitama.jp":true,"toda.saitama.jp":true,"tokigawa.saitama.jp":true,"tokorozawa.saitama.jp":true,"tsurugashima.saitama.jp":true,"urawa.saitama.jp":true,"warabi.saitama.jp":true,"yashio.saitama.jp":true,"yokoze.saitama.jp":true,"yono.saitama.jp":true,"yorii.saitama.jp":true,"yoshida.saitama.jp":true,"yoshikawa.saitama.jp":true,"yoshimi.saitama.jp":true,"aisho.shiga.jp":true,"gamo.shiga.jp":true,"higashiomi.shiga.jp":true,"hikone.shiga.jp":true,"koka.shiga.jp":true,"konan.shiga.jp":true,"kosei.shiga.jp":true,"koto.shiga.jp":true,"kusatsu.shiga.jp":true,"maibara.shiga.jp":true,"moriyama.shiga.jp":true,"nagahama.shiga.jp":true,"nishiazai.shiga.jp":true,"notogawa.shiga.jp":true,"omihachiman.shiga.jp":true,"otsu.shiga.jp":true,"ritto.shiga.jp":true,"ryuoh.shiga.jp":true,"takashima.shiga.jp":true,"takatsuki.shiga.jp":true,"torahime.shiga.jp":true,"toyosato.shiga.jp":true,"yasu.shiga.jp":true,"akagi.shimane.jp":true,"ama.shimane.jp":true,"gotsu.shimane.jp":true,"hamada.shimane.jp":true,"higashiizumo.shimane.jp":true,"hikawa.shimane.jp":true,"hikimi.shimane.jp":true,"izumo.shimane.jp":true,"kakinoki.shimane.jp":true,"masuda.shimane.jp":true,"matsue.shimane.jp":true,"misato.shimane.jp":true,"nishinoshima.shimane.jp":true,"ohda.shimane.jp":true,"okinoshima.shimane.jp":true,"okuizumo.shimane.jp":true,"shimane.shimane.jp":true,"tamayu.shimane.jp":true,"tsuwano.shimane.jp":true,"unnan.shimane.jp":true,"yakumo.shimane.jp":true,"yasugi.shimane.jp":true,"yatsuka.shimane.jp":true,"arai.shizuoka.jp":true,"atami.shizuoka.jp":true,"fuji.shizuoka.jp":true,"fujieda.shizuoka.jp":true,"fujikawa.shizuoka.jp":true,"fujinomiya.shizuoka.jp":true,"fukuroi.shizuoka.jp":true,"gotemba.shizuoka.jp":true,"haibara.shizuoka.jp":true,"hamamatsu.shizuoka.jp":true,"higashiizu.shizuoka.jp":true,"ito.shizuoka.jp":true,"iwata.shizuoka.jp":true,"izu.shizuoka.jp":true,"izunokuni.shizuoka.jp":true,"kakegawa.shizuoka.jp":true,"kannami.shizuoka.jp":true,"kawanehon.shizuoka.jp":true,"kawazu.shizuoka.jp":true,"kikugawa.shizuoka.jp":true,"kosai.shizuoka.jp":true,"makinohara.shizuoka.jp":true,"matsuzaki.shizuoka.jp":true,"minamiizu.shizuoka.jp":true,"mishima.shizuoka.jp":true,"morimachi.shizuoka.jp":true,"nishiizu.shizuoka.jp":true,"numazu.shizuoka.jp":true,"omaezaki.shizuoka.jp":true,"shimada.shizuoka.jp":true,"shimizu.shizuoka.jp":true,"shimoda.shizuoka.jp":true,"shizuoka.shizuoka.jp":true,"susono.shizuoka.jp":true,"yaizu.shizuoka.jp":true,"yoshida.shizuoka.jp":true,"ashikaga.tochigi.jp":true,"bato.tochigi.jp":true,"haga.tochigi.jp":true,"ichikai.tochigi.jp":true,"iwafune.tochigi.jp":true,"kaminokawa.tochigi.jp":true,"kanuma.tochigi.jp":true,"karasuyama.tochigi.jp":true,"kuroiso.tochigi.jp":true,"mashiko.tochigi.jp":true,"mibu.tochigi.jp":true,"moka.tochigi.jp":true,"motegi.tochigi.jp":true,"nasu.tochigi.jp":true,"nasushiobara.tochigi.jp":true,"nikko.tochigi.jp":true,"nishikata.tochigi.jp":true,"nogi.tochigi.jp":true,"ohira.tochigi.jp":true,"ohtawara.tochigi.jp":true,"oyama.tochigi.jp":true,"sakura.tochigi.jp":true,"sano.tochigi.jp":true,"shimotsuke.tochigi.jp":true,"shioya.tochigi.jp":true,"takanezawa.tochigi.jp":true,"tochigi.tochigi.jp":true,"tsuga.tochigi.jp":true,"ujiie.tochigi.jp":true,"utsunomiya.tochigi.jp":true,"yaita.tochigi.jp":true,"aizumi.tokushima.jp":true,"anan.tokushima.jp":true,"ichiba.tokushima.jp":true,"itano.tokushima.jp":true,"kainan.tokushima.jp":true,"komatsushima.tokushima.jp":true,"matsushige.tokushima.jp":true,"mima.tokushima.jp":true,"minami.tokushima.jp":true,"miyoshi.tokushima.jp":true,"mugi.tokushima.jp":true,"nakagawa.tokushima.jp":true,"naruto.tokushima.jp":true,"sanagochi.tokushima.jp":true,"shishikui.tokushima.jp":true,"tokushima.tokushima.jp":true,"wajiki.tokushima.jp":true,"adachi.tokyo.jp":true,"akiruno.tokyo.jp":true,"akishima.tokyo.jp":true,"aogashima.tokyo.jp":true,"arakawa.tokyo.jp":true,"bunkyo.tokyo.jp":true,"chiyoda.tokyo.jp":true,"chofu.tokyo.jp":true,"chuo.tokyo.jp":true,"edogawa.tokyo.jp":true,"fuchu.tokyo.jp":true,"fussa.tokyo.jp":true,"hachijo.tokyo.jp":true,"hachioji.tokyo.jp":true,"hamura.tokyo.jp":true,"higashikurume.tokyo.jp":true,"higashimurayama.tokyo.jp":true,"higashiyamato.tokyo.jp":true,"hino.tokyo.jp":true,"hinode.tokyo.jp":true,"hinohara.tokyo.jp":true,"inagi.tokyo.jp":true,"itabashi.tokyo.jp":true,"katsushika.tokyo.jp":true,"kita.tokyo.jp":true,"kiyose.tokyo.jp":true,"kodaira.tokyo.jp":true,"koganei.tokyo.jp":true,"kokubunji.tokyo.jp":true,"komae.tokyo.jp":true,"koto.tokyo.jp":true,"kouzushima.tokyo.jp":true,"kunitachi.tokyo.jp":true,"machida.tokyo.jp":true,"meguro.tokyo.jp":true,"minato.tokyo.jp":true,"mitaka.tokyo.jp":true,"mizuho.tokyo.jp":true,"musashimurayama.tokyo.jp":true,"musashino.tokyo.jp":true,"nakano.tokyo.jp":true,"nerima.tokyo.jp":true,"ogasawara.tokyo.jp":true,"okutama.tokyo.jp":true,"ome.tokyo.jp":true,"oshima.tokyo.jp":true,"ota.tokyo.jp":true,"setagaya.tokyo.jp":true,"shibuya.tokyo.jp":true,"shinagawa.tokyo.jp":true,"shinjuku.tokyo.jp":true,"suginami.tokyo.jp":true,"sumida.tokyo.jp":true,"tachikawa.tokyo.jp":true,"taito.tokyo.jp":true,"tama.tokyo.jp":true,"toshima.tokyo.jp":true,"chizu.tottori.jp":true,"hino.tottori.jp":true,"kawahara.tottori.jp":true,"koge.tottori.jp":true,"kotoura.tottori.jp":true,"misasa.tottori.jp":true,"nanbu.tottori.jp":true,"nichinan.tottori.jp":true,"sakaiminato.tottori.jp":true,"tottori.tottori.jp":true,"wakasa.tottori.jp":true,"yazu.tottori.jp":true,"yonago.tottori.jp":true,"asahi.toyama.jp":true,"fuchu.toyama.jp":true,"fukumitsu.toyama.jp":true,"funahashi.toyama.jp":true,"himi.toyama.jp":true,"imizu.toyama.jp":true,"inami.toyama.jp":true,"johana.toyama.jp":true,"kamiichi.toyama.jp":true,"kurobe.toyama.jp":true,"nakaniikawa.toyama.jp":true,"namerikawa.toyama.jp":true,"nanto.toyama.jp":true,"nyuzen.toyama.jp":true,"oyabe.toyama.jp":true,"taira.toyama.jp":true,"takaoka.toyama.jp":true,"tateyama.toyama.jp":true,"toga.toyama.jp":true,"tonami.toyama.jp":true,"toyama.toyama.jp":true,"unazuki.toyama.jp":true,"uozu.toyama.jp":true,"yamada.toyama.jp":true,"arida.wakayama.jp":true,"aridagawa.wakayama.jp":true,"gobo.wakayama.jp":true,"hashimoto.wakayama.jp":true,"hidaka.wakayama.jp":true,"hirogawa.wakayama.jp":true,"inami.wakayama.jp":true,"iwade.wakayama.jp":true,"kainan.wakayama.jp":true,"kamitonda.wakayama.jp":true,"katsuragi.wakayama.jp":true,"kimino.wakayama.jp":true,"kinokawa.wakayama.jp":true,"kitayama.wakayama.jp":true,"koya.wakayama.jp":true,"koza.wakayama.jp":true,"kozagawa.wakayama.jp":true,"kudoyama.wakayama.jp":true,"kushimoto.wakayama.jp":true,"mihama.wakayama.jp":true,"misato.wakayama.jp":true,"nachikatsuura.wakayama.jp":true,"shingu.wakayama.jp":true,"shirahama.wakayama.jp":true,"taiji.wakayama.jp":true,"tanabe.wakayama.jp":true,"wakayama.wakayama.jp":true,"yuasa.wakayama.jp":true,"yura.wakayama.jp":true,"asahi.yamagata.jp":true,"funagata.yamagata.jp":true,"higashine.yamagata.jp":true,"iide.yamagata.jp":true,"kahoku.yamagata.jp":true,"kaminoyama.yamagata.jp":true,"kaneyama.yamagata.jp":true,"kawanishi.yamagata.jp":true,"mamurogawa.yamagata.jp":true,"mikawa.yamagata.jp":true,"murayama.yamagata.jp":true,"nagai.yamagata.jp":true,"nakayama.yamagata.jp":true,"nanyo.yamagata.jp":true,"nishikawa.yamagata.jp":true,"obanazawa.yamagata.jp":true,"oe.yamagata.jp":true,"oguni.yamagata.jp":true,"ohkura.yamagata.jp":true,"oishida.yamagata.jp":true,"sagae.yamagata.jp":true,"sakata.yamagata.jp":true,"sakegawa.yamagata.jp":true,"shinjo.yamagata.jp":true,"shirataka.yamagata.jp":true,"shonai.yamagata.jp":true,"takahata.yamagata.jp":true,"tendo.yamagata.jp":true,"tozawa.yamagata.jp":true,"tsuruoka.yamagata.jp":true,"yamagata.yamagata.jp":true,"yamanobe.yamagata.jp":true,"yonezawa.yamagata.jp":true,"yuza.yamagata.jp":true,"abu.yamaguchi.jp":true,"hagi.yamaguchi.jp":true,"hikari.yamaguchi.jp":true,"hofu.yamaguchi.jp":true,"iwakuni.yamaguchi.jp":true,"kudamatsu.yamaguchi.jp":true,"mitou.yamaguchi.jp":true,"nagato.yamaguchi.jp":true,"oshima.yamaguchi.jp":true,"shimonoseki.yamaguchi.jp":true,"shunan.yamaguchi.jp":true,"tabuse.yamaguchi.jp":true,"tokuyama.yamaguchi.jp":true,"toyota.yamaguchi.jp":true,"ube.yamaguchi.jp":true,"yuu.yamaguchi.jp":true,"chuo.yamanashi.jp":true,"doshi.yamanashi.jp":true,"fuefuki.yamanashi.jp":true,"fujikawa.yamanashi.jp":true,"fujikawaguchiko.yamanashi.jp":true,"fujiyoshida.yamanashi.jp":true,"hayakawa.yamanashi.jp":true,"hokuto.yamanashi.jp":true,"ichikawamisato.yamanashi.jp":true,"kai.yamanashi.jp":true,"kofu.yamanashi.jp":true,"koshu.yamanashi.jp":true,"kosuge.yamanashi.jp":true,"minami-alps.yamanashi.jp":true,"minobu.yamanashi.jp":true,"nakamichi.yamanashi.jp":true,"nanbu.yamanashi.jp":true,"narusawa.yamanashi.jp":true,"nirasaki.yamanashi.jp":true,"nishikatsura.yamanashi.jp":true,"oshino.yamanashi.jp":true,"otsuki.yamanashi.jp":true,"showa.yamanashi.jp":true,"tabayama.yamanashi.jp":true,"tsuru.yamanashi.jp":true,"uenohara.yamanashi.jp":true,"yamanakako.yamanashi.jp":true,"yamanashi.yamanashi.jp":true,"*.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"kp":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"lb":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"lr":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"com.ms":true,"edu.ms":true,"gov.ms":true,"net.ms":true,"org.ms":true,"mt":true,"com.mt":true,"edu.mt":true,"net.mt":true,"org.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"*.mz":true,"teledata.mz":false,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ng":true,"com.ng":true,"edu.ng":true,"name.ng":true,"net.ng":true,"org.ng":true,"sch.ng":true,"gov.ng":true,"mil.ng":true,"mobi.ng":true,"*.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"nz":true,"ac.nz":true,"co.nz":true,"cri.nz":true,"geek.nz":true,"gen.nz":true,"govt.nz":true,"health.nz":true,"iwi.nz":true,"kiwi.nz":true,"maori.nz":true,"mil.nz":true,"xn--mori-qsa.nz":true,"net.nz":true,"org.nz":true,"parliament.nz":true,"school.nz":true,"om":true,"co.om":true,"com.om":true,"edu.om":true,"gov.om":true,"med.om":true,"museum.om":true,"net.om":true,"org.om":true,"pro.om":true,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"com.pl":true,"net.pl":true,"org.pl":true,"info.pl":true,"waw.pl":true,"gov.pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"uw.gov.pl":true,"um.gov.pl":true,"ug.gov.pl":true,"upow.gov.pl":true,"starostwo.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"po.gov.pl":true,"pa.gov.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"post":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aca.pro":true,"bar.pro":true,"cpa.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"eng.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"py":true,"com.py":true,"coop.py":true,"edu.py":true,"gov.py":true,"mil.py":true,"net.py":true,"org.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"com.re":true,"asso.re":true,"nom.re":true,"ro":true,"com.ro":true,"org.ro":true,"tm.ro":true,"nt.ro":true,"nom.ro":true,"info.ro":true,"rec.ro":true,"arts.ro":true,"firm.ro":true,"store.ro":true,"www.ro":true,"rs":true,"co.rs":true,"org.rs":true,"edu.rs":true,"ac.rs":true,"gov.rs":true,"in.rs":true,"ru":true,"ac.ru":true,"com.ru":true,"edu.ru":true,"int.ru":true,"net.ru":true,"org.ru":true,"pp.ru":true,"adygeya.ru":true,"altai.ru":true,"amur.ru":true,"arkhangelsk.ru":true,"astrakhan.ru":true,"bashkiria.ru":true,"belgorod.ru":true,"bir.ru":true,"bryansk.ru":true,"buryatia.ru":true,"cbg.ru":true,"chel.ru":true,"chelyabinsk.ru":true,"chita.ru":true,"chukotka.ru":true,"chuvashia.ru":true,"dagestan.ru":true,"dudinka.ru":true,"e-burg.ru":true,"grozny.ru":true,"irkutsk.ru":true,"ivanovo.ru":true,"izhevsk.ru":true,"jar.ru":true,"joshkar-ola.ru":true,"kalmykia.ru":true,"kaluga.ru":true,"kamchatka.ru":true,"karelia.ru":true,"kazan.ru":true,"kchr.ru":true,"kemerovo.ru":true,"khabarovsk.ru":true,"khakassia.ru":true,"khv.ru":true,"kirov.ru":true,"koenig.ru":true,"komi.ru":true,"kostroma.ru":true,"krasnoyarsk.ru":true,"kuban.ru":true,"kurgan.ru":true,"kursk.ru":true,"lipetsk.ru":true,"magadan.ru":true,"mari.ru":true,"mari-el.ru":true,"marine.ru":true,"mordovia.ru":true,"msk.ru":true,"murmansk.ru":true,"nalchik.ru":true,"nnov.ru":true,"nov.ru":true,"novosibirsk.ru":true,"nsk.ru":true,"omsk.ru":true,"orenburg.ru":true,"oryol.ru":true,"palana.ru":true,"penza.ru":true,"perm.ru":true,"ptz.ru":true,"rnd.ru":true,"ryazan.ru":true,"sakhalin.ru":true,"samara.ru":true,"saratov.ru":true,"simbirsk.ru":true,"smolensk.ru":true,"spb.ru":true,"stavropol.ru":true,"stv.ru":true,"surgut.ru":true,"tambov.ru":true,"tatarstan.ru":true,"tom.ru":true,"tomsk.ru":true,"tsaritsyn.ru":true,"tsk.ru":true,"tula.ru":true,"tuva.ru":true,"tver.ru":true,"tyumen.ru":true,"udm.ru":true,"udmurtia.ru":true,"ulan-ude.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"vladivostok.ru":true,"volgograd.ru":true,"vologda.ru":true,"voronezh.ru":true,"vrn.ru":true,"vyatka.ru":true,"yakutia.ru":true,"yamal.ru":true,"yaroslavl.ru":true,"yekaterinburg.ru":true,"yuzhno-sakhalinsk.ru":true,"amursk.ru":true,"baikal.ru":true,"cmw.ru":true,"fareast.ru":true,"jamal.ru":true,"kms.ru":true,"k-uralsk.ru":true,"kustanai.ru":true,"kuzbass.ru":true,"magnitka.ru":true,"mytis.ru":true,"nakhodka.ru":true,"nkz.ru":true,"norilsk.ru":true,"oskol.ru":true,"pyatigorsk.ru":true,"rubtsovsk.ru":true,"snz.ru":true,"syzran.ru":true,"vdonsk.ru":true,"zgrad.ru":true,"gov.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"tv.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"com.sh":true,"net.sh":true,"gov.sh":true,"org.sh":true,"mil.sh":true,"si":true,"sj":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"adygeya.su":true,"arkhangelsk.su":true,"balashov.su":true,"bashkiria.su":true,"bryansk.su":true,"dagestan.su":true,"grozny.su":true,"ivanovo.su":true,"kalmykia.su":true,"kaluga.su":true,"karelia.su":true,"khakassia.su":true,"krasnodar.su":true,"kurgan.su":true,"lenug.su":true,"mordovia.su":true,"msk.su":true,"murmansk.su":true,"nalchik.su":true,"nov.su":true,"obninsk.su":true,"penza.su":true,"pokrovsk.su":true,"sochi.su":true,"spb.su":true,"togliatti.su":true,"troitsk.su":true,"tula.su":true,"tuva.su":true,"vladikavkaz.su":true,"vladimir.su":true,"vologda.su":true,"sv":true,"com.sv":true,"edu.sv":true,"gob.sv":true,"org.sv":true,"red.sv":true,"sx":true,"gov.sx":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"com.tm":true,"co.tm":true,"org.tm":true,"net.tm":true,"nom.tm":true,"gov.tm":true,"mil.tm":true,"edu.tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"tp":true,"tr":true,"com.tr":true,"info.tr":true,"biz.tr":true,"net.tr":true,"org.tr":true,"web.tr":true,"gen.tr":true,"tv.tr":true,"av.tr":true,"dr.tr":true,"bbs.tr":true,"name.tr":true,"tel.tr":true,"gov.tr":true,"bel.tr":true,"pol.tr":true,"mil.tr":true,"k12.tr":true,"edu.tr":true,"kep.tr":true,"nc.tr":true,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"tz":true,"ac.tz":true,"co.tz":true,"go.tz":true,"hotel.tz":true,"info.tz":true,"me.tz":true,"mil.tz":true,"mobi.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"tv.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"cherkasy.ua":true,"chernigov.ua":true,"chernihiv.ua":true,"chernivtsi.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"cr.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"dnipropetrovsk.ua":true,"dominic.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkiv.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"khmelnytskyi.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"krym.ua":true,"ks.ua":true,"kv.ua":true,"kyiv.ua":true,"lg.ua":true,"lt.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lv.ua":true,"lviv.ua":true,"mk.ua":true,"mykolaiv.ua":true,"nikolaev.ua":true,"od.ua":true,"odesa.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rivne.ua":true,"rovno.ua":true,"rv.ua":true,"sb.ua":true,"sebastopol.ua":true,"sevastopol.ua":true,"sm.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uz.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vinnytsia.ua":true,"vn.ua":true,"volyn.ua":true,"yalta.ua":true,"zaporizhzhe.ua":true,"zaporizhzhia.ua":true,"zhitomir.ua":true,"zhytomyr.ua":true,"zp.ua":true,"zt.ua":true,"co.ua":true,"pp.ua":true,"ug":true,"co.ug":true,"or.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"com.ug":true,"org.ug":true,"uk":true,"ac.uk":true,"co.uk":true,"gov.uk":true,"ltd.uk":true,"me.uk":true,"net.uk":true,"nhs.uk":true,"org.uk":true,"plc.uk":true,"police.uk":true,"*.sch.uk":true,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.de.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"uy":true,"com.uy":true,"edu.uy":true,"gub.uy":true,"mil.uy":true,"net.uy":true,"org.uy":true,"uz":true,"co.uz":true,"com.uz":true,"net.uz":true,"org.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"ve":true,"arts.ve":true,"co.ve":true,"com.ve":true,"e12.ve":true,"edu.ve":true,"firm.ve":true,"gob.ve":true,"gov.ve":true,"info.ve":true,"int.ve":true,"mil.ve":true,"net.ve":true,"org.ve":true,"rec.ve":true,"store.ve":true,"tec.ve":true,"web.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"com.vu":true,"edu.vu":true,"net.vu":true,"org.vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--54b7fta0cc":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--node":true,"xn--j6w193g":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--80ao21a":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--l1acc":true,"xn--mgbx4cd0ab":true,"xn--mgb9awbf":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--o1ac.xn--90a3ac":true,"xn--c1avg.xn--90a3ac":true,"xn--90azh.xn--90a3ac":true,"xn--d1at.xn--90a3ac":true,"xn--o1ach.xn--90a3ac":true,"xn--80au.xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"*.za":true,"*.zm":true,"*.zw":true,"aaa":true,"abb":true,"abbott":true,"abogado":true,"academy":true,"accenture":true,"accountant":true,"accountants":true,"aco":true,"active":true,"actor":true,"ads":true,"adult":true,"aeg":true,"afl":true,"africa":true,"africamagic":true,"agency":true,"aig":true,"airforce":true,"airtel":true,"alibaba":true,"alipay":true,"allfinanz":true,"alsace":true,"amsterdam":true,"analytics":true,"android":true,"anquan":true,"apartments":true,"aquarelle":true,"aramco":true,"archi":true,"army":true,"arte":true,"associates":true,"attorney":true,"auction":true,"audio":true,"author":true,"auto":true,"autos":true,"avianca":true,"axa":true,"azure":true,"baidu":true,"band":true,"bank":true,"bar":true,"barcelona":true,"barclaycard":true,"barclays":true,"bargains":true,"bauhaus":true,"bayern":true,"bbc":true,"bbva":true,"bcg":true,"bcn":true,"beer":true,"bentley":true,"berlin":true,"best":true,"bharti":true,"bible":true,"bid":true,"bike":true,"bing":true,"bingo":true,"bio":true,"black":true,"blackfriday":true,"bloomberg":true,"blue":true,"bms":true,"bmw":true,"bnl":true,"bnpparibas":true,"boats":true,"bom":true,"bond":true,"boo":true,"boots":true,"bot":true,"boutique":true,"bradesco":true,"bridgestone":true,"broadway":true,"broker":true,"brother":true,"brussels":true,"budapest":true,"build":true,"builders":true,"business":true,"buy":true,"buzz":true,"bzh":true,"cab":true,"cafe":true,"cal":true,"call":true,"camera":true,"camp":true,"cancerresearch":true,"canon":true,"capetown":true,"capital":true,"car":true,"caravan":true,"cards":true,"care":true,"career":true,"careers":true,"cars":true,"cartier":true,"casa":true,"cash":true,"casino":true,"catering":true,"cba":true,"cbn":true,"center":true,"ceo":true,"cern":true,"cfa":true,"cfd":true,"channel":true,"chat":true,"cheap":true,"chloe":true,"christmas":true,"chrome":true,"church":true,"cipriani":true,"circle":true,"cisco":true,"citic":true,"city":true,"cityeats":true,"claims":true,"cleaning":true,"click":true,"clinic":true,"clothing":true,"club":true,"coach":true,"codes":true,"coffee":true,"college":true,"cologne":true,"commbank":true,"community":true,"company":true,"computer":true,"comsec":true,"condos":true,"construction":true,"consulting":true,"contact":true,"contractors":true,"cooking":true,"cool":true,"corsica":true,"country":true,"coupon":true,"coupons":true,"courses":true,"credit":true,"creditcard":true,"creditunion":true,"cricket":true,"crown":true,"crs":true,"cruises":true,"csc":true,"cuisinella":true,"cymru":true,"cyou":true,"dabur":true,"dad":true,"dance":true,"date":true,"dating":true,"datsun":true,"day":true,"dclk":true,"dealer":true,"deals":true,"degree":true,"delivery":true,"dell":true,"delta":true,"democrat":true,"dental":true,"dentist":true,"desi":true,"design":true,"dev":true,"diamonds":true,"diet":true,"digital":true,"direct":true,"directory":true,"discount":true,"dnp":true,"docs":true,"dog":true,"doha":true,"domains":true,"doosan":true,"download":true,"drive":true,"dstv":true,"dubai":true,"durban":true,"dvag":true,"earth":true,"eat":true,"edeka":true,"education":true,"email":true,"emerck":true,"energy":true,"engineer":true,"engineering":true,"enterprises":true,"epson":true,"equipment":true,"erni":true,"esq":true,"estate":true,"eurovision":true,"eus":true,"events":true,"everbank":true,"exchange":true,"expert":true,"exposed":true,"express":true,"fage":true,"fail":true,"fairwinds":true,"faith":true,"family":true,"fan":true,"fans":true,"farm":true,"fashion":true,"fast":true,"feedback":true,"ferrero":true,"film":true,"final":true,"finance":true,"financial":true,"firestone":true,"firmdale":true,"fish":true,"fishing":true,"fit":true,"fitness":true,"flickr":true,"flights":true,"florist":true,"flowers":true,"flsmidth":true,"fly":true,"foo":true,"football":true,"ford":true,"forex":true,"forsale":true,"forum":true,"foundation":true,"frl":true,"frogans":true,"frontier":true,"fund":true,"furniture":true,"futbol":true,"fyi":true,"gal":true,"gallery":true,"gallup":true,"garden":true,"gbiz":true,"gdn":true,"gea":true,"gent":true,"genting":true,"ggee":true,"gift":true,"gifts":true,"gives":true,"giving":true,"glass":true,"gle":true,"global":true,"globo":true,"gmail":true,"gmo":true,"gmx":true,"gold":true,"goldpoint":true,"golf":true,"goo":true,"goog":true,"google":true,"gop":true,"got":true,"gotv":true,"graphics":true,"gratis":true,"green":true,"gripe":true,"group":true,"gucci":true,"guge":true,"guide":true,"guitars":true,"guru":true,"hamburg":true,"hangout":true,"haus":true,"hdfcbank":true,"health":true,"healthcare":true,"help":true,"helsinki":true,"here":true,"hermes":true,"hiphop":true,"hitachi":true,"hiv":true,"hockey":true,"holdings":true,"holiday":true,"homedepot":true,"homes":true,"honda":true,"horse":true,"host":true,"hosting":true,"hoteles":true,"hotmail":true,"house":true,"how":true,"hsbc":true,"htc":true,"ibm":true,"icbc":true,"ice":true,"icu":true,"ifm":true,"iinet":true,"immo":true,"immobilien":true,"industries":true,"infiniti":true,"ing":true,"ink":true,"institute":true,"insurance":true,"insure":true,"international":true,"investments":true,"ipiranga":true,"irish":true,"iselect":true,"ist":true,"istanbul":true,"itau":true,"iwc":true,"jaguar":true,"java":true,"jcb":true,"jetzt":true,"jewelry":true,"jio":true,"jlc":true,"jll":true,"jmp":true,"joburg":true,"jot":true,"joy":true,"jprs":true,"juegos":true,"kaufen":true,"kddi":true,"kfh":true,"kim":true,"kinder":true,"kitchen":true,"kiwi":true,"koeln":true,"komatsu":true,"kpn":true,"krd":true,"kred":true,"kyknet":true,"kyoto":true,"lacaixa":true,"lancaster":true,"land":true,"landrover":true,"lasalle":true,"lat":true,"latrobe":true,"law":true,"lawyer":true,"lds":true,"lease":true,"leclerc":true,"legal":true,"lgbt":true,"liaison":true,"lidl":true,"life":true,"lifeinsurance":true,"lifestyle":true,"lighting":true,"like":true,"limited":true,"limo":true,"lincoln":true,"linde":true,"link":true,"live":true,"lixil":true,"loan":true,"loans":true,"lol":true,"london":true,"lotte":true,"lotto":true,"love":true,"ltd":true,"ltda":true,"lupin":true,"luxe":true,"luxury":true,"madrid":true,"maif":true,"maison":true,"makeup":true,"man":true,"management":true,"mango":true,"market":true,"marketing":true,"markets":true,"marriott":true,"mba":true,"media":true,"meet":true,"melbourne":true,"meme":true,"memorial":true,"men":true,"menu":true,"meo":true,"miami":true,"microsoft":true,"mini":true,"mma":true,"mnet":true,"mobily":true,"moda":true,"moe":true,"moi":true,"monash":true,"money":true,"montblanc":true,"mormon":true,"mortgage":true,"moscow":true,"motorcycles":true,"mov":true,"movie":true,"movistar":true,"mtn":true,"mtpc":true,"mtr":true,"multichoice":true,"mutual":true,"mzansimagic":true,"nadex":true,"nagoya":true,"naspers":true,"natura":true,"navy":true,"nec":true,"netbank":true,"network":true,"neustar":true,"new":true,"news":true,"nexus":true,"ngo":true,"nhk":true,"nico":true,"ninja":true,"nissan":true,"nokia":true,"norton":true,"nowruz":true,"nra":true,"nrw":true,"ntt":true,"nyc":true,"obi":true,"office":true,"okinawa":true,"omega":true,"one":true,"ong":true,"onl":true,"online":true,"ooo":true,"oracle":true,"orange":true,"organic":true,"orientexpress":true,"osaka":true,"otsuka":true,"ovh":true,"page":true,"pamperedchef":true,"panerai":true,"paris":true,"pars":true,"partners":true,"parts":true,"party":true,"passagens":true,"payu":true,"pharmacy":true,"philips":true,"photo":true,"photography":true,"photos":true,"physio":true,"piaget":true,"pics":true,"pictet":true,"pictures":true,"pid":true,"pin":true,"pink":true,"pizza":true,"place":true,"play":true,"plumbing":true,"plus":true,"pohl":true,"poker":true,"porn":true,"praxi":true,"press":true,"prod":true,"productions":true,"prof":true,"promo":true,"properties":true,"property":true,"pub":true,"qpon":true,"quebec":true,"quest":true,"racing":true,"read":true,"realtor":true,"realty":true,"recipes":true,"red":true,"redstone":true,"redumbrella":true,"rehab":true,"reise":true,"reisen":true,"reit":true,"reliance":true,"ren":true,"rent":true,"rentals":true,"repair":true,"report":true,"republican":true,"rest":true,"restaurant":true,"review":true,"reviews":true,"rich":true,"ricoh":true,"ril":true,"rio":true,"rip":true,"rocher":true,"rocks":true,"rodeo":true,"room":true,"rsvp":true,"ruhr":true,"run":true,"rwe":true,"ryukyu":true,"saarland":true,"safe":true,"safety":true,"sakura":true,"sale":true,"salon":true,"samsung":true,"sandvik":true,"sandvikcoromant":true,"sanofi":true,"sap":true,"sapo":true,"sarl":true,"sas":true,"saxo":true,"sbi":true,"sbs":true,"sca":true,"scb":true,"schmidt":true,"scholarships":true,"school":true,"schule":true,"schwarz":true,"science":true,"scor":true,"scot":true,"seat":true,"seek":true,"sener":true,"services":true,"sew":true,"sex":true,"sexy":true,"sharp":true,"shia":true,"shiksha":true,"shoes":true,"shouji":true,"show":true,"shriram":true,"sina":true,"singles":true,"site":true,"skin":true,"sky":true,"skype":true,"smile":true,"sncf":true,"soccer":true,"social":true,"software":true,"sohu":true,"solar":true,"solutions":true,"song":true,"sony":true,"soy":true,"space":true,"spiegel":true,"spot":true,"spreadbetting":true,"stada":true,"star":true,"starhub":true,"statebank":true,"statoil":true,"stc":true,"stcgroup":true,"stockholm":true,"storage":true,"studio":true,"study":true,"style":true,"sucks":true,"supersport":true,"supplies":true,"supply":true,"support":true,"surf":true,"surgery":true,"suzuki":true,"swatch":true,"swiss":true,"sydney":true,"symantec":true,"systems":true,"tab":true,"taipei":true,"taobao":true,"tatamotors":true,"tatar":true,"tattoo":true,"tax":true,"taxi":true,"tci":true,"team":true,"tech":true,"technology":true,"telecity":true,"telefonica":true,"temasek":true,"tennis":true,"thd":true,"theater":true,"tickets":true,"tienda":true,"tiffany":true,"tips":true,"tires":true,"tirol":true,"tmall":true,"today":true,"tokyo":true,"tools":true,"top":true,"toray":true,"toshiba":true,"tours":true,"town":true,"toys":true,"trade":true,"trading":true,"training":true,"travelers":true,"travelersinsurance":true,"trust":true,"trv":true,"tui":true,"tunes":true,"tushu":true,"tvs":true,"ubs":true,"university":true,"uno":true,"uol":true,"vacations":true,"vana":true,"vegas":true,"ventures":true,"versicherung":true,"vet":true,"viajes":true,"video":true,"viking":true,"villas":true,"vip":true,"virgin":true,"vision":true,"vista":true,"vistaprint":true,"viva":true,"vlaanderen":true,"vodka":true,"vote":true,"voting":true,"voto":true,"voyage":true,"vuelos":true,"wales":true,"walter":true,"wang":true,"wanggou":true,"watch":true,"watches":true,"weather":true,"weatherchannel":true,"webcam":true,"website":true,"wed":true,"wedding":true,"weibo":true,"weir":true,"whoswho":true,"wien":true,"wiki":true,"williamhill":true,"win":true,"windows":true,"wme":true,"work":true,"works":true,"world":true,"wtc":true,"wtf":true,"xbox":true,"xerox":true,"xihuan":true,"xin":true,"xn--11b4c3d":true,"xn--1ck2e1b":true,"xn--1qqw23a":true,"xn--30rr7y":true,"xn--3bst00m":true,"xn--3ds443g":true,"xn--3pxu8k":true,"xn--42c2d9a":true,"xn--45q11c":true,"xn--4gbrim":true,"xn--55qw42g":true,"xn--55qx5d":true,"xn--5tzm5g":true,"xn--6frz82g":true,"xn--6qq986b3xl":true,"xn--80adxhks":true,"xn--80asehdb":true,"xn--80aswg":true,"xn--8y0a063a":true,"xn--9dbq2a":true,"xn--9et52u":true,"xn--9krt00a":true,"xn--b4w605ferd":true,"xn--bck1b9a5dre4c":true,"xn--c1avg":true,"xn--c2br7g":true,"xn--cck2b3b":true,"xn--cg4bki":true,"xn--czr694b":true,"xn--czrs0t":true,"xn--czru2d":true,"xn--d1acj3b":true,"xn--eckvdtc9d":true,"xn--efvy88h":true,"xn--estv75g":true,"xn--fhbei":true,"xn--fiq228c5hs":true,"xn--fiq64b":true,"xn--fjq720a":true,"xn--flw351e":true,"xn--g2xx48c":true,"xn--gckr3f0f":true,"xn--hxt814e":true,"xn--i1b6b1a6a2e":true,"xn--imr513n":true,"xn--io0a7i":true,"xn--j1aef":true,"xn--jlq61u9w7b":true,"xn--jvr189m":true,"xn--kcrx77d1x4a":true,"xn--kpu716f":true,"xn--kput3i":true,"xn--mgba3a3ejt":true,"xn--mgbab2bd":true,"xn--mgbb9fbpob":true,"xn--mgbt3dhd":true,"xn--mk1bu44c":true,"xn--mxtq1m":true,"xn--ngbc5azd":true,"xn--ngbe9e0a":true,"xn--nqv7f":true,"xn--nqv7fs00ema":true,"xn--nyqy26a":true,"xn--p1acf":true,"xn--pbt977c":true,"xn--pssy2u":true,"xn--q9jyb4c":true,"xn--qcka1pmc":true,"xn--rhqv96g":true,"xn--rovu88b":true,"xn--ses554g":true,"xn--t60b56a":true,"xn--tckwe":true,"xn--unup4y":true,"xn--vermgensberater-ctb":true,"xn--vermgensberatung-pwb":true,"xn--vhquv":true,"xn--vuq861b":true,"xn--xhq521b":true,"xn--zfr164b":true,"xyz":true,"yachts":true,"yahoo":true,"yamaxun":true,"yandex":true,"yodobashi":true,"yoga":true,"yokohama":true,"youtube":true,"yun":true,"zara":true,"zero":true,"zip":true,"zone":true,"zuerich":true,"cloudfront.net":true,"ap-northeast-1.compute.amazonaws.com":true,"ap-southeast-1.compute.amazonaws.com":true,"ap-southeast-2.compute.amazonaws.com":true,"cn-north-1.compute.amazonaws.cn":true,"compute.amazonaws.cn":true,"compute.amazonaws.com":true,"compute-1.amazonaws.com":true,"eu-west-1.compute.amazonaws.com":true,"eu-central-1.compute.amazonaws.com":true,"sa-east-1.compute.amazonaws.com":true,"us-east-1.amazonaws.com":true,"us-gov-west-1.compute.amazonaws.com":true,"us-west-1.compute.amazonaws.com":true,"us-west-2.compute.amazonaws.com":true,"z-1.compute-1.amazonaws.com":true,"z-2.compute-1.amazonaws.com":true,"elasticbeanstalk.com":true,"elb.amazonaws.com":true,"s3.amazonaws.com":true,"s3-us-west-2.amazonaws.com":true,"s3-us-west-1.amazonaws.com":true,"s3-eu-west-1.amazonaws.com":true,"s3-ap-southeast-1.amazonaws.com":true,"s3-ap-southeast-2.amazonaws.com":true,"s3-ap-northeast-1.amazonaws.com":true,"s3-sa-east-1.amazonaws.com":true,"s3-us-gov-west-1.amazonaws.com":true,"s3-fips-us-gov-west-1.amazonaws.com":true,"s3-website-us-east-1.amazonaws.com":true,"s3-website-us-west-2.amazonaws.com":true,"s3-website-us-west-1.amazonaws.com":true,"s3-website-eu-west-1.amazonaws.com":true,"s3-website-ap-southeast-1.amazonaws.com":true,"s3-website-ap-southeast-2.amazonaws.com":true,"s3-website-ap-northeast-1.amazonaws.com":true,"s3-website-sa-east-1.amazonaws.com":true,"s3-website-us-gov-west-1.amazonaws.com":true,"betainabox.com":true,"ae.org":true,"ar.com":true,"br.com":true,"cn.com":true,"com.de":true,"com.se":true,"de.com":true,"eu.com":true,"gb.com":true,"gb.net":true,"hu.com":true,"hu.net":true,"jp.net":true,"jpn.com":true,"kr.com":true,"mex.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"se.net":true,"uk.com":true,"uk.net":true,"us.com":true,"uy.com":true,"za.bz":true,"za.com":true,"africa.com":true,"gr.com":true,"in.net":true,"us.org":true,"co.com":true,"c.la":true,"cloudcontrolled.com":true,"cloudcontrolapp.com":true,"co.ca":true,"co.nl":true,"co.no":true,"*.platform.sh":true,"cupcake.is":true,"dreamhosters.com":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true,"a.ssl.fastly.net":true,"b.ssl.fastly.net":true,"global.ssl.fastly.net":true,"a.prod.fastly.net":true,"global.prod.fastly.net":true,"firebaseapp.com":true,"flynnhub.com":true,"service.gov.uk":true,"github.io":true,"githubusercontent.com":true,"ro.com":true,"appspot.com":true,"blogspot.ae":true,"blogspot.be":true,"blogspot.bj":true,"blogspot.ca":true,"blogspot.cf":true,"blogspot.ch":true,"blogspot.co.at":true,"blogspot.co.il":true,"blogspot.co.nz":true,"blogspot.co.uk":true,"blogspot.com":true,"blogspot.com.ar":true,"blogspot.com.au":true,"blogspot.com.br":true,"blogspot.com.es":true,"blogspot.com.tr":true,"blogspot.cv":true,"blogspot.cz":true,"blogspot.de":true,"blogspot.dk":true,"blogspot.fi":true,"blogspot.fr":true,"blogspot.gr":true,"blogspot.hk":true,"blogspot.hu":true,"blogspot.ie":true,"blogspot.in":true,"blogspot.it":true,"blogspot.jp":true,"blogspot.kr":true,"blogspot.mr":true,"blogspot.mx":true,"blogspot.nl":true,"blogspot.no":true,"blogspot.pt":true,"blogspot.re":true,"blogspot.ro":true,"blogspot.ru":true,"blogspot.se":true,"blogspot.sg":true,"blogspot.sk":true,"blogspot.td":true,"blogspot.tw":true,"codespot.com":true,"googleapis.com":true,"googlecode.com":true,"pagespeedmobilizer.com":true,"withgoogle.com":true,"herokuapp.com":true,"herokussl.com":true,"iki.fi":true,"biz.at":true,"info.at":true,"co.pl":true,"azurewebsites.net":true,"azure-mobile.net":true,"cloudapp.net":true,"nfshost.com":true,"nyc.mn":true,"nid.io":true,"operaunite.com":true,"outsystemscloud.com":true,"art.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"priv.at":true,"rhcloud.com":true,"sinaapp.com":true,"vipsinaapp.com":true,"1kapp.com":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"hk.com":true,"hk.org":true,"ltd.hk":true,"inc.hk":true,"yolasite.com":true,"za.net":true,"za.org":true});
-
-// END of automatically generated file
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/lib/store.js b/scripts/node_modules/request/node_modules/tough-cookie/lib/store.js
deleted file mode 100644
index bce52925..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/lib/store.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-'use strict';
-/*jshint unused:false */
-
-function Store() {
-}
-exports.Store = Store;
-
-// Stores may be synchronous, but are still required to use a
-// Continuation-Passing Style API. The CookieJar itself will expose a "*Sync"
-// API that converts from synchronous-callbacks to imperative style.
-Store.prototype.synchronous = false;
-
-Store.prototype.findCookie = function(domain, path, key, cb) {
- throw new Error('findCookie is not implemented');
-};
-
-Store.prototype.findCookies = function(domain, path, cb) {
- throw new Error('findCookies is not implemented');
-};
-
-Store.prototype.putCookie = function(cookie, cb) {
- throw new Error('putCookie is not implemented');
-};
-
-Store.prototype.updateCookie = function(oldCookie, newCookie, cb) {
- // recommended default implementation:
- // return this.putCookie(newCookie, cb);
- throw new Error('updateCookie is not implemented');
-};
-
-Store.prototype.removeCookie = function(domain, path, key, cb) {
- throw new Error('removeCookie is not implemented');
-};
-
-Store.prototype.removeCookies = function(domain, path, cb) {
- throw new Error('removeCookies is not implemented');
-};
-
-Store.prototype.getAllCookies = function(cb) {
- throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)');
-};
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/package.json b/scripts/node_modules/request/node_modules/tough-cookie/package.json
deleted file mode 100644
index 55605b3e..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "author": {
- "name": "Jeremy Stashewsky",
- "email": "jstashewsky@salesforce.com"
- },
- "license": "BSD-3-Clause",
- "name": "tough-cookie",
- "description": "RFC6265 Cookies and Cookie Jar for node.js",
- "keywords": [
- "HTTP",
- "cookie",
- "cookies",
- "set-cookie",
- "cookiejar",
- "jar",
- "RFC6265",
- "RFC2965"
- ],
- "version": "2.0.0",
- "homepage": "https://github.com/SalesforceEng/tough-cookie",
- "repository": {
- "type": "git",
- "url": "git://github.com/SalesforceEng/tough-cookie.git"
- },
- "bugs": {
- "url": "https://github.com/SalesforceEng/tough-cookie/issues"
- },
- "main": "./lib/cookie",
- "scripts": {
- "test": "vows test/*_test.js"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "devDependencies": {
- "vows": "0.7.0",
- "async": ">=0.1.12"
- },
- "gitHead": "a3af6104da7787c23bb98910109b0e0e8a10153c",
- "_id": "tough-cookie@2.0.0",
- "_shasum": "41ce08720b35cf90beb044dd2609fb19e928718f",
- "_from": "tough-cookie@>=0.12.0",
- "_npmVersion": "2.7.4",
- "_nodeVersion": "0.12.2",
- "_npmUser": {
- "name": "jstash",
- "email": "jstash@gmail.com"
- },
- "dist": {
- "shasum": "41ce08720b35cf90beb044dd2609fb19e928718f",
- "tarball": "http://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz"
- },
- "maintainers": [
- {
- "name": "jstash",
- "email": "jeremy@goinstant.com"
- },
- {
- "name": "goinstant",
- "email": "services@goinstant.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/public-suffix.txt b/scripts/node_modules/request/node_modules/tough-cookie/public-suffix.txt
deleted file mode 100644
index d5c9924e..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/public-suffix.txt
+++ /dev/null
@@ -1,10309 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-// ===BEGIN ICANN DOMAINS===
-
-// ac : http://en.wikipedia.org/wiki/.ac
-ac
-com.ac
-edu.ac
-gov.ac
-net.ac
-mil.ac
-org.ac
-
-// ad : http://en.wikipedia.org/wiki/.ad
-ad
-nom.ad
-
-// ae : http://en.wikipedia.org/wiki/.ae
-// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php
-ae
-co.ae
-net.ae
-org.ae
-sch.ae
-ac.ae
-gov.ae
-mil.ae
-
-// aero : see http://www.information.aero/index.php?id=66
-aero
-accident-investigation.aero
-accident-prevention.aero
-aerobatic.aero
-aeroclub.aero
-aerodrome.aero
-agents.aero
-aircraft.aero
-airline.aero
-airport.aero
-air-surveillance.aero
-airtraffic.aero
-air-traffic-control.aero
-ambulance.aero
-amusement.aero
-association.aero
-author.aero
-ballooning.aero
-broker.aero
-caa.aero
-cargo.aero
-catering.aero
-certification.aero
-championship.aero
-charter.aero
-civilaviation.aero
-club.aero
-conference.aero
-consultant.aero
-consulting.aero
-control.aero
-council.aero
-crew.aero
-design.aero
-dgca.aero
-educator.aero
-emergency.aero
-engine.aero
-engineer.aero
-entertainment.aero
-equipment.aero
-exchange.aero
-express.aero
-federation.aero
-flight.aero
-freight.aero
-fuel.aero
-gliding.aero
-government.aero
-groundhandling.aero
-group.aero
-hanggliding.aero
-homebuilt.aero
-insurance.aero
-journal.aero
-journalist.aero
-leasing.aero
-logistics.aero
-magazine.aero
-maintenance.aero
-marketplace.aero
-media.aero
-microlight.aero
-modelling.aero
-navigation.aero
-parachuting.aero
-paragliding.aero
-passenger-association.aero
-pilot.aero
-press.aero
-production.aero
-recreation.aero
-repbody.aero
-res.aero
-research.aero
-rotorcraft.aero
-safety.aero
-scientist.aero
-services.aero
-show.aero
-skydiving.aero
-software.aero
-student.aero
-taxi.aero
-trader.aero
-trading.aero
-trainer.aero
-union.aero
-workinggroup.aero
-works.aero
-
-// af : http://www.nic.af/help.jsp
-af
-gov.af
-com.af
-org.af
-net.af
-edu.af
-
-// ag : http://www.nic.ag/prices.htm
-ag
-com.ag
-org.ag
-net.ag
-co.ag
-nom.ag
-
-// ai : http://nic.com.ai/
-ai
-off.ai
-com.ai
-net.ai
-org.ai
-
-// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31
-al
-com.al
-edu.al
-gov.al
-mil.al
-net.al
-org.al
-
-// am : http://en.wikipedia.org/wiki/.am
-am
-
-// an : http://www.una.an/an_domreg/default.asp
-an
-com.an
-net.an
-org.an
-edu.an
-
-// ao : http://en.wikipedia.org/wiki/.ao
-// http://www.dns.ao/REGISTR.DOC
-ao
-ed.ao
-gv.ao
-og.ao
-co.ao
-pb.ao
-it.ao
-
-// aq : http://en.wikipedia.org/wiki/.aq
-aq
-
-// ar : https://nic.ar/normativa-vigente.xhtml
-ar
-com.ar
-edu.ar
-gob.ar
-gov.ar
-int.ar
-mil.ar
-net.ar
-org.ar
-tur.ar
-
-// arpa : http://en.wikipedia.org/wiki/.arpa
-// Confirmed by registry 2008-06-18
-arpa
-e164.arpa
-in-addr.arpa
-ip6.arpa
-iris.arpa
-uri.arpa
-urn.arpa
-
-// as : http://en.wikipedia.org/wiki/.as
-as
-gov.as
-
-// asia : http://en.wikipedia.org/wiki/.asia
-asia
-
-// at : http://en.wikipedia.org/wiki/.at
-// Confirmed by registry 2008-06-17
-at
-ac.at
-co.at
-gv.at
-or.at
-
-// au : http://en.wikipedia.org/wiki/.au
-// http://www.auda.org.au/
-au
-// 2LDs
-com.au
-net.au
-org.au
-edu.au
-gov.au
-asn.au
-id.au
-// Historic 2LDs (closed to new registration, but sites still exist)
-info.au
-conf.au
-oz.au
-// CGDNs - http://www.cgdn.org.au/
-act.au
-nsw.au
-nt.au
-qld.au
-sa.au
-tas.au
-vic.au
-wa.au
-// 3LDs
-act.edu.au
-nsw.edu.au
-nt.edu.au
-qld.edu.au
-sa.edu.au
-tas.edu.au
-vic.edu.au
-wa.edu.au
-// act.gov.au Bug 984824 - Removed at request of Greg Tankard
-// nsw.gov.au Bug 547985 - Removed at request of
-// nt.gov.au Bug 940478 - Removed at request of Greg Connors
-qld.gov.au
-sa.gov.au
-tas.gov.au
-vic.gov.au
-wa.gov.au
-
-// aw : http://en.wikipedia.org/wiki/.aw
-aw
-com.aw
-
-// ax : http://en.wikipedia.org/wiki/.ax
-ax
-
-// az : http://en.wikipedia.org/wiki/.az
-az
-com.az
-net.az
-int.az
-gov.az
-org.az
-edu.az
-info.az
-pp.az
-mil.az
-name.az
-pro.az
-biz.az
-
-// ba : http://en.wikipedia.org/wiki/.ba
-ba
-org.ba
-net.ba
-edu.ba
-gov.ba
-mil.ba
-unsa.ba
-unbi.ba
-co.ba
-com.ba
-rs.ba
-
-// bb : http://en.wikipedia.org/wiki/.bb
-bb
-biz.bb
-co.bb
-com.bb
-edu.bb
-gov.bb
-info.bb
-net.bb
-org.bb
-store.bb
-tv.bb
-
-// bd : http://en.wikipedia.org/wiki/.bd
-*.bd
-
-// be : http://en.wikipedia.org/wiki/.be
-// Confirmed by registry 2008-06-08
-be
-ac.be
-
-// bf : http://en.wikipedia.org/wiki/.bf
-bf
-gov.bf
-
-// bg : http://en.wikipedia.org/wiki/.bg
-// https://www.register.bg/user/static/rules/en/index.html
-bg
-a.bg
-b.bg
-c.bg
-d.bg
-e.bg
-f.bg
-g.bg
-h.bg
-i.bg
-j.bg
-k.bg
-l.bg
-m.bg
-n.bg
-o.bg
-p.bg
-q.bg
-r.bg
-s.bg
-t.bg
-u.bg
-v.bg
-w.bg
-x.bg
-y.bg
-z.bg
-0.bg
-1.bg
-2.bg
-3.bg
-4.bg
-5.bg
-6.bg
-7.bg
-8.bg
-9.bg
-
-// bh : http://en.wikipedia.org/wiki/.bh
-bh
-com.bh
-edu.bh
-net.bh
-org.bh
-gov.bh
-
-// bi : http://en.wikipedia.org/wiki/.bi
-// http://whois.nic.bi/
-bi
-co.bi
-com.bi
-edu.bi
-or.bi
-org.bi
-
-// biz : http://en.wikipedia.org/wiki/.biz
-biz
-
-// bj : http://en.wikipedia.org/wiki/.bj
-bj
-asso.bj
-barreau.bj
-gouv.bj
-
-// bm : http://www.bermudanic.bm/dnr-text.txt
-bm
-com.bm
-edu.bm
-gov.bm
-net.bm
-org.bm
-
-// bn : http://en.wikipedia.org/wiki/.bn
-*.bn
-
-// bo : http://www.nic.bo/
-bo
-com.bo
-edu.bo
-gov.bo
-gob.bo
-int.bo
-org.bo
-net.bo
-mil.bo
-tv.bo
-
-// br : http://registro.br/dominio/categoria.html
-// Submitted by registry 2014-08-11
-br
-adm.br
-adv.br
-agr.br
-am.br
-arq.br
-art.br
-ato.br
-b.br
-bio.br
-blog.br
-bmd.br
-cim.br
-cng.br
-cnt.br
-com.br
-coop.br
-ecn.br
-eco.br
-edu.br
-emp.br
-eng.br
-esp.br
-etc.br
-eti.br
-far.br
-flog.br
-fm.br
-fnd.br
-fot.br
-fst.br
-g12.br
-ggf.br
-gov.br
-imb.br
-ind.br
-inf.br
-jor.br
-jus.br
-leg.br
-lel.br
-mat.br
-med.br
-mil.br
-mp.br
-mus.br
-net.br
-*.nom.br
-not.br
-ntr.br
-odo.br
-org.br
-ppg.br
-pro.br
-psc.br
-psi.br
-qsl.br
-radio.br
-rec.br
-slg.br
-srv.br
-taxi.br
-teo.br
-tmp.br
-trd.br
-tur.br
-tv.br
-vet.br
-vlog.br
-wiki.br
-zlg.br
-
-// bs : http://www.nic.bs/rules.html
-bs
-com.bs
-net.bs
-org.bs
-edu.bs
-gov.bs
-
-// bt : http://en.wikipedia.org/wiki/.bt
-bt
-com.bt
-edu.bt
-gov.bt
-net.bt
-org.bt
-
-// bv : No registrations at this time.
-// Submitted by registry 2006-06-16
-bv
-
-// bw : http://en.wikipedia.org/wiki/.bw
-// http://www.gobin.info/domainname/bw.doc
-// list of other 2nd level tlds ?
-bw
-co.bw
-org.bw
-
-// by : http://en.wikipedia.org/wiki/.by
-// http://tld.by/rules_2006_en.html
-// list of other 2nd level tlds ?
-by
-gov.by
-mil.by
-// Official information does not indicate that com.by is a reserved
-// second-level domain, but it's being used as one (see www.google.com.by and
-// www.yahoo.com.by, for example), so we list it here for safety's sake.
-com.by
-
-// http://hoster.by/
-of.by
-
-// bz : http://en.wikipedia.org/wiki/.bz
-// http://www.belizenic.bz/
-bz
-com.bz
-net.bz
-org.bz
-edu.bz
-gov.bz
-
-// ca : http://en.wikipedia.org/wiki/.ca
-ca
-// ca geographical names
-ab.ca
-bc.ca
-mb.ca
-nb.ca
-nf.ca
-nl.ca
-ns.ca
-nt.ca
-nu.ca
-on.ca
-pe.ca
-qc.ca
-sk.ca
-yk.ca
-// gc.ca: http://en.wikipedia.org/wiki/.gc.ca
-// see also: http://registry.gc.ca/en/SubdomainFAQ
-gc.ca
-
-// cat : http://en.wikipedia.org/wiki/.cat
-cat
-
-// cc : http://en.wikipedia.org/wiki/.cc
-cc
-
-// cd : http://en.wikipedia.org/wiki/.cd
-// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1
-cd
-gov.cd
-
-// cf : http://en.wikipedia.org/wiki/.cf
-cf
-
-// cg : http://en.wikipedia.org/wiki/.cg
-cg
-
-// ch : http://en.wikipedia.org/wiki/.ch
-ch
-
-// ci : http://en.wikipedia.org/wiki/.ci
-// http://www.nic.ci/index.php?page=charte
-ci
-org.ci
-or.ci
-com.ci
-co.ci
-edu.ci
-ed.ci
-ac.ci
-net.ci
-go.ci
-asso.ci
-aéroport.ci
-int.ci
-presse.ci
-md.ci
-gouv.ci
-
-// ck : http://en.wikipedia.org/wiki/.ck
-*.ck
-!www.ck
-
-// cl : http://en.wikipedia.org/wiki/.cl
-cl
-gov.cl
-gob.cl
-co.cl
-mil.cl
-
-// cm : http://en.wikipedia.org/wiki/.cm plus bug 981927
-cm
-co.cm
-com.cm
-gov.cm
-net.cm
-
-// cn : http://en.wikipedia.org/wiki/.cn
-// Submitted by registry 2008-06-11
-cn
-ac.cn
-com.cn
-edu.cn
-gov.cn
-net.cn
-org.cn
-mil.cn
-公司.cn
-网络.cn
-網絡.cn
-// cn geographic names
-ah.cn
-bj.cn
-cq.cn
-fj.cn
-gd.cn
-gs.cn
-gz.cn
-gx.cn
-ha.cn
-hb.cn
-he.cn
-hi.cn
-hl.cn
-hn.cn
-jl.cn
-js.cn
-jx.cn
-ln.cn
-nm.cn
-nx.cn
-qh.cn
-sc.cn
-sd.cn
-sh.cn
-sn.cn
-sx.cn
-tj.cn
-xj.cn
-xz.cn
-yn.cn
-zj.cn
-hk.cn
-mo.cn
-tw.cn
-
-// co : http://en.wikipedia.org/wiki/.co
-// Submitted by registry 2008-06-11
-co
-arts.co
-com.co
-edu.co
-firm.co
-gov.co
-info.co
-int.co
-mil.co
-net.co
-nom.co
-org.co
-rec.co
-web.co
-
-// com : http://en.wikipedia.org/wiki/.com
-com
-
-// coop : http://en.wikipedia.org/wiki/.coop
-coop
-
-// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do
-cr
-ac.cr
-co.cr
-ed.cr
-fi.cr
-go.cr
-or.cr
-sa.cr
-
-// cu : http://en.wikipedia.org/wiki/.cu
-cu
-com.cu
-edu.cu
-org.cu
-net.cu
-gov.cu
-inf.cu
-
-// cv : http://en.wikipedia.org/wiki/.cv
-cv
-
-// cw : http://www.una.cw/cw_registry/
-// Confirmed by registry 2013-03-26
-cw
-com.cw
-edu.cw
-net.cw
-org.cw
-
-// cx : http://en.wikipedia.org/wiki/.cx
-// list of other 2nd level tlds ?
-cx
-gov.cx
-
-// cy : http://en.wikipedia.org/wiki/.cy
-*.cy
-
-// cz : http://en.wikipedia.org/wiki/.cz
-cz
-
-// de : http://en.wikipedia.org/wiki/.de
-// Confirmed by registry (with technical
-// reservations) 2008-07-01
-de
-
-// dj : http://en.wikipedia.org/wiki/.dj
-dj
-
-// dk : http://en.wikipedia.org/wiki/.dk
-// Confirmed by registry 2008-06-17
-dk
-
-// dm : http://en.wikipedia.org/wiki/.dm
-dm
-com.dm
-net.dm
-org.dm
-edu.dm
-gov.dm
-
-// do : http://en.wikipedia.org/wiki/.do
-do
-art.do
-com.do
-edu.do
-gob.do
-gov.do
-mil.do
-net.do
-org.do
-sld.do
-web.do
-
-// dz : http://en.wikipedia.org/wiki/.dz
-dz
-com.dz
-org.dz
-net.dz
-gov.dz
-edu.dz
-asso.dz
-pol.dz
-art.dz
-
-// ec : http://www.nic.ec/reg/paso1.asp
-// Submitted by registry 2008-07-04
-ec
-com.ec
-info.ec
-net.ec
-fin.ec
-k12.ec
-med.ec
-pro.ec
-org.ec
-edu.ec
-gov.ec
-gob.ec
-mil.ec
-
-// edu : http://en.wikipedia.org/wiki/.edu
-edu
-
-// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B
-ee
-edu.ee
-gov.ee
-riik.ee
-lib.ee
-med.ee
-com.ee
-pri.ee
-aip.ee
-org.ee
-fie.ee
-
-// eg : http://en.wikipedia.org/wiki/.eg
-eg
-com.eg
-edu.eg
-eun.eg
-gov.eg
-mil.eg
-name.eg
-net.eg
-org.eg
-sci.eg
-
-// er : http://en.wikipedia.org/wiki/.er
-*.er
-
-// es : https://www.nic.es/site_ingles/ingles/dominios/index.html
-es
-com.es
-nom.es
-org.es
-gob.es
-edu.es
-
-// et : http://en.wikipedia.org/wiki/.et
-et
-com.et
-gov.et
-org.et
-edu.et
-biz.et
-name.et
-info.et
-net.et
-
-// eu : http://en.wikipedia.org/wiki/.eu
-eu
-
-// fi : http://en.wikipedia.org/wiki/.fi
-fi
-// aland.fi : http://en.wikipedia.org/wiki/.ax
-// This domain is being phased out in favor of .ax. As there are still many
-// domains under aland.fi, we still keep it on the list until aland.fi is
-// completely removed.
-// TODO: Check for updates (expected to be phased out around Q1/2009)
-aland.fi
-
-// fj : http://en.wikipedia.org/wiki/.fj
-*.fj
-
-// fk : http://en.wikipedia.org/wiki/.fk
-*.fk
-
-// fm : http://en.wikipedia.org/wiki/.fm
-fm
-
-// fo : http://en.wikipedia.org/wiki/.fo
-fo
-
-// fr : http://www.afnic.fr/
-// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs
-fr
-com.fr
-asso.fr
-nom.fr
-prd.fr
-presse.fr
-tm.fr
-// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels
-aeroport.fr
-assedic.fr
-avocat.fr
-avoues.fr
-cci.fr
-chambagri.fr
-chirurgiens-dentistes.fr
-experts-comptables.fr
-geometre-expert.fr
-gouv.fr
-greta.fr
-huissier-justice.fr
-medecin.fr
-notaires.fr
-pharmacien.fr
-port.fr
-veterinaire.fr
-
-// ga : http://en.wikipedia.org/wiki/.ga
-ga
-
-// gb : This registry is effectively dormant
-// Submitted by registry 2008-06-12
-gb
-
-// gd : http://en.wikipedia.org/wiki/.gd
-gd
-
-// ge : http://www.nic.net.ge/policy_en.pdf
-ge
-com.ge
-edu.ge
-gov.ge
-org.ge
-mil.ge
-net.ge
-pvt.ge
-
-// gf : http://en.wikipedia.org/wiki/.gf
-gf
-
-// gg : http://www.channelisles.net/register-domains/
-// Confirmed by registry 2013-11-28
-gg
-co.gg
-net.gg
-org.gg
-
-// gh : http://en.wikipedia.org/wiki/.gh
-// see also: http://www.nic.gh/reg_now.php
-// Although domains directly at second level are not possible at the moment,
-// they have been possible for some time and may come back.
-gh
-com.gh
-edu.gh
-gov.gh
-org.gh
-mil.gh
-
-// gi : http://www.nic.gi/rules.html
-gi
-com.gi
-ltd.gi
-gov.gi
-mod.gi
-edu.gi
-org.gi
-
-// gl : http://en.wikipedia.org/wiki/.gl
-// http://nic.gl
-gl
-co.gl
-com.gl
-edu.gl
-net.gl
-org.gl
-
-// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm
-gm
-
-// gn : http://psg.com/dns/gn/gn.txt
-// Submitted by registry 2008-06-17
-gn
-ac.gn
-com.gn
-edu.gn
-gov.gn
-org.gn
-net.gn
-
-// gov : http://en.wikipedia.org/wiki/.gov
-gov
-
-// gp : http://www.nic.gp/index.php?lang=en
-gp
-com.gp
-net.gp
-mobi.gp
-edu.gp
-org.gp
-asso.gp
-
-// gq : http://en.wikipedia.org/wiki/.gq
-gq
-
-// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html
-// Submitted by registry 2008-06-09
-gr
-com.gr
-edu.gr
-net.gr
-org.gr
-gov.gr
-
-// gs : http://en.wikipedia.org/wiki/.gs
-gs
-
-// gt : http://www.gt/politicas_de_registro.html
-gt
-com.gt
-edu.gt
-gob.gt
-ind.gt
-mil.gt
-net.gt
-org.gt
-
-// gu : http://gadao.gov.gu/registration.txt
-*.gu
-
-// gw : http://en.wikipedia.org/wiki/.gw
-gw
-
-// gy : http://en.wikipedia.org/wiki/.gy
-// http://registry.gy/
-gy
-co.gy
-com.gy
-net.gy
-
-// hk : https://www.hkdnr.hk
-// Submitted by registry 2008-06-11
-hk
-com.hk
-edu.hk
-gov.hk
-idv.hk
-net.hk
-org.hk
-公司.hk
-教育.hk
-敎育.hk
-政府.hk
-個人.hk
-个人.hk
-箇人.hk
-網络.hk
-网络.hk
-组織.hk
-網絡.hk
-网絡.hk
-组织.hk
-組織.hk
-組织.hk
-
-// hm : http://en.wikipedia.org/wiki/.hm
-hm
-
-// hn : http://www.nic.hn/politicas/ps02,,05.html
-hn
-com.hn
-edu.hn
-org.hn
-net.hn
-mil.hn
-gob.hn
-
-// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf
-hr
-iz.hr
-from.hr
-name.hr
-com.hr
-
-// ht : http://www.nic.ht/info/charte.cfm
-ht
-com.ht
-shop.ht
-firm.ht
-info.ht
-adult.ht
-net.ht
-pro.ht
-org.ht
-med.ht
-art.ht
-coop.ht
-pol.ht
-asso.ht
-edu.ht
-rel.ht
-gouv.ht
-perso.ht
-
-// hu : http://www.domain.hu/domain/English/sld.html
-// Confirmed by registry 2008-06-12
-hu
-co.hu
-info.hu
-org.hu
-priv.hu
-sport.hu
-tm.hu
-2000.hu
-agrar.hu
-bolt.hu
-casino.hu
-city.hu
-erotica.hu
-erotika.hu
-film.hu
-forum.hu
-games.hu
-hotel.hu
-ingatlan.hu
-jogasz.hu
-konyvelo.hu
-lakas.hu
-media.hu
-news.hu
-reklam.hu
-sex.hu
-shop.hu
-suli.hu
-szex.hu
-tozsde.hu
-utazas.hu
-video.hu
-
-// id : https://register.pandi.or.id/
-id
-ac.id
-biz.id
-co.id
-desa.id
-go.id
-mil.id
-my.id
-net.id
-or.id
-sch.id
-web.id
-
-// ie : http://en.wikipedia.org/wiki/.ie
-ie
-gov.ie
-
-// il : http://en.wikipedia.org/wiki/.il
-*.il
-
-// im : https://www.nic.im/
-// Submitted by registry 2013-11-15
-im
-ac.im
-co.im
-com.im
-ltd.co.im
-net.im
-org.im
-plc.co.im
-tt.im
-tv.im
-
-// in : http://en.wikipedia.org/wiki/.in
-// see also: https://registry.in/Policies
-// Please note, that nic.in is not an offical eTLD, but used by most
-// government institutions.
-in
-co.in
-firm.in
-net.in
-org.in
-gen.in
-ind.in
-nic.in
-ac.in
-edu.in
-res.in
-gov.in
-mil.in
-
-// info : http://en.wikipedia.org/wiki/.info
-info
-
-// int : http://en.wikipedia.org/wiki/.int
-// Confirmed by registry 2008-06-18
-int
-eu.int
-
-// io : http://www.nic.io/rules.html
-// list of other 2nd level tlds ?
-io
-com.io
-
-// iq : http://www.cmc.iq/english/iq/iqregister1.htm
-iq
-gov.iq
-edu.iq
-mil.iq
-com.iq
-org.iq
-net.iq
-
-// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules
-// Also see http://www.nic.ir/Internationalized_Domain_Names
-// Two .ir entries added at request of , 2010-04-16
-ir
-ac.ir
-co.ir
-gov.ir
-id.ir
-net.ir
-org.ir
-sch.ir
-// xn--mgba3a4f16a.ir (.ir, Persian YEH)
-ایران.ir
-// xn--mgba3a4fra.ir (.ir, Arabic YEH)
-ايران.ir
-
-// is : http://www.isnic.is/domain/rules.php
-// Confirmed by registry 2008-12-06
-is
-net.is
-com.is
-edu.is
-gov.is
-org.is
-int.is
-
-// it : http://en.wikipedia.org/wiki/.it
-it
-gov.it
-edu.it
-// Reserved geo-names:
-// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf
-// There is also a list of reserved geo-names corresponding to Italian municipalities
-// http://www.nic.it/documenti/appendice-c.pdf, but it is not included here.
-// Regions
-abr.it
-abruzzo.it
-aosta-valley.it
-aostavalley.it
-bas.it
-basilicata.it
-cal.it
-calabria.it
-cam.it
-campania.it
-emilia-romagna.it
-emiliaromagna.it
-emr.it
-friuli-v-giulia.it
-friuli-ve-giulia.it
-friuli-vegiulia.it
-friuli-venezia-giulia.it
-friuli-veneziagiulia.it
-friuli-vgiulia.it
-friuliv-giulia.it
-friulive-giulia.it
-friulivegiulia.it
-friulivenezia-giulia.it
-friuliveneziagiulia.it
-friulivgiulia.it
-fvg.it
-laz.it
-lazio.it
-lig.it
-liguria.it
-lom.it
-lombardia.it
-lombardy.it
-lucania.it
-mar.it
-marche.it
-mol.it
-molise.it
-piedmont.it
-piemonte.it
-pmn.it
-pug.it
-puglia.it
-sar.it
-sardegna.it
-sardinia.it
-sic.it
-sicilia.it
-sicily.it
-taa.it
-tos.it
-toscana.it
-trentino-a-adige.it
-trentino-aadige.it
-trentino-alto-adige.it
-trentino-altoadige.it
-trentino-s-tirol.it
-trentino-stirol.it
-trentino-sud-tirol.it
-trentino-sudtirol.it
-trentino-sued-tirol.it
-trentino-suedtirol.it
-trentinoa-adige.it
-trentinoaadige.it
-trentinoalto-adige.it
-trentinoaltoadige.it
-trentinos-tirol.it
-trentinostirol.it
-trentinosud-tirol.it
-trentinosudtirol.it
-trentinosued-tirol.it
-trentinosuedtirol.it
-tuscany.it
-umb.it
-umbria.it
-val-d-aosta.it
-val-daosta.it
-vald-aosta.it
-valdaosta.it
-valle-aosta.it
-valle-d-aosta.it
-valle-daosta.it
-valleaosta.it
-valled-aosta.it
-valledaosta.it
-vallee-aoste.it
-valleeaoste.it
-vao.it
-vda.it
-ven.it
-veneto.it
-// Provinces
-ag.it
-agrigento.it
-al.it
-alessandria.it
-alto-adige.it
-altoadige.it
-an.it
-ancona.it
-andria-barletta-trani.it
-andria-trani-barletta.it
-andriabarlettatrani.it
-andriatranibarletta.it
-ao.it
-aosta.it
-aoste.it
-ap.it
-aq.it
-aquila.it
-ar.it
-arezzo.it
-ascoli-piceno.it
-ascolipiceno.it
-asti.it
-at.it
-av.it
-avellino.it
-ba.it
-balsan.it
-bari.it
-barletta-trani-andria.it
-barlettatraniandria.it
-belluno.it
-benevento.it
-bergamo.it
-bg.it
-bi.it
-biella.it
-bl.it
-bn.it
-bo.it
-bologna.it
-bolzano.it
-bozen.it
-br.it
-brescia.it
-brindisi.it
-bs.it
-bt.it
-bz.it
-ca.it
-cagliari.it
-caltanissetta.it
-campidano-medio.it
-campidanomedio.it
-campobasso.it
-carbonia-iglesias.it
-carboniaiglesias.it
-carrara-massa.it
-carraramassa.it
-caserta.it
-catania.it
-catanzaro.it
-cb.it
-ce.it
-cesena-forli.it
-cesenaforli.it
-ch.it
-chieti.it
-ci.it
-cl.it
-cn.it
-co.it
-como.it
-cosenza.it
-cr.it
-cremona.it
-crotone.it
-cs.it
-ct.it
-cuneo.it
-cz.it
-dell-ogliastra.it
-dellogliastra.it
-en.it
-enna.it
-fc.it
-fe.it
-fermo.it
-ferrara.it
-fg.it
-fi.it
-firenze.it
-florence.it
-fm.it
-foggia.it
-forli-cesena.it
-forlicesena.it
-fr.it
-frosinone.it
-ge.it
-genoa.it
-genova.it
-go.it
-gorizia.it
-gr.it
-grosseto.it
-iglesias-carbonia.it
-iglesiascarbonia.it
-im.it
-imperia.it
-is.it
-isernia.it
-kr.it
-la-spezia.it
-laquila.it
-laspezia.it
-latina.it
-lc.it
-le.it
-lecce.it
-lecco.it
-li.it
-livorno.it
-lo.it
-lodi.it
-lt.it
-lu.it
-lucca.it
-macerata.it
-mantova.it
-massa-carrara.it
-massacarrara.it
-matera.it
-mb.it
-mc.it
-me.it
-medio-campidano.it
-mediocampidano.it
-messina.it
-mi.it
-milan.it
-milano.it
-mn.it
-mo.it
-modena.it
-monza-brianza.it
-monza-e-della-brianza.it
-monza.it
-monzabrianza.it
-monzaebrianza.it
-monzaedellabrianza.it
-ms.it
-mt.it
-na.it
-naples.it
-napoli.it
-no.it
-novara.it
-nu.it
-nuoro.it
-og.it
-ogliastra.it
-olbia-tempio.it
-olbiatempio.it
-or.it
-oristano.it
-ot.it
-pa.it
-padova.it
-padua.it
-palermo.it
-parma.it
-pavia.it
-pc.it
-pd.it
-pe.it
-perugia.it
-pesaro-urbino.it
-pesarourbino.it
-pescara.it
-pg.it
-pi.it
-piacenza.it
-pisa.it
-pistoia.it
-pn.it
-po.it
-pordenone.it
-potenza.it
-pr.it
-prato.it
-pt.it
-pu.it
-pv.it
-pz.it
-ra.it
-ragusa.it
-ravenna.it
-rc.it
-re.it
-reggio-calabria.it
-reggio-emilia.it
-reggiocalabria.it
-reggioemilia.it
-rg.it
-ri.it
-rieti.it
-rimini.it
-rm.it
-rn.it
-ro.it
-roma.it
-rome.it
-rovigo.it
-sa.it
-salerno.it
-sassari.it
-savona.it
-si.it
-siena.it
-siracusa.it
-so.it
-sondrio.it
-sp.it
-sr.it
-ss.it
-suedtirol.it
-sv.it
-ta.it
-taranto.it
-te.it
-tempio-olbia.it
-tempioolbia.it
-teramo.it
-terni.it
-tn.it
-to.it
-torino.it
-tp.it
-tr.it
-trani-andria-barletta.it
-trani-barletta-andria.it
-traniandriabarletta.it
-tranibarlettaandria.it
-trapani.it
-trentino.it
-trento.it
-treviso.it
-trieste.it
-ts.it
-turin.it
-tv.it
-ud.it
-udine.it
-urbino-pesaro.it
-urbinopesaro.it
-va.it
-varese.it
-vb.it
-vc.it
-ve.it
-venezia.it
-venice.it
-verbania.it
-vercelli.it
-verona.it
-vi.it
-vibo-valentia.it
-vibovalentia.it
-vicenza.it
-viterbo.it
-vr.it
-vs.it
-vt.it
-vv.it
-
-// je : http://www.channelisles.net/register-domains/
-// Confirmed by registry 2013-11-28
-je
-co.je
-net.je
-org.je
-
-// jm : http://www.com.jm/register.html
-*.jm
-
-// jo : http://www.dns.jo/Registration_policy.aspx
-jo
-com.jo
-org.jo
-net.jo
-edu.jo
-sch.jo
-gov.jo
-mil.jo
-name.jo
-
-// jobs : http://en.wikipedia.org/wiki/.jobs
-jobs
-
-// jp : http://en.wikipedia.org/wiki/.jp
-// http://jprs.co.jp/en/jpdomain.html
-// Submitted by registry 2014-10-30
-jp
-// jp organizational type names
-ac.jp
-ad.jp
-co.jp
-ed.jp
-go.jp
-gr.jp
-lg.jp
-ne.jp
-or.jp
-// jp prefecture type names
-aichi.jp
-akita.jp
-aomori.jp
-chiba.jp
-ehime.jp
-fukui.jp
-fukuoka.jp
-fukushima.jp
-gifu.jp
-gunma.jp
-hiroshima.jp
-hokkaido.jp
-hyogo.jp
-ibaraki.jp
-ishikawa.jp
-iwate.jp
-kagawa.jp
-kagoshima.jp
-kanagawa.jp
-kochi.jp
-kumamoto.jp
-kyoto.jp
-mie.jp
-miyagi.jp
-miyazaki.jp
-nagano.jp
-nagasaki.jp
-nara.jp
-niigata.jp
-oita.jp
-okayama.jp
-okinawa.jp
-osaka.jp
-saga.jp
-saitama.jp
-shiga.jp
-shimane.jp
-shizuoka.jp
-tochigi.jp
-tokushima.jp
-tokyo.jp
-tottori.jp
-toyama.jp
-wakayama.jp
-yamagata.jp
-yamaguchi.jp
-yamanashi.jp
-栃木.jp
-愛知.jp
-愛媛.jp
-兵庫.jp
-熊本.jp
-茨城.jp
-北海道.jp
-千葉.jp
-和歌山.jp
-長崎.jp
-長野.jp
-新潟.jp
-青森.jp
-静岡.jp
-東京.jp
-石川.jp
-埼玉.jp
-三重.jp
-京都.jp
-佐賀.jp
-大分.jp
-大阪.jp
-奈良.jp
-宮城.jp
-宮崎.jp
-富山.jp
-山口.jp
-山形.jp
-山梨.jp
-岩手.jp
-岐阜.jp
-岡山.jp
-島根.jp
-広島.jp
-徳島.jp
-沖縄.jp
-滋賀.jp
-神奈川.jp
-福井.jp
-福岡.jp
-福島.jp
-秋田.jp
-群馬.jp
-香川.jp
-高知.jp
-鳥取.jp
-鹿児島.jp
-// jp geographic type names
-// http://jprs.jp/doc/rule/saisoku-1.html
-*.kawasaki.jp
-*.kitakyushu.jp
-*.kobe.jp
-*.nagoya.jp
-*.sapporo.jp
-*.sendai.jp
-*.yokohama.jp
-!city.kawasaki.jp
-!city.kitakyushu.jp
-!city.kobe.jp
-!city.nagoya.jp
-!city.sapporo.jp
-!city.sendai.jp
-!city.yokohama.jp
-// 4th level registration
-aisai.aichi.jp
-ama.aichi.jp
-anjo.aichi.jp
-asuke.aichi.jp
-chiryu.aichi.jp
-chita.aichi.jp
-fuso.aichi.jp
-gamagori.aichi.jp
-handa.aichi.jp
-hazu.aichi.jp
-hekinan.aichi.jp
-higashiura.aichi.jp
-ichinomiya.aichi.jp
-inazawa.aichi.jp
-inuyama.aichi.jp
-isshiki.aichi.jp
-iwakura.aichi.jp
-kanie.aichi.jp
-kariya.aichi.jp
-kasugai.aichi.jp
-kira.aichi.jp
-kiyosu.aichi.jp
-komaki.aichi.jp
-konan.aichi.jp
-kota.aichi.jp
-mihama.aichi.jp
-miyoshi.aichi.jp
-nishio.aichi.jp
-nisshin.aichi.jp
-obu.aichi.jp
-oguchi.aichi.jp
-oharu.aichi.jp
-okazaki.aichi.jp
-owariasahi.aichi.jp
-seto.aichi.jp
-shikatsu.aichi.jp
-shinshiro.aichi.jp
-shitara.aichi.jp
-tahara.aichi.jp
-takahama.aichi.jp
-tobishima.aichi.jp
-toei.aichi.jp
-togo.aichi.jp
-tokai.aichi.jp
-tokoname.aichi.jp
-toyoake.aichi.jp
-toyohashi.aichi.jp
-toyokawa.aichi.jp
-toyone.aichi.jp
-toyota.aichi.jp
-tsushima.aichi.jp
-yatomi.aichi.jp
-akita.akita.jp
-daisen.akita.jp
-fujisato.akita.jp
-gojome.akita.jp
-hachirogata.akita.jp
-happou.akita.jp
-higashinaruse.akita.jp
-honjo.akita.jp
-honjyo.akita.jp
-ikawa.akita.jp
-kamikoani.akita.jp
-kamioka.akita.jp
-katagami.akita.jp
-kazuno.akita.jp
-kitaakita.akita.jp
-kosaka.akita.jp
-kyowa.akita.jp
-misato.akita.jp
-mitane.akita.jp
-moriyoshi.akita.jp
-nikaho.akita.jp
-noshiro.akita.jp
-odate.akita.jp
-oga.akita.jp
-ogata.akita.jp
-semboku.akita.jp
-yokote.akita.jp
-yurihonjo.akita.jp
-aomori.aomori.jp
-gonohe.aomori.jp
-hachinohe.aomori.jp
-hashikami.aomori.jp
-hiranai.aomori.jp
-hirosaki.aomori.jp
-itayanagi.aomori.jp
-kuroishi.aomori.jp
-misawa.aomori.jp
-mutsu.aomori.jp
-nakadomari.aomori.jp
-noheji.aomori.jp
-oirase.aomori.jp
-owani.aomori.jp
-rokunohe.aomori.jp
-sannohe.aomori.jp
-shichinohe.aomori.jp
-shingo.aomori.jp
-takko.aomori.jp
-towada.aomori.jp
-tsugaru.aomori.jp
-tsuruta.aomori.jp
-abiko.chiba.jp
-asahi.chiba.jp
-chonan.chiba.jp
-chosei.chiba.jp
-choshi.chiba.jp
-chuo.chiba.jp
-funabashi.chiba.jp
-futtsu.chiba.jp
-hanamigawa.chiba.jp
-ichihara.chiba.jp
-ichikawa.chiba.jp
-ichinomiya.chiba.jp
-inzai.chiba.jp
-isumi.chiba.jp
-kamagaya.chiba.jp
-kamogawa.chiba.jp
-kashiwa.chiba.jp
-katori.chiba.jp
-katsuura.chiba.jp
-kimitsu.chiba.jp
-kisarazu.chiba.jp
-kozaki.chiba.jp
-kujukuri.chiba.jp
-kyonan.chiba.jp
-matsudo.chiba.jp
-midori.chiba.jp
-mihama.chiba.jp
-minamiboso.chiba.jp
-mobara.chiba.jp
-mutsuzawa.chiba.jp
-nagara.chiba.jp
-nagareyama.chiba.jp
-narashino.chiba.jp
-narita.chiba.jp
-noda.chiba.jp
-oamishirasato.chiba.jp
-omigawa.chiba.jp
-onjuku.chiba.jp
-otaki.chiba.jp
-sakae.chiba.jp
-sakura.chiba.jp
-shimofusa.chiba.jp
-shirako.chiba.jp
-shiroi.chiba.jp
-shisui.chiba.jp
-sodegaura.chiba.jp
-sosa.chiba.jp
-tako.chiba.jp
-tateyama.chiba.jp
-togane.chiba.jp
-tohnosho.chiba.jp
-tomisato.chiba.jp
-urayasu.chiba.jp
-yachimata.chiba.jp
-yachiyo.chiba.jp
-yokaichiba.chiba.jp
-yokoshibahikari.chiba.jp
-yotsukaido.chiba.jp
-ainan.ehime.jp
-honai.ehime.jp
-ikata.ehime.jp
-imabari.ehime.jp
-iyo.ehime.jp
-kamijima.ehime.jp
-kihoku.ehime.jp
-kumakogen.ehime.jp
-masaki.ehime.jp
-matsuno.ehime.jp
-matsuyama.ehime.jp
-namikata.ehime.jp
-niihama.ehime.jp
-ozu.ehime.jp
-saijo.ehime.jp
-seiyo.ehime.jp
-shikokuchuo.ehime.jp
-tobe.ehime.jp
-toon.ehime.jp
-uchiko.ehime.jp
-uwajima.ehime.jp
-yawatahama.ehime.jp
-echizen.fukui.jp
-eiheiji.fukui.jp
-fukui.fukui.jp
-ikeda.fukui.jp
-katsuyama.fukui.jp
-mihama.fukui.jp
-minamiechizen.fukui.jp
-obama.fukui.jp
-ohi.fukui.jp
-ono.fukui.jp
-sabae.fukui.jp
-sakai.fukui.jp
-takahama.fukui.jp
-tsuruga.fukui.jp
-wakasa.fukui.jp
-ashiya.fukuoka.jp
-buzen.fukuoka.jp
-chikugo.fukuoka.jp
-chikuho.fukuoka.jp
-chikujo.fukuoka.jp
-chikushino.fukuoka.jp
-chikuzen.fukuoka.jp
-chuo.fukuoka.jp
-dazaifu.fukuoka.jp
-fukuchi.fukuoka.jp
-hakata.fukuoka.jp
-higashi.fukuoka.jp
-hirokawa.fukuoka.jp
-hisayama.fukuoka.jp
-iizuka.fukuoka.jp
-inatsuki.fukuoka.jp
-kaho.fukuoka.jp
-kasuga.fukuoka.jp
-kasuya.fukuoka.jp
-kawara.fukuoka.jp
-keisen.fukuoka.jp
-koga.fukuoka.jp
-kurate.fukuoka.jp
-kurogi.fukuoka.jp
-kurume.fukuoka.jp
-minami.fukuoka.jp
-miyako.fukuoka.jp
-miyama.fukuoka.jp
-miyawaka.fukuoka.jp
-mizumaki.fukuoka.jp
-munakata.fukuoka.jp
-nakagawa.fukuoka.jp
-nakama.fukuoka.jp
-nishi.fukuoka.jp
-nogata.fukuoka.jp
-ogori.fukuoka.jp
-okagaki.fukuoka.jp
-okawa.fukuoka.jp
-oki.fukuoka.jp
-omuta.fukuoka.jp
-onga.fukuoka.jp
-onojo.fukuoka.jp
-oto.fukuoka.jp
-saigawa.fukuoka.jp
-sasaguri.fukuoka.jp
-shingu.fukuoka.jp
-shinyoshitomi.fukuoka.jp
-shonai.fukuoka.jp
-soeda.fukuoka.jp
-sue.fukuoka.jp
-tachiarai.fukuoka.jp
-tagawa.fukuoka.jp
-takata.fukuoka.jp
-toho.fukuoka.jp
-toyotsu.fukuoka.jp
-tsuiki.fukuoka.jp
-ukiha.fukuoka.jp
-umi.fukuoka.jp
-usui.fukuoka.jp
-yamada.fukuoka.jp
-yame.fukuoka.jp
-yanagawa.fukuoka.jp
-yukuhashi.fukuoka.jp
-aizubange.fukushima.jp
-aizumisato.fukushima.jp
-aizuwakamatsu.fukushima.jp
-asakawa.fukushima.jp
-bandai.fukushima.jp
-date.fukushima.jp
-fukushima.fukushima.jp
-furudono.fukushima.jp
-futaba.fukushima.jp
-hanawa.fukushima.jp
-higashi.fukushima.jp
-hirata.fukushima.jp
-hirono.fukushima.jp
-iitate.fukushima.jp
-inawashiro.fukushima.jp
-ishikawa.fukushima.jp
-iwaki.fukushima.jp
-izumizaki.fukushima.jp
-kagamiishi.fukushima.jp
-kaneyama.fukushima.jp
-kawamata.fukushima.jp
-kitakata.fukushima.jp
-kitashiobara.fukushima.jp
-koori.fukushima.jp
-koriyama.fukushima.jp
-kunimi.fukushima.jp
-miharu.fukushima.jp
-mishima.fukushima.jp
-namie.fukushima.jp
-nango.fukushima.jp
-nishiaizu.fukushima.jp
-nishigo.fukushima.jp
-okuma.fukushima.jp
-omotego.fukushima.jp
-ono.fukushima.jp
-otama.fukushima.jp
-samegawa.fukushima.jp
-shimogo.fukushima.jp
-shirakawa.fukushima.jp
-showa.fukushima.jp
-soma.fukushima.jp
-sukagawa.fukushima.jp
-taishin.fukushima.jp
-tamakawa.fukushima.jp
-tanagura.fukushima.jp
-tenei.fukushima.jp
-yabuki.fukushima.jp
-yamato.fukushima.jp
-yamatsuri.fukushima.jp
-yanaizu.fukushima.jp
-yugawa.fukushima.jp
-anpachi.gifu.jp
-ena.gifu.jp
-gifu.gifu.jp
-ginan.gifu.jp
-godo.gifu.jp
-gujo.gifu.jp
-hashima.gifu.jp
-hichiso.gifu.jp
-hida.gifu.jp
-higashishirakawa.gifu.jp
-ibigawa.gifu.jp
-ikeda.gifu.jp
-kakamigahara.gifu.jp
-kani.gifu.jp
-kasahara.gifu.jp
-kasamatsu.gifu.jp
-kawaue.gifu.jp
-kitagata.gifu.jp
-mino.gifu.jp
-minokamo.gifu.jp
-mitake.gifu.jp
-mizunami.gifu.jp
-motosu.gifu.jp
-nakatsugawa.gifu.jp
-ogaki.gifu.jp
-sakahogi.gifu.jp
-seki.gifu.jp
-sekigahara.gifu.jp
-shirakawa.gifu.jp
-tajimi.gifu.jp
-takayama.gifu.jp
-tarui.gifu.jp
-toki.gifu.jp
-tomika.gifu.jp
-wanouchi.gifu.jp
-yamagata.gifu.jp
-yaotsu.gifu.jp
-yoro.gifu.jp
-annaka.gunma.jp
-chiyoda.gunma.jp
-fujioka.gunma.jp
-higashiagatsuma.gunma.jp
-isesaki.gunma.jp
-itakura.gunma.jp
-kanna.gunma.jp
-kanra.gunma.jp
-katashina.gunma.jp
-kawaba.gunma.jp
-kiryu.gunma.jp
-kusatsu.gunma.jp
-maebashi.gunma.jp
-meiwa.gunma.jp
-midori.gunma.jp
-minakami.gunma.jp
-naganohara.gunma.jp
-nakanojo.gunma.jp
-nanmoku.gunma.jp
-numata.gunma.jp
-oizumi.gunma.jp
-ora.gunma.jp
-ota.gunma.jp
-shibukawa.gunma.jp
-shimonita.gunma.jp
-shinto.gunma.jp
-showa.gunma.jp
-takasaki.gunma.jp
-takayama.gunma.jp
-tamamura.gunma.jp
-tatebayashi.gunma.jp
-tomioka.gunma.jp
-tsukiyono.gunma.jp
-tsumagoi.gunma.jp
-ueno.gunma.jp
-yoshioka.gunma.jp
-asaminami.hiroshima.jp
-daiwa.hiroshima.jp
-etajima.hiroshima.jp
-fuchu.hiroshima.jp
-fukuyama.hiroshima.jp
-hatsukaichi.hiroshima.jp
-higashihiroshima.hiroshima.jp
-hongo.hiroshima.jp
-jinsekikogen.hiroshima.jp
-kaita.hiroshima.jp
-kui.hiroshima.jp
-kumano.hiroshima.jp
-kure.hiroshima.jp
-mihara.hiroshima.jp
-miyoshi.hiroshima.jp
-naka.hiroshima.jp
-onomichi.hiroshima.jp
-osakikamijima.hiroshima.jp
-otake.hiroshima.jp
-saka.hiroshima.jp
-sera.hiroshima.jp
-seranishi.hiroshima.jp
-shinichi.hiroshima.jp
-shobara.hiroshima.jp
-takehara.hiroshima.jp
-abashiri.hokkaido.jp
-abira.hokkaido.jp
-aibetsu.hokkaido.jp
-akabira.hokkaido.jp
-akkeshi.hokkaido.jp
-asahikawa.hokkaido.jp
-ashibetsu.hokkaido.jp
-ashoro.hokkaido.jp
-assabu.hokkaido.jp
-atsuma.hokkaido.jp
-bibai.hokkaido.jp
-biei.hokkaido.jp
-bifuka.hokkaido.jp
-bihoro.hokkaido.jp
-biratori.hokkaido.jp
-chippubetsu.hokkaido.jp
-chitose.hokkaido.jp
-date.hokkaido.jp
-ebetsu.hokkaido.jp
-embetsu.hokkaido.jp
-eniwa.hokkaido.jp
-erimo.hokkaido.jp
-esan.hokkaido.jp
-esashi.hokkaido.jp
-fukagawa.hokkaido.jp
-fukushima.hokkaido.jp
-furano.hokkaido.jp
-furubira.hokkaido.jp
-haboro.hokkaido.jp
-hakodate.hokkaido.jp
-hamatonbetsu.hokkaido.jp
-hidaka.hokkaido.jp
-higashikagura.hokkaido.jp
-higashikawa.hokkaido.jp
-hiroo.hokkaido.jp
-hokuryu.hokkaido.jp
-hokuto.hokkaido.jp
-honbetsu.hokkaido.jp
-horokanai.hokkaido.jp
-horonobe.hokkaido.jp
-ikeda.hokkaido.jp
-imakane.hokkaido.jp
-ishikari.hokkaido.jp
-iwamizawa.hokkaido.jp
-iwanai.hokkaido.jp
-kamifurano.hokkaido.jp
-kamikawa.hokkaido.jp
-kamishihoro.hokkaido.jp
-kamisunagawa.hokkaido.jp
-kamoenai.hokkaido.jp
-kayabe.hokkaido.jp
-kembuchi.hokkaido.jp
-kikonai.hokkaido.jp
-kimobetsu.hokkaido.jp
-kitahiroshima.hokkaido.jp
-kitami.hokkaido.jp
-kiyosato.hokkaido.jp
-koshimizu.hokkaido.jp
-kunneppu.hokkaido.jp
-kuriyama.hokkaido.jp
-kuromatsunai.hokkaido.jp
-kushiro.hokkaido.jp
-kutchan.hokkaido.jp
-kyowa.hokkaido.jp
-mashike.hokkaido.jp
-matsumae.hokkaido.jp
-mikasa.hokkaido.jp
-minamifurano.hokkaido.jp
-mombetsu.hokkaido.jp
-moseushi.hokkaido.jp
-mukawa.hokkaido.jp
-muroran.hokkaido.jp
-naie.hokkaido.jp
-nakagawa.hokkaido.jp
-nakasatsunai.hokkaido.jp
-nakatombetsu.hokkaido.jp
-nanae.hokkaido.jp
-nanporo.hokkaido.jp
-nayoro.hokkaido.jp
-nemuro.hokkaido.jp
-niikappu.hokkaido.jp
-niki.hokkaido.jp
-nishiokoppe.hokkaido.jp
-noboribetsu.hokkaido.jp
-numata.hokkaido.jp
-obihiro.hokkaido.jp
-obira.hokkaido.jp
-oketo.hokkaido.jp
-okoppe.hokkaido.jp
-otaru.hokkaido.jp
-otobe.hokkaido.jp
-otofuke.hokkaido.jp
-otoineppu.hokkaido.jp
-oumu.hokkaido.jp
-ozora.hokkaido.jp
-pippu.hokkaido.jp
-rankoshi.hokkaido.jp
-rebun.hokkaido.jp
-rikubetsu.hokkaido.jp
-rishiri.hokkaido.jp
-rishirifuji.hokkaido.jp
-saroma.hokkaido.jp
-sarufutsu.hokkaido.jp
-shakotan.hokkaido.jp
-shari.hokkaido.jp
-shibecha.hokkaido.jp
-shibetsu.hokkaido.jp
-shikabe.hokkaido.jp
-shikaoi.hokkaido.jp
-shimamaki.hokkaido.jp
-shimizu.hokkaido.jp
-shimokawa.hokkaido.jp
-shinshinotsu.hokkaido.jp
-shintoku.hokkaido.jp
-shiranuka.hokkaido.jp
-shiraoi.hokkaido.jp
-shiriuchi.hokkaido.jp
-sobetsu.hokkaido.jp
-sunagawa.hokkaido.jp
-taiki.hokkaido.jp
-takasu.hokkaido.jp
-takikawa.hokkaido.jp
-takinoue.hokkaido.jp
-teshikaga.hokkaido.jp
-tobetsu.hokkaido.jp
-tohma.hokkaido.jp
-tomakomai.hokkaido.jp
-tomari.hokkaido.jp
-toya.hokkaido.jp
-toyako.hokkaido.jp
-toyotomi.hokkaido.jp
-toyoura.hokkaido.jp
-tsubetsu.hokkaido.jp
-tsukigata.hokkaido.jp
-urakawa.hokkaido.jp
-urausu.hokkaido.jp
-uryu.hokkaido.jp
-utashinai.hokkaido.jp
-wakkanai.hokkaido.jp
-wassamu.hokkaido.jp
-yakumo.hokkaido.jp
-yoichi.hokkaido.jp
-aioi.hyogo.jp
-akashi.hyogo.jp
-ako.hyogo.jp
-amagasaki.hyogo.jp
-aogaki.hyogo.jp
-asago.hyogo.jp
-ashiya.hyogo.jp
-awaji.hyogo.jp
-fukusaki.hyogo.jp
-goshiki.hyogo.jp
-harima.hyogo.jp
-himeji.hyogo.jp
-ichikawa.hyogo.jp
-inagawa.hyogo.jp
-itami.hyogo.jp
-kakogawa.hyogo.jp
-kamigori.hyogo.jp
-kamikawa.hyogo.jp
-kasai.hyogo.jp
-kasuga.hyogo.jp
-kawanishi.hyogo.jp
-miki.hyogo.jp
-minamiawaji.hyogo.jp
-nishinomiya.hyogo.jp
-nishiwaki.hyogo.jp
-ono.hyogo.jp
-sanda.hyogo.jp
-sannan.hyogo.jp
-sasayama.hyogo.jp
-sayo.hyogo.jp
-shingu.hyogo.jp
-shinonsen.hyogo.jp
-shiso.hyogo.jp
-sumoto.hyogo.jp
-taishi.hyogo.jp
-taka.hyogo.jp
-takarazuka.hyogo.jp
-takasago.hyogo.jp
-takino.hyogo.jp
-tamba.hyogo.jp
-tatsuno.hyogo.jp
-toyooka.hyogo.jp
-yabu.hyogo.jp
-yashiro.hyogo.jp
-yoka.hyogo.jp
-yokawa.hyogo.jp
-ami.ibaraki.jp
-asahi.ibaraki.jp
-bando.ibaraki.jp
-chikusei.ibaraki.jp
-daigo.ibaraki.jp
-fujishiro.ibaraki.jp
-hitachi.ibaraki.jp
-hitachinaka.ibaraki.jp
-hitachiomiya.ibaraki.jp
-hitachiota.ibaraki.jp
-ibaraki.ibaraki.jp
-ina.ibaraki.jp
-inashiki.ibaraki.jp
-itako.ibaraki.jp
-iwama.ibaraki.jp
-joso.ibaraki.jp
-kamisu.ibaraki.jp
-kasama.ibaraki.jp
-kashima.ibaraki.jp
-kasumigaura.ibaraki.jp
-koga.ibaraki.jp
-miho.ibaraki.jp
-mito.ibaraki.jp
-moriya.ibaraki.jp
-naka.ibaraki.jp
-namegata.ibaraki.jp
-oarai.ibaraki.jp
-ogawa.ibaraki.jp
-omitama.ibaraki.jp
-ryugasaki.ibaraki.jp
-sakai.ibaraki.jp
-sakuragawa.ibaraki.jp
-shimodate.ibaraki.jp
-shimotsuma.ibaraki.jp
-shirosato.ibaraki.jp
-sowa.ibaraki.jp
-suifu.ibaraki.jp
-takahagi.ibaraki.jp
-tamatsukuri.ibaraki.jp
-tokai.ibaraki.jp
-tomobe.ibaraki.jp
-tone.ibaraki.jp
-toride.ibaraki.jp
-tsuchiura.ibaraki.jp
-tsukuba.ibaraki.jp
-uchihara.ibaraki.jp
-ushiku.ibaraki.jp
-yachiyo.ibaraki.jp
-yamagata.ibaraki.jp
-yawara.ibaraki.jp
-yuki.ibaraki.jp
-anamizu.ishikawa.jp
-hakui.ishikawa.jp
-hakusan.ishikawa.jp
-kaga.ishikawa.jp
-kahoku.ishikawa.jp
-kanazawa.ishikawa.jp
-kawakita.ishikawa.jp
-komatsu.ishikawa.jp
-nakanoto.ishikawa.jp
-nanao.ishikawa.jp
-nomi.ishikawa.jp
-nonoichi.ishikawa.jp
-noto.ishikawa.jp
-shika.ishikawa.jp
-suzu.ishikawa.jp
-tsubata.ishikawa.jp
-tsurugi.ishikawa.jp
-uchinada.ishikawa.jp
-wajima.ishikawa.jp
-fudai.iwate.jp
-fujisawa.iwate.jp
-hanamaki.iwate.jp
-hiraizumi.iwate.jp
-hirono.iwate.jp
-ichinohe.iwate.jp
-ichinoseki.iwate.jp
-iwaizumi.iwate.jp
-iwate.iwate.jp
-joboji.iwate.jp
-kamaishi.iwate.jp
-kanegasaki.iwate.jp
-karumai.iwate.jp
-kawai.iwate.jp
-kitakami.iwate.jp
-kuji.iwate.jp
-kunohe.iwate.jp
-kuzumaki.iwate.jp
-miyako.iwate.jp
-mizusawa.iwate.jp
-morioka.iwate.jp
-ninohe.iwate.jp
-noda.iwate.jp
-ofunato.iwate.jp
-oshu.iwate.jp
-otsuchi.iwate.jp
-rikuzentakata.iwate.jp
-shiwa.iwate.jp
-shizukuishi.iwate.jp
-sumita.iwate.jp
-tanohata.iwate.jp
-tono.iwate.jp
-yahaba.iwate.jp
-yamada.iwate.jp
-ayagawa.kagawa.jp
-higashikagawa.kagawa.jp
-kanonji.kagawa.jp
-kotohira.kagawa.jp
-manno.kagawa.jp
-marugame.kagawa.jp
-mitoyo.kagawa.jp
-naoshima.kagawa.jp
-sanuki.kagawa.jp
-tadotsu.kagawa.jp
-takamatsu.kagawa.jp
-tonosho.kagawa.jp
-uchinomi.kagawa.jp
-utazu.kagawa.jp
-zentsuji.kagawa.jp
-akune.kagoshima.jp
-amami.kagoshima.jp
-hioki.kagoshima.jp
-isa.kagoshima.jp
-isen.kagoshima.jp
-izumi.kagoshima.jp
-kagoshima.kagoshima.jp
-kanoya.kagoshima.jp
-kawanabe.kagoshima.jp
-kinko.kagoshima.jp
-kouyama.kagoshima.jp
-makurazaki.kagoshima.jp
-matsumoto.kagoshima.jp
-minamitane.kagoshima.jp
-nakatane.kagoshima.jp
-nishinoomote.kagoshima.jp
-satsumasendai.kagoshima.jp
-soo.kagoshima.jp
-tarumizu.kagoshima.jp
-yusui.kagoshima.jp
-aikawa.kanagawa.jp
-atsugi.kanagawa.jp
-ayase.kanagawa.jp
-chigasaki.kanagawa.jp
-ebina.kanagawa.jp
-fujisawa.kanagawa.jp
-hadano.kanagawa.jp
-hakone.kanagawa.jp
-hiratsuka.kanagawa.jp
-isehara.kanagawa.jp
-kaisei.kanagawa.jp
-kamakura.kanagawa.jp
-kiyokawa.kanagawa.jp
-matsuda.kanagawa.jp
-minamiashigara.kanagawa.jp
-miura.kanagawa.jp
-nakai.kanagawa.jp
-ninomiya.kanagawa.jp
-odawara.kanagawa.jp
-oi.kanagawa.jp
-oiso.kanagawa.jp
-sagamihara.kanagawa.jp
-samukawa.kanagawa.jp
-tsukui.kanagawa.jp
-yamakita.kanagawa.jp
-yamato.kanagawa.jp
-yokosuka.kanagawa.jp
-yugawara.kanagawa.jp
-zama.kanagawa.jp
-zushi.kanagawa.jp
-aki.kochi.jp
-geisei.kochi.jp
-hidaka.kochi.jp
-higashitsuno.kochi.jp
-ino.kochi.jp
-kagami.kochi.jp
-kami.kochi.jp
-kitagawa.kochi.jp
-kochi.kochi.jp
-mihara.kochi.jp
-motoyama.kochi.jp
-muroto.kochi.jp
-nahari.kochi.jp
-nakamura.kochi.jp
-nankoku.kochi.jp
-nishitosa.kochi.jp
-niyodogawa.kochi.jp
-ochi.kochi.jp
-okawa.kochi.jp
-otoyo.kochi.jp
-otsuki.kochi.jp
-sakawa.kochi.jp
-sukumo.kochi.jp
-susaki.kochi.jp
-tosa.kochi.jp
-tosashimizu.kochi.jp
-toyo.kochi.jp
-tsuno.kochi.jp
-umaji.kochi.jp
-yasuda.kochi.jp
-yusuhara.kochi.jp
-amakusa.kumamoto.jp
-arao.kumamoto.jp
-aso.kumamoto.jp
-choyo.kumamoto.jp
-gyokuto.kumamoto.jp
-hitoyoshi.kumamoto.jp
-kamiamakusa.kumamoto.jp
-kashima.kumamoto.jp
-kikuchi.kumamoto.jp
-kosa.kumamoto.jp
-kumamoto.kumamoto.jp
-mashiki.kumamoto.jp
-mifune.kumamoto.jp
-minamata.kumamoto.jp
-minamioguni.kumamoto.jp
-nagasu.kumamoto.jp
-nishihara.kumamoto.jp
-oguni.kumamoto.jp
-ozu.kumamoto.jp
-sumoto.kumamoto.jp
-takamori.kumamoto.jp
-uki.kumamoto.jp
-uto.kumamoto.jp
-yamaga.kumamoto.jp
-yamato.kumamoto.jp
-yatsushiro.kumamoto.jp
-ayabe.kyoto.jp
-fukuchiyama.kyoto.jp
-higashiyama.kyoto.jp
-ide.kyoto.jp
-ine.kyoto.jp
-joyo.kyoto.jp
-kameoka.kyoto.jp
-kamo.kyoto.jp
-kita.kyoto.jp
-kizu.kyoto.jp
-kumiyama.kyoto.jp
-kyotamba.kyoto.jp
-kyotanabe.kyoto.jp
-kyotango.kyoto.jp
-maizuru.kyoto.jp
-minami.kyoto.jp
-minamiyamashiro.kyoto.jp
-miyazu.kyoto.jp
-muko.kyoto.jp
-nagaokakyo.kyoto.jp
-nakagyo.kyoto.jp
-nantan.kyoto.jp
-oyamazaki.kyoto.jp
-sakyo.kyoto.jp
-seika.kyoto.jp
-tanabe.kyoto.jp
-uji.kyoto.jp
-ujitawara.kyoto.jp
-wazuka.kyoto.jp
-yamashina.kyoto.jp
-yawata.kyoto.jp
-asahi.mie.jp
-inabe.mie.jp
-ise.mie.jp
-kameyama.mie.jp
-kawagoe.mie.jp
-kiho.mie.jp
-kisosaki.mie.jp
-kiwa.mie.jp
-komono.mie.jp
-kumano.mie.jp
-kuwana.mie.jp
-matsusaka.mie.jp
-meiwa.mie.jp
-mihama.mie.jp
-minamiise.mie.jp
-misugi.mie.jp
-miyama.mie.jp
-nabari.mie.jp
-shima.mie.jp
-suzuka.mie.jp
-tado.mie.jp
-taiki.mie.jp
-taki.mie.jp
-tamaki.mie.jp
-toba.mie.jp
-tsu.mie.jp
-udono.mie.jp
-ureshino.mie.jp
-watarai.mie.jp
-yokkaichi.mie.jp
-furukawa.miyagi.jp
-higashimatsushima.miyagi.jp
-ishinomaki.miyagi.jp
-iwanuma.miyagi.jp
-kakuda.miyagi.jp
-kami.miyagi.jp
-kawasaki.miyagi.jp
-kesennuma.miyagi.jp
-marumori.miyagi.jp
-matsushima.miyagi.jp
-minamisanriku.miyagi.jp
-misato.miyagi.jp
-murata.miyagi.jp
-natori.miyagi.jp
-ogawara.miyagi.jp
-ohira.miyagi.jp
-onagawa.miyagi.jp
-osaki.miyagi.jp
-rifu.miyagi.jp
-semine.miyagi.jp
-shibata.miyagi.jp
-shichikashuku.miyagi.jp
-shikama.miyagi.jp
-shiogama.miyagi.jp
-shiroishi.miyagi.jp
-tagajo.miyagi.jp
-taiwa.miyagi.jp
-tome.miyagi.jp
-tomiya.miyagi.jp
-wakuya.miyagi.jp
-watari.miyagi.jp
-yamamoto.miyagi.jp
-zao.miyagi.jp
-aya.miyazaki.jp
-ebino.miyazaki.jp
-gokase.miyazaki.jp
-hyuga.miyazaki.jp
-kadogawa.miyazaki.jp
-kawaminami.miyazaki.jp
-kijo.miyazaki.jp
-kitagawa.miyazaki.jp
-kitakata.miyazaki.jp
-kitaura.miyazaki.jp
-kobayashi.miyazaki.jp
-kunitomi.miyazaki.jp
-kushima.miyazaki.jp
-mimata.miyazaki.jp
-miyakonojo.miyazaki.jp
-miyazaki.miyazaki.jp
-morotsuka.miyazaki.jp
-nichinan.miyazaki.jp
-nishimera.miyazaki.jp
-nobeoka.miyazaki.jp
-saito.miyazaki.jp
-shiiba.miyazaki.jp
-shintomi.miyazaki.jp
-takaharu.miyazaki.jp
-takanabe.miyazaki.jp
-takazaki.miyazaki.jp
-tsuno.miyazaki.jp
-achi.nagano.jp
-agematsu.nagano.jp
-anan.nagano.jp
-aoki.nagano.jp
-asahi.nagano.jp
-azumino.nagano.jp
-chikuhoku.nagano.jp
-chikuma.nagano.jp
-chino.nagano.jp
-fujimi.nagano.jp
-hakuba.nagano.jp
-hara.nagano.jp
-hiraya.nagano.jp
-iida.nagano.jp
-iijima.nagano.jp
-iiyama.nagano.jp
-iizuna.nagano.jp
-ikeda.nagano.jp
-ikusaka.nagano.jp
-ina.nagano.jp
-karuizawa.nagano.jp
-kawakami.nagano.jp
-kiso.nagano.jp
-kisofukushima.nagano.jp
-kitaaiki.nagano.jp
-komagane.nagano.jp
-komoro.nagano.jp
-matsukawa.nagano.jp
-matsumoto.nagano.jp
-miasa.nagano.jp
-minamiaiki.nagano.jp
-minamimaki.nagano.jp
-minamiminowa.nagano.jp
-minowa.nagano.jp
-miyada.nagano.jp
-miyota.nagano.jp
-mochizuki.nagano.jp
-nagano.nagano.jp
-nagawa.nagano.jp
-nagiso.nagano.jp
-nakagawa.nagano.jp
-nakano.nagano.jp
-nozawaonsen.nagano.jp
-obuse.nagano.jp
-ogawa.nagano.jp
-okaya.nagano.jp
-omachi.nagano.jp
-omi.nagano.jp
-ookuwa.nagano.jp
-ooshika.nagano.jp
-otaki.nagano.jp
-otari.nagano.jp
-sakae.nagano.jp
-sakaki.nagano.jp
-saku.nagano.jp
-sakuho.nagano.jp
-shimosuwa.nagano.jp
-shinanomachi.nagano.jp
-shiojiri.nagano.jp
-suwa.nagano.jp
-suzaka.nagano.jp
-takagi.nagano.jp
-takamori.nagano.jp
-takayama.nagano.jp
-tateshina.nagano.jp
-tatsuno.nagano.jp
-togakushi.nagano.jp
-togura.nagano.jp
-tomi.nagano.jp
-ueda.nagano.jp
-wada.nagano.jp
-yamagata.nagano.jp
-yamanouchi.nagano.jp
-yasaka.nagano.jp
-yasuoka.nagano.jp
-chijiwa.nagasaki.jp
-futsu.nagasaki.jp
-goto.nagasaki.jp
-hasami.nagasaki.jp
-hirado.nagasaki.jp
-iki.nagasaki.jp
-isahaya.nagasaki.jp
-kawatana.nagasaki.jp
-kuchinotsu.nagasaki.jp
-matsuura.nagasaki.jp
-nagasaki.nagasaki.jp
-obama.nagasaki.jp
-omura.nagasaki.jp
-oseto.nagasaki.jp
-saikai.nagasaki.jp
-sasebo.nagasaki.jp
-seihi.nagasaki.jp
-shimabara.nagasaki.jp
-shinkamigoto.nagasaki.jp
-togitsu.nagasaki.jp
-tsushima.nagasaki.jp
-unzen.nagasaki.jp
-ando.nara.jp
-gose.nara.jp
-heguri.nara.jp
-higashiyoshino.nara.jp
-ikaruga.nara.jp
-ikoma.nara.jp
-kamikitayama.nara.jp
-kanmaki.nara.jp
-kashiba.nara.jp
-kashihara.nara.jp
-katsuragi.nara.jp
-kawai.nara.jp
-kawakami.nara.jp
-kawanishi.nara.jp
-koryo.nara.jp
-kurotaki.nara.jp
-mitsue.nara.jp
-miyake.nara.jp
-nara.nara.jp
-nosegawa.nara.jp
-oji.nara.jp
-ouda.nara.jp
-oyodo.nara.jp
-sakurai.nara.jp
-sango.nara.jp
-shimoichi.nara.jp
-shimokitayama.nara.jp
-shinjo.nara.jp
-soni.nara.jp
-takatori.nara.jp
-tawaramoto.nara.jp
-tenkawa.nara.jp
-tenri.nara.jp
-uda.nara.jp
-yamatokoriyama.nara.jp
-yamatotakada.nara.jp
-yamazoe.nara.jp
-yoshino.nara.jp
-aga.niigata.jp
-agano.niigata.jp
-gosen.niigata.jp
-itoigawa.niigata.jp
-izumozaki.niigata.jp
-joetsu.niigata.jp
-kamo.niigata.jp
-kariwa.niigata.jp
-kashiwazaki.niigata.jp
-minamiuonuma.niigata.jp
-mitsuke.niigata.jp
-muika.niigata.jp
-murakami.niigata.jp
-myoko.niigata.jp
-nagaoka.niigata.jp
-niigata.niigata.jp
-ojiya.niigata.jp
-omi.niigata.jp
-sado.niigata.jp
-sanjo.niigata.jp
-seiro.niigata.jp
-seirou.niigata.jp
-sekikawa.niigata.jp
-shibata.niigata.jp
-tagami.niigata.jp
-tainai.niigata.jp
-tochio.niigata.jp
-tokamachi.niigata.jp
-tsubame.niigata.jp
-tsunan.niigata.jp
-uonuma.niigata.jp
-yahiko.niigata.jp
-yoita.niigata.jp
-yuzawa.niigata.jp
-beppu.oita.jp
-bungoono.oita.jp
-bungotakada.oita.jp
-hasama.oita.jp
-hiji.oita.jp
-himeshima.oita.jp
-hita.oita.jp
-kamitsue.oita.jp
-kokonoe.oita.jp
-kuju.oita.jp
-kunisaki.oita.jp
-kusu.oita.jp
-oita.oita.jp
-saiki.oita.jp
-taketa.oita.jp
-tsukumi.oita.jp
-usa.oita.jp
-usuki.oita.jp
-yufu.oita.jp
-akaiwa.okayama.jp
-asakuchi.okayama.jp
-bizen.okayama.jp
-hayashima.okayama.jp
-ibara.okayama.jp
-kagamino.okayama.jp
-kasaoka.okayama.jp
-kibichuo.okayama.jp
-kumenan.okayama.jp
-kurashiki.okayama.jp
-maniwa.okayama.jp
-misaki.okayama.jp
-nagi.okayama.jp
-niimi.okayama.jp
-nishiawakura.okayama.jp
-okayama.okayama.jp
-satosho.okayama.jp
-setouchi.okayama.jp
-shinjo.okayama.jp
-shoo.okayama.jp
-soja.okayama.jp
-takahashi.okayama.jp
-tamano.okayama.jp
-tsuyama.okayama.jp
-wake.okayama.jp
-yakage.okayama.jp
-aguni.okinawa.jp
-ginowan.okinawa.jp
-ginoza.okinawa.jp
-gushikami.okinawa.jp
-haebaru.okinawa.jp
-higashi.okinawa.jp
-hirara.okinawa.jp
-iheya.okinawa.jp
-ishigaki.okinawa.jp
-ishikawa.okinawa.jp
-itoman.okinawa.jp
-izena.okinawa.jp
-kadena.okinawa.jp
-kin.okinawa.jp
-kitadaito.okinawa.jp
-kitanakagusuku.okinawa.jp
-kumejima.okinawa.jp
-kunigami.okinawa.jp
-minamidaito.okinawa.jp
-motobu.okinawa.jp
-nago.okinawa.jp
-naha.okinawa.jp
-nakagusuku.okinawa.jp
-nakijin.okinawa.jp
-nanjo.okinawa.jp
-nishihara.okinawa.jp
-ogimi.okinawa.jp
-okinawa.okinawa.jp
-onna.okinawa.jp
-shimoji.okinawa.jp
-taketomi.okinawa.jp
-tarama.okinawa.jp
-tokashiki.okinawa.jp
-tomigusuku.okinawa.jp
-tonaki.okinawa.jp
-urasoe.okinawa.jp
-uruma.okinawa.jp
-yaese.okinawa.jp
-yomitan.okinawa.jp
-yonabaru.okinawa.jp
-yonaguni.okinawa.jp
-zamami.okinawa.jp
-abeno.osaka.jp
-chihayaakasaka.osaka.jp
-chuo.osaka.jp
-daito.osaka.jp
-fujiidera.osaka.jp
-habikino.osaka.jp
-hannan.osaka.jp
-higashiosaka.osaka.jp
-higashisumiyoshi.osaka.jp
-higashiyodogawa.osaka.jp
-hirakata.osaka.jp
-ibaraki.osaka.jp
-ikeda.osaka.jp
-izumi.osaka.jp
-izumiotsu.osaka.jp
-izumisano.osaka.jp
-kadoma.osaka.jp
-kaizuka.osaka.jp
-kanan.osaka.jp
-kashiwara.osaka.jp
-katano.osaka.jp
-kawachinagano.osaka.jp
-kishiwada.osaka.jp
-kita.osaka.jp
-kumatori.osaka.jp
-matsubara.osaka.jp
-minato.osaka.jp
-minoh.osaka.jp
-misaki.osaka.jp
-moriguchi.osaka.jp
-neyagawa.osaka.jp
-nishi.osaka.jp
-nose.osaka.jp
-osakasayama.osaka.jp
-sakai.osaka.jp
-sayama.osaka.jp
-sennan.osaka.jp
-settsu.osaka.jp
-shijonawate.osaka.jp
-shimamoto.osaka.jp
-suita.osaka.jp
-tadaoka.osaka.jp
-taishi.osaka.jp
-tajiri.osaka.jp
-takaishi.osaka.jp
-takatsuki.osaka.jp
-tondabayashi.osaka.jp
-toyonaka.osaka.jp
-toyono.osaka.jp
-yao.osaka.jp
-ariake.saga.jp
-arita.saga.jp
-fukudomi.saga.jp
-genkai.saga.jp
-hamatama.saga.jp
-hizen.saga.jp
-imari.saga.jp
-kamimine.saga.jp
-kanzaki.saga.jp
-karatsu.saga.jp
-kashima.saga.jp
-kitagata.saga.jp
-kitahata.saga.jp
-kiyama.saga.jp
-kouhoku.saga.jp
-kyuragi.saga.jp
-nishiarita.saga.jp
-ogi.saga.jp
-omachi.saga.jp
-ouchi.saga.jp
-saga.saga.jp
-shiroishi.saga.jp
-taku.saga.jp
-tara.saga.jp
-tosu.saga.jp
-yoshinogari.saga.jp
-arakawa.saitama.jp
-asaka.saitama.jp
-chichibu.saitama.jp
-fujimi.saitama.jp
-fujimino.saitama.jp
-fukaya.saitama.jp
-hanno.saitama.jp
-hanyu.saitama.jp
-hasuda.saitama.jp
-hatogaya.saitama.jp
-hatoyama.saitama.jp
-hidaka.saitama.jp
-higashichichibu.saitama.jp
-higashimatsuyama.saitama.jp
-honjo.saitama.jp
-ina.saitama.jp
-iruma.saitama.jp
-iwatsuki.saitama.jp
-kamiizumi.saitama.jp
-kamikawa.saitama.jp
-kamisato.saitama.jp
-kasukabe.saitama.jp
-kawagoe.saitama.jp
-kawaguchi.saitama.jp
-kawajima.saitama.jp
-kazo.saitama.jp
-kitamoto.saitama.jp
-koshigaya.saitama.jp
-kounosu.saitama.jp
-kuki.saitama.jp
-kumagaya.saitama.jp
-matsubushi.saitama.jp
-minano.saitama.jp
-misato.saitama.jp
-miyashiro.saitama.jp
-miyoshi.saitama.jp
-moroyama.saitama.jp
-nagatoro.saitama.jp
-namegawa.saitama.jp
-niiza.saitama.jp
-ogano.saitama.jp
-ogawa.saitama.jp
-ogose.saitama.jp
-okegawa.saitama.jp
-omiya.saitama.jp
-otaki.saitama.jp
-ranzan.saitama.jp
-ryokami.saitama.jp
-saitama.saitama.jp
-sakado.saitama.jp
-satte.saitama.jp
-sayama.saitama.jp
-shiki.saitama.jp
-shiraoka.saitama.jp
-soka.saitama.jp
-sugito.saitama.jp
-toda.saitama.jp
-tokigawa.saitama.jp
-tokorozawa.saitama.jp
-tsurugashima.saitama.jp
-urawa.saitama.jp
-warabi.saitama.jp
-yashio.saitama.jp
-yokoze.saitama.jp
-yono.saitama.jp
-yorii.saitama.jp
-yoshida.saitama.jp
-yoshikawa.saitama.jp
-yoshimi.saitama.jp
-aisho.shiga.jp
-gamo.shiga.jp
-higashiomi.shiga.jp
-hikone.shiga.jp
-koka.shiga.jp
-konan.shiga.jp
-kosei.shiga.jp
-koto.shiga.jp
-kusatsu.shiga.jp
-maibara.shiga.jp
-moriyama.shiga.jp
-nagahama.shiga.jp
-nishiazai.shiga.jp
-notogawa.shiga.jp
-omihachiman.shiga.jp
-otsu.shiga.jp
-ritto.shiga.jp
-ryuoh.shiga.jp
-takashima.shiga.jp
-takatsuki.shiga.jp
-torahime.shiga.jp
-toyosato.shiga.jp
-yasu.shiga.jp
-akagi.shimane.jp
-ama.shimane.jp
-gotsu.shimane.jp
-hamada.shimane.jp
-higashiizumo.shimane.jp
-hikawa.shimane.jp
-hikimi.shimane.jp
-izumo.shimane.jp
-kakinoki.shimane.jp
-masuda.shimane.jp
-matsue.shimane.jp
-misato.shimane.jp
-nishinoshima.shimane.jp
-ohda.shimane.jp
-okinoshima.shimane.jp
-okuizumo.shimane.jp
-shimane.shimane.jp
-tamayu.shimane.jp
-tsuwano.shimane.jp
-unnan.shimane.jp
-yakumo.shimane.jp
-yasugi.shimane.jp
-yatsuka.shimane.jp
-arai.shizuoka.jp
-atami.shizuoka.jp
-fuji.shizuoka.jp
-fujieda.shizuoka.jp
-fujikawa.shizuoka.jp
-fujinomiya.shizuoka.jp
-fukuroi.shizuoka.jp
-gotemba.shizuoka.jp
-haibara.shizuoka.jp
-hamamatsu.shizuoka.jp
-higashiizu.shizuoka.jp
-ito.shizuoka.jp
-iwata.shizuoka.jp
-izu.shizuoka.jp
-izunokuni.shizuoka.jp
-kakegawa.shizuoka.jp
-kannami.shizuoka.jp
-kawanehon.shizuoka.jp
-kawazu.shizuoka.jp
-kikugawa.shizuoka.jp
-kosai.shizuoka.jp
-makinohara.shizuoka.jp
-matsuzaki.shizuoka.jp
-minamiizu.shizuoka.jp
-mishima.shizuoka.jp
-morimachi.shizuoka.jp
-nishiizu.shizuoka.jp
-numazu.shizuoka.jp
-omaezaki.shizuoka.jp
-shimada.shizuoka.jp
-shimizu.shizuoka.jp
-shimoda.shizuoka.jp
-shizuoka.shizuoka.jp
-susono.shizuoka.jp
-yaizu.shizuoka.jp
-yoshida.shizuoka.jp
-ashikaga.tochigi.jp
-bato.tochigi.jp
-haga.tochigi.jp
-ichikai.tochigi.jp
-iwafune.tochigi.jp
-kaminokawa.tochigi.jp
-kanuma.tochigi.jp
-karasuyama.tochigi.jp
-kuroiso.tochigi.jp
-mashiko.tochigi.jp
-mibu.tochigi.jp
-moka.tochigi.jp
-motegi.tochigi.jp
-nasu.tochigi.jp
-nasushiobara.tochigi.jp
-nikko.tochigi.jp
-nishikata.tochigi.jp
-nogi.tochigi.jp
-ohira.tochigi.jp
-ohtawara.tochigi.jp
-oyama.tochigi.jp
-sakura.tochigi.jp
-sano.tochigi.jp
-shimotsuke.tochigi.jp
-shioya.tochigi.jp
-takanezawa.tochigi.jp
-tochigi.tochigi.jp
-tsuga.tochigi.jp
-ujiie.tochigi.jp
-utsunomiya.tochigi.jp
-yaita.tochigi.jp
-aizumi.tokushima.jp
-anan.tokushima.jp
-ichiba.tokushima.jp
-itano.tokushima.jp
-kainan.tokushima.jp
-komatsushima.tokushima.jp
-matsushige.tokushima.jp
-mima.tokushima.jp
-minami.tokushima.jp
-miyoshi.tokushima.jp
-mugi.tokushima.jp
-nakagawa.tokushima.jp
-naruto.tokushima.jp
-sanagochi.tokushima.jp
-shishikui.tokushima.jp
-tokushima.tokushima.jp
-wajiki.tokushima.jp
-adachi.tokyo.jp
-akiruno.tokyo.jp
-akishima.tokyo.jp
-aogashima.tokyo.jp
-arakawa.tokyo.jp
-bunkyo.tokyo.jp
-chiyoda.tokyo.jp
-chofu.tokyo.jp
-chuo.tokyo.jp
-edogawa.tokyo.jp
-fuchu.tokyo.jp
-fussa.tokyo.jp
-hachijo.tokyo.jp
-hachioji.tokyo.jp
-hamura.tokyo.jp
-higashikurume.tokyo.jp
-higashimurayama.tokyo.jp
-higashiyamato.tokyo.jp
-hino.tokyo.jp
-hinode.tokyo.jp
-hinohara.tokyo.jp
-inagi.tokyo.jp
-itabashi.tokyo.jp
-katsushika.tokyo.jp
-kita.tokyo.jp
-kiyose.tokyo.jp
-kodaira.tokyo.jp
-koganei.tokyo.jp
-kokubunji.tokyo.jp
-komae.tokyo.jp
-koto.tokyo.jp
-kouzushima.tokyo.jp
-kunitachi.tokyo.jp
-machida.tokyo.jp
-meguro.tokyo.jp
-minato.tokyo.jp
-mitaka.tokyo.jp
-mizuho.tokyo.jp
-musashimurayama.tokyo.jp
-musashino.tokyo.jp
-nakano.tokyo.jp
-nerima.tokyo.jp
-ogasawara.tokyo.jp
-okutama.tokyo.jp
-ome.tokyo.jp
-oshima.tokyo.jp
-ota.tokyo.jp
-setagaya.tokyo.jp
-shibuya.tokyo.jp
-shinagawa.tokyo.jp
-shinjuku.tokyo.jp
-suginami.tokyo.jp
-sumida.tokyo.jp
-tachikawa.tokyo.jp
-taito.tokyo.jp
-tama.tokyo.jp
-toshima.tokyo.jp
-chizu.tottori.jp
-hino.tottori.jp
-kawahara.tottori.jp
-koge.tottori.jp
-kotoura.tottori.jp
-misasa.tottori.jp
-nanbu.tottori.jp
-nichinan.tottori.jp
-sakaiminato.tottori.jp
-tottori.tottori.jp
-wakasa.tottori.jp
-yazu.tottori.jp
-yonago.tottori.jp
-asahi.toyama.jp
-fuchu.toyama.jp
-fukumitsu.toyama.jp
-funahashi.toyama.jp
-himi.toyama.jp
-imizu.toyama.jp
-inami.toyama.jp
-johana.toyama.jp
-kamiichi.toyama.jp
-kurobe.toyama.jp
-nakaniikawa.toyama.jp
-namerikawa.toyama.jp
-nanto.toyama.jp
-nyuzen.toyama.jp
-oyabe.toyama.jp
-taira.toyama.jp
-takaoka.toyama.jp
-tateyama.toyama.jp
-toga.toyama.jp
-tonami.toyama.jp
-toyama.toyama.jp
-unazuki.toyama.jp
-uozu.toyama.jp
-yamada.toyama.jp
-arida.wakayama.jp
-aridagawa.wakayama.jp
-gobo.wakayama.jp
-hashimoto.wakayama.jp
-hidaka.wakayama.jp
-hirogawa.wakayama.jp
-inami.wakayama.jp
-iwade.wakayama.jp
-kainan.wakayama.jp
-kamitonda.wakayama.jp
-katsuragi.wakayama.jp
-kimino.wakayama.jp
-kinokawa.wakayama.jp
-kitayama.wakayama.jp
-koya.wakayama.jp
-koza.wakayama.jp
-kozagawa.wakayama.jp
-kudoyama.wakayama.jp
-kushimoto.wakayama.jp
-mihama.wakayama.jp
-misato.wakayama.jp
-nachikatsuura.wakayama.jp
-shingu.wakayama.jp
-shirahama.wakayama.jp
-taiji.wakayama.jp
-tanabe.wakayama.jp
-wakayama.wakayama.jp
-yuasa.wakayama.jp
-yura.wakayama.jp
-asahi.yamagata.jp
-funagata.yamagata.jp
-higashine.yamagata.jp
-iide.yamagata.jp
-kahoku.yamagata.jp
-kaminoyama.yamagata.jp
-kaneyama.yamagata.jp
-kawanishi.yamagata.jp
-mamurogawa.yamagata.jp
-mikawa.yamagata.jp
-murayama.yamagata.jp
-nagai.yamagata.jp
-nakayama.yamagata.jp
-nanyo.yamagata.jp
-nishikawa.yamagata.jp
-obanazawa.yamagata.jp
-oe.yamagata.jp
-oguni.yamagata.jp
-ohkura.yamagata.jp
-oishida.yamagata.jp
-sagae.yamagata.jp
-sakata.yamagata.jp
-sakegawa.yamagata.jp
-shinjo.yamagata.jp
-shirataka.yamagata.jp
-shonai.yamagata.jp
-takahata.yamagata.jp
-tendo.yamagata.jp
-tozawa.yamagata.jp
-tsuruoka.yamagata.jp
-yamagata.yamagata.jp
-yamanobe.yamagata.jp
-yonezawa.yamagata.jp
-yuza.yamagata.jp
-abu.yamaguchi.jp
-hagi.yamaguchi.jp
-hikari.yamaguchi.jp
-hofu.yamaguchi.jp
-iwakuni.yamaguchi.jp
-kudamatsu.yamaguchi.jp
-mitou.yamaguchi.jp
-nagato.yamaguchi.jp
-oshima.yamaguchi.jp
-shimonoseki.yamaguchi.jp
-shunan.yamaguchi.jp
-tabuse.yamaguchi.jp
-tokuyama.yamaguchi.jp
-toyota.yamaguchi.jp
-ube.yamaguchi.jp
-yuu.yamaguchi.jp
-chuo.yamanashi.jp
-doshi.yamanashi.jp
-fuefuki.yamanashi.jp
-fujikawa.yamanashi.jp
-fujikawaguchiko.yamanashi.jp
-fujiyoshida.yamanashi.jp
-hayakawa.yamanashi.jp
-hokuto.yamanashi.jp
-ichikawamisato.yamanashi.jp
-kai.yamanashi.jp
-kofu.yamanashi.jp
-koshu.yamanashi.jp
-kosuge.yamanashi.jp
-minami-alps.yamanashi.jp
-minobu.yamanashi.jp
-nakamichi.yamanashi.jp
-nanbu.yamanashi.jp
-narusawa.yamanashi.jp
-nirasaki.yamanashi.jp
-nishikatsura.yamanashi.jp
-oshino.yamanashi.jp
-otsuki.yamanashi.jp
-showa.yamanashi.jp
-tabayama.yamanashi.jp
-tsuru.yamanashi.jp
-uenohara.yamanashi.jp
-yamanakako.yamanashi.jp
-yamanashi.yamanashi.jp
-
-// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145
-*.ke
-
-// kg : http://www.domain.kg/dmn_n.html
-kg
-org.kg
-net.kg
-com.kg
-edu.kg
-gov.kg
-mil.kg
-
-// kh : http://www.mptc.gov.kh/dns_registration.htm
-*.kh
-
-// ki : http://www.ki/dns/index.html
-ki
-edu.ki
-biz.ki
-net.ki
-org.ki
-gov.ki
-info.ki
-com.ki
-
-// km : http://en.wikipedia.org/wiki/.km
-// http://www.domaine.km/documents/charte.doc
-km
-org.km
-nom.km
-gov.km
-prd.km
-tm.km
-edu.km
-mil.km
-ass.km
-com.km
-// These are only mentioned as proposed suggestions at domaine.km, but
-// http://en.wikipedia.org/wiki/.km says they're available for registration:
-coop.km
-asso.km
-presse.km
-medecin.km
-notaires.km
-pharmaciens.km
-veterinaire.km
-gouv.km
-
-// kn : http://en.wikipedia.org/wiki/.kn
-// http://www.dot.kn/domainRules.html
-kn
-net.kn
-org.kn
-edu.kn
-gov.kn
-
-// kp : http://www.kcce.kp/en_index.php
-kp
-com.kp
-edu.kp
-gov.kp
-org.kp
-rep.kp
-tra.kp
-
-// kr : http://en.wikipedia.org/wiki/.kr
-// see also: http://domain.nida.or.kr/eng/registration.jsp
-kr
-ac.kr
-co.kr
-es.kr
-go.kr
-hs.kr
-kg.kr
-mil.kr
-ms.kr
-ne.kr
-or.kr
-pe.kr
-re.kr
-sc.kr
-// kr geographical names
-busan.kr
-chungbuk.kr
-chungnam.kr
-daegu.kr
-daejeon.kr
-gangwon.kr
-gwangju.kr
-gyeongbuk.kr
-gyeonggi.kr
-gyeongnam.kr
-incheon.kr
-jeju.kr
-jeonbuk.kr
-jeonnam.kr
-seoul.kr
-ulsan.kr
-
-// kw : http://en.wikipedia.org/wiki/.kw
-*.kw
-
-// ky : http://www.icta.ky/da_ky_reg_dom.php
-// Confirmed by registry 2008-06-17
-ky
-edu.ky
-gov.ky
-com.ky
-org.ky
-net.ky
-
-// kz : http://en.wikipedia.org/wiki/.kz
-// see also: http://www.nic.kz/rules/index.jsp
-kz
-org.kz
-edu.kz
-net.kz
-gov.kz
-mil.kz
-com.kz
-
-// la : http://en.wikipedia.org/wiki/.la
-// Submitted by registry 2008-06-10
-la
-int.la
-net.la
-info.la
-edu.la
-gov.la
-per.la
-com.la
-org.la
-
-// lb : http://en.wikipedia.org/wiki/.lb
-// Submitted by registry 2008-06-17
-lb
-com.lb
-edu.lb
-gov.lb
-net.lb
-org.lb
-
-// lc : http://en.wikipedia.org/wiki/.lc
-// see also: http://www.nic.lc/rules.htm
-lc
-com.lc
-net.lc
-co.lc
-org.lc
-edu.lc
-gov.lc
-
-// li : http://en.wikipedia.org/wiki/.li
-li
-
-// lk : http://www.nic.lk/seclevpr.html
-lk
-gov.lk
-sch.lk
-net.lk
-int.lk
-com.lk
-org.lk
-edu.lk
-ngo.lk
-soc.lk
-web.lk
-ltd.lk
-assn.lk
-grp.lk
-hotel.lk
-ac.lk
-
-// lr : http://psg.com/dns/lr/lr.txt
-// Submitted by registry 2008-06-17
-lr
-com.lr
-edu.lr
-gov.lr
-org.lr
-net.lr
-
-// ls : http://en.wikipedia.org/wiki/.ls
-ls
-co.ls
-org.ls
-
-// lt : http://en.wikipedia.org/wiki/.lt
-lt
-// gov.lt : http://www.gov.lt/index_en.php
-gov.lt
-
-// lu : http://www.dns.lu/en/
-lu
-
-// lv : http://www.nic.lv/DNS/En/generic.php
-lv
-com.lv
-edu.lv
-gov.lv
-org.lv
-mil.lv
-id.lv
-net.lv
-asn.lv
-conf.lv
-
-// ly : http://www.nic.ly/regulations.php
-ly
-com.ly
-net.ly
-gov.ly
-plc.ly
-edu.ly
-sch.ly
-med.ly
-org.ly
-id.ly
-
-// ma : http://en.wikipedia.org/wiki/.ma
-// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf
-ma
-co.ma
-net.ma
-gov.ma
-org.ma
-ac.ma
-press.ma
-
-// mc : http://www.nic.mc/
-mc
-tm.mc
-asso.mc
-
-// md : http://en.wikipedia.org/wiki/.md
-md
-
-// me : http://en.wikipedia.org/wiki/.me
-me
-co.me
-net.me
-org.me
-edu.me
-ac.me
-gov.me
-its.me
-priv.me
-
-// mg : http://www.nic.mg/tarif.htm
-mg
-org.mg
-nom.mg
-gov.mg
-prd.mg
-tm.mg
-edu.mg
-mil.mg
-com.mg
-
-// mh : http://en.wikipedia.org/wiki/.mh
-mh
-
-// mil : http://en.wikipedia.org/wiki/.mil
-mil
-
-// mk : http://en.wikipedia.org/wiki/.mk
-// see also: http://dns.marnet.net.mk/postapka.php
-mk
-com.mk
-org.mk
-net.mk
-edu.mk
-gov.mk
-inf.mk
-name.mk
-
-// ml : http://www.gobin.info/domainname/ml-template.doc
-// see also: http://en.wikipedia.org/wiki/.ml
-ml
-com.ml
-edu.ml
-gouv.ml
-gov.ml
-net.ml
-org.ml
-presse.ml
-
-// mm : http://en.wikipedia.org/wiki/.mm
-*.mm
-
-// mn : http://en.wikipedia.org/wiki/.mn
-mn
-gov.mn
-edu.mn
-org.mn
-
-// mo : http://www.monic.net.mo/
-mo
-com.mo
-net.mo
-org.mo
-edu.mo
-gov.mo
-
-// mobi : http://en.wikipedia.org/wiki/.mobi
-mobi
-
-// mp : http://www.dot.mp/
-// Confirmed by registry 2008-06-17
-mp
-
-// mq : http://en.wikipedia.org/wiki/.mq
-mq
-
-// mr : http://en.wikipedia.org/wiki/.mr
-mr
-gov.mr
-
-// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf
-ms
-com.ms
-edu.ms
-gov.ms
-net.ms
-org.ms
-
-// mt : https://www.nic.org.mt/go/policy
-// Submitted by registry 2013-11-19
-mt
-com.mt
-edu.mt
-net.mt
-org.mt
-
-// mu : http://en.wikipedia.org/wiki/.mu
-mu
-com.mu
-net.mu
-org.mu
-gov.mu
-ac.mu
-co.mu
-or.mu
-
-// museum : http://about.museum/naming/
-// http://index.museum/
-museum
-academy.museum
-agriculture.museum
-air.museum
-airguard.museum
-alabama.museum
-alaska.museum
-amber.museum
-ambulance.museum
-american.museum
-americana.museum
-americanantiques.museum
-americanart.museum
-amsterdam.museum
-and.museum
-annefrank.museum
-anthro.museum
-anthropology.museum
-antiques.museum
-aquarium.museum
-arboretum.museum
-archaeological.museum
-archaeology.museum
-architecture.museum
-art.museum
-artanddesign.museum
-artcenter.museum
-artdeco.museum
-arteducation.museum
-artgallery.museum
-arts.museum
-artsandcrafts.museum
-asmatart.museum
-assassination.museum
-assisi.museum
-association.museum
-astronomy.museum
-atlanta.museum
-austin.museum
-australia.museum
-automotive.museum
-aviation.museum
-axis.museum
-badajoz.museum
-baghdad.museum
-bahn.museum
-bale.museum
-baltimore.museum
-barcelona.museum
-baseball.museum
-basel.museum
-baths.museum
-bauern.museum
-beauxarts.museum
-beeldengeluid.museum
-bellevue.museum
-bergbau.museum
-berkeley.museum
-berlin.museum
-bern.museum
-bible.museum
-bilbao.museum
-bill.museum
-birdart.museum
-birthplace.museum
-bonn.museum
-boston.museum
-botanical.museum
-botanicalgarden.museum
-botanicgarden.museum
-botany.museum
-brandywinevalley.museum
-brasil.museum
-bristol.museum
-british.museum
-britishcolumbia.museum
-broadcast.museum
-brunel.museum
-brussel.museum
-brussels.museum
-bruxelles.museum
-building.museum
-burghof.museum
-bus.museum
-bushey.museum
-cadaques.museum
-california.museum
-cambridge.museum
-can.museum
-canada.museum
-capebreton.museum
-carrier.museum
-cartoonart.museum
-casadelamoneda.museum
-castle.museum
-castres.museum
-celtic.museum
-center.museum
-chattanooga.museum
-cheltenham.museum
-chesapeakebay.museum
-chicago.museum
-children.museum
-childrens.museum
-childrensgarden.museum
-chiropractic.museum
-chocolate.museum
-christiansburg.museum
-cincinnati.museum
-cinema.museum
-circus.museum
-civilisation.museum
-civilization.museum
-civilwar.museum
-clinton.museum
-clock.museum
-coal.museum
-coastaldefence.museum
-cody.museum
-coldwar.museum
-collection.museum
-colonialwilliamsburg.museum
-coloradoplateau.museum
-columbia.museum
-columbus.museum
-communication.museum
-communications.museum
-community.museum
-computer.museum
-computerhistory.museum
-comunicações.museum
-contemporary.museum
-contemporaryart.museum
-convent.museum
-copenhagen.museum
-corporation.museum
-correios-e-telecomunicações.museum
-corvette.museum
-costume.museum
-countryestate.museum
-county.museum
-crafts.museum
-cranbrook.museum
-creation.museum
-cultural.museum
-culturalcenter.museum
-culture.museum
-cyber.museum
-cymru.museum
-dali.museum
-dallas.museum
-database.museum
-ddr.museum
-decorativearts.museum
-delaware.museum
-delmenhorst.museum
-denmark.museum
-depot.museum
-design.museum
-detroit.museum
-dinosaur.museum
-discovery.museum
-dolls.museum
-donostia.museum
-durham.museum
-eastafrica.museum
-eastcoast.museum
-education.museum
-educational.museum
-egyptian.museum
-eisenbahn.museum
-elburg.museum
-elvendrell.museum
-embroidery.museum
-encyclopedic.museum
-england.museum
-entomology.museum
-environment.museum
-environmentalconservation.museum
-epilepsy.museum
-essex.museum
-estate.museum
-ethnology.museum
-exeter.museum
-exhibition.museum
-family.museum
-farm.museum
-farmequipment.museum
-farmers.museum
-farmstead.museum
-field.museum
-figueres.museum
-filatelia.museum
-film.museum
-fineart.museum
-finearts.museum
-finland.museum
-flanders.museum
-florida.museum
-force.museum
-fortmissoula.museum
-fortworth.museum
-foundation.museum
-francaise.museum
-frankfurt.museum
-franziskaner.museum
-freemasonry.museum
-freiburg.museum
-fribourg.museum
-frog.museum
-fundacio.museum
-furniture.museum
-gallery.museum
-garden.museum
-gateway.museum
-geelvinck.museum
-gemological.museum
-geology.museum
-georgia.museum
-giessen.museum
-glas.museum
-glass.museum
-gorge.museum
-grandrapids.museum
-graz.museum
-guernsey.museum
-halloffame.museum
-hamburg.museum
-handson.museum
-harvestcelebration.museum
-hawaii.museum
-health.museum
-heimatunduhren.museum
-hellas.museum
-helsinki.museum
-hembygdsforbund.museum
-heritage.museum
-histoire.museum
-historical.museum
-historicalsociety.museum
-historichouses.museum
-historisch.museum
-historisches.museum
-history.museum
-historyofscience.museum
-horology.museum
-house.museum
-humanities.museum
-illustration.museum
-imageandsound.museum
-indian.museum
-indiana.museum
-indianapolis.museum
-indianmarket.museum
-intelligence.museum
-interactive.museum
-iraq.museum
-iron.museum
-isleofman.museum
-jamison.museum
-jefferson.museum
-jerusalem.museum
-jewelry.museum
-jewish.museum
-jewishart.museum
-jfk.museum
-journalism.museum
-judaica.museum
-judygarland.museum
-juedisches.museum
-juif.museum
-karate.museum
-karikatur.museum
-kids.museum
-koebenhavn.museum
-koeln.museum
-kunst.museum
-kunstsammlung.museum
-kunstunddesign.museum
-labor.museum
-labour.museum
-lajolla.museum
-lancashire.museum
-landes.museum
-lans.museum
-läns.museum
-larsson.museum
-lewismiller.museum
-lincoln.museum
-linz.museum
-living.museum
-livinghistory.museum
-localhistory.museum
-london.museum
-losangeles.museum
-louvre.museum
-loyalist.museum
-lucerne.museum
-luxembourg.museum
-luzern.museum
-mad.museum
-madrid.museum
-mallorca.museum
-manchester.museum
-mansion.museum
-mansions.museum
-manx.museum
-marburg.museum
-maritime.museum
-maritimo.museum
-maryland.museum
-marylhurst.museum
-media.museum
-medical.museum
-medizinhistorisches.museum
-meeres.museum
-memorial.museum
-mesaverde.museum
-michigan.museum
-midatlantic.museum
-military.museum
-mill.museum
-miners.museum
-mining.museum
-minnesota.museum
-missile.museum
-missoula.museum
-modern.museum
-moma.museum
-money.museum
-monmouth.museum
-monticello.museum
-montreal.museum
-moscow.museum
-motorcycle.museum
-muenchen.museum
-muenster.museum
-mulhouse.museum
-muncie.museum
-museet.museum
-museumcenter.museum
-museumvereniging.museum
-music.museum
-national.museum
-nationalfirearms.museum
-nationalheritage.museum
-nativeamerican.museum
-naturalhistory.museum
-naturalhistorymuseum.museum
-naturalsciences.museum
-nature.museum
-naturhistorisches.museum
-natuurwetenschappen.museum
-naumburg.museum
-naval.museum
-nebraska.museum
-neues.museum
-newhampshire.museum
-newjersey.museum
-newmexico.museum
-newport.museum
-newspaper.museum
-newyork.museum
-niepce.museum
-norfolk.museum
-north.museum
-nrw.museum
-nuernberg.museum
-nuremberg.museum
-nyc.museum
-nyny.museum
-oceanographic.museum
-oceanographique.museum
-omaha.museum
-online.museum
-ontario.museum
-openair.museum
-oregon.museum
-oregontrail.museum
-otago.museum
-oxford.museum
-pacific.museum
-paderborn.museum
-palace.museum
-paleo.museum
-palmsprings.museum
-panama.museum
-paris.museum
-pasadena.museum
-pharmacy.museum
-philadelphia.museum
-philadelphiaarea.museum
-philately.museum
-phoenix.museum
-photography.museum
-pilots.museum
-pittsburgh.museum
-planetarium.museum
-plantation.museum
-plants.museum
-plaza.museum
-portal.museum
-portland.museum
-portlligat.museum
-posts-and-telecommunications.museum
-preservation.museum
-presidio.museum
-press.museum
-project.museum
-public.museum
-pubol.museum
-quebec.museum
-railroad.museum
-railway.museum
-research.museum
-resistance.museum
-riodejaneiro.museum
-rochester.museum
-rockart.museum
-roma.museum
-russia.museum
-saintlouis.museum
-salem.museum
-salvadordali.museum
-salzburg.museum
-sandiego.museum
-sanfrancisco.museum
-santabarbara.museum
-santacruz.museum
-santafe.museum
-saskatchewan.museum
-satx.museum
-savannahga.museum
-schlesisches.museum
-schoenbrunn.museum
-schokoladen.museum
-school.museum
-schweiz.museum
-science.museum
-scienceandhistory.museum
-scienceandindustry.museum
-sciencecenter.museum
-sciencecenters.museum
-science-fiction.museum
-sciencehistory.museum
-sciences.museum
-sciencesnaturelles.museum
-scotland.museum
-seaport.museum
-settlement.museum
-settlers.museum
-shell.museum
-sherbrooke.museum
-sibenik.museum
-silk.museum
-ski.museum
-skole.museum
-society.museum
-sologne.museum
-soundandvision.museum
-southcarolina.museum
-southwest.museum
-space.museum
-spy.museum
-square.museum
-stadt.museum
-stalbans.museum
-starnberg.museum
-state.museum
-stateofdelaware.museum
-station.museum
-steam.museum
-steiermark.museum
-stjohn.museum
-stockholm.museum
-stpetersburg.museum
-stuttgart.museum
-suisse.museum
-surgeonshall.museum
-surrey.museum
-svizzera.museum
-sweden.museum
-sydney.museum
-tank.museum
-tcm.museum
-technology.museum
-telekommunikation.museum
-television.museum
-texas.museum
-textile.museum
-theater.museum
-time.museum
-timekeeping.museum
-topology.museum
-torino.museum
-touch.museum
-town.museum
-transport.museum
-tree.museum
-trolley.museum
-trust.museum
-trustee.museum
-uhren.museum
-ulm.museum
-undersea.museum
-university.museum
-usa.museum
-usantiques.museum
-usarts.museum
-uscountryestate.museum
-usculture.museum
-usdecorativearts.museum
-usgarden.museum
-ushistory.museum
-ushuaia.museum
-uslivinghistory.museum
-utah.museum
-uvic.museum
-valley.museum
-vantaa.museum
-versailles.museum
-viking.museum
-village.museum
-virginia.museum
-virtual.museum
-virtuel.museum
-vlaanderen.museum
-volkenkunde.museum
-wales.museum
-wallonie.museum
-war.museum
-washingtondc.museum
-watchandclock.museum
-watch-and-clock.museum
-western.museum
-westfalen.museum
-whaling.museum
-wildlife.museum
-williamsburg.museum
-windmill.museum
-workshop.museum
-york.museum
-yorkshire.museum
-yosemite.museum
-youth.museum
-zoological.museum
-zoology.museum
-ירושלים.museum
-иком.museum
-
-// mv : http://en.wikipedia.org/wiki/.mv
-// "mv" included because, contra Wikipedia, google.mv exists.
-mv
-aero.mv
-biz.mv
-com.mv
-coop.mv
-edu.mv
-gov.mv
-info.mv
-int.mv
-mil.mv
-museum.mv
-name.mv
-net.mv
-org.mv
-pro.mv
-
-// mw : http://www.registrar.mw/
-mw
-ac.mw
-biz.mw
-co.mw
-com.mw
-coop.mw
-edu.mw
-gov.mw
-int.mw
-museum.mw
-net.mw
-org.mw
-
-// mx : http://www.nic.mx/
-// Submitted by registry 2008-06-19
-mx
-com.mx
-org.mx
-gob.mx
-edu.mx
-net.mx
-
-// my : http://www.mynic.net.my/
-my
-com.my
-net.my
-org.my
-gov.my
-edu.my
-mil.my
-name.my
-
-// mz : http://www.gobin.info/domainname/mz-template.doc
-*.mz
-!teledata.mz
-
-// na : http://www.na-nic.com.na/
-// http://www.info.na/domain/
-na
-info.na
-pro.na
-name.na
-school.na
-or.na
-dr.na
-us.na
-mx.na
-ca.na
-in.na
-cc.na
-tv.na
-ws.na
-mobi.na
-co.na
-com.na
-org.na
-
-// name : has 2nd-level tlds, but there's no list of them
-name
-
-// nc : http://www.cctld.nc/
-nc
-asso.nc
-
-// ne : http://en.wikipedia.org/wiki/.ne
-ne
-
-// net : http://en.wikipedia.org/wiki/.net
-net
-
-// nf : http://en.wikipedia.org/wiki/.nf
-nf
-com.nf
-net.nf
-per.nf
-rec.nf
-web.nf
-arts.nf
-firm.nf
-info.nf
-other.nf
-store.nf
-
-// ng : http://psg.com/dns/ng/
-ng
-com.ng
-edu.ng
-name.ng
-net.ng
-org.ng
-sch.ng
-gov.ng
-mil.ng
-mobi.ng
-
-// ni : http://www.nic.ni/dominios.htm
-*.ni
-
-// nl : http://en.wikipedia.org/wiki/.nl
-// https://www.sidn.nl/
-// ccTLD for the Netherlands
-nl
-
-// BV.nl will be a registry for dutch BV's (besloten vennootschap)
-bv.nl
-
-// no : http://www.norid.no/regelverk/index.en.html
-// The Norwegian registry has declined to notify us of updates. The web pages
-// referenced below are the official source of the data. There is also an
-// announce mailing list:
-// https://postlister.uninett.no/sympa/info/norid-diskusjon
-no
-// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html
-fhs.no
-vgs.no
-fylkesbibl.no
-folkebibl.no
-museum.no
-idrett.no
-priv.no
-// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html
-mil.no
-stat.no
-dep.no
-kommune.no
-herad.no
-// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html
-// counties
-aa.no
-ah.no
-bu.no
-fm.no
-hl.no
-hm.no
-jan-mayen.no
-mr.no
-nl.no
-nt.no
-of.no
-ol.no
-oslo.no
-rl.no
-sf.no
-st.no
-svalbard.no
-tm.no
-tr.no
-va.no
-vf.no
-// primary and lower secondary schools per county
-gs.aa.no
-gs.ah.no
-gs.bu.no
-gs.fm.no
-gs.hl.no
-gs.hm.no
-gs.jan-mayen.no
-gs.mr.no
-gs.nl.no
-gs.nt.no
-gs.of.no
-gs.ol.no
-gs.oslo.no
-gs.rl.no
-gs.sf.no
-gs.st.no
-gs.svalbard.no
-gs.tm.no
-gs.tr.no
-gs.va.no
-gs.vf.no
-// cities
-akrehamn.no
-åkrehamn.no
-algard.no
-ålgård.no
-arna.no
-brumunddal.no
-bryne.no
-bronnoysund.no
-brønnøysund.no
-drobak.no
-drøbak.no
-egersund.no
-fetsund.no
-floro.no
-florø.no
-fredrikstad.no
-hokksund.no
-honefoss.no
-hønefoss.no
-jessheim.no
-jorpeland.no
-jørpeland.no
-kirkenes.no
-kopervik.no
-krokstadelva.no
-langevag.no
-langevåg.no
-leirvik.no
-mjondalen.no
-mjøndalen.no
-mo-i-rana.no
-mosjoen.no
-mosjøen.no
-nesoddtangen.no
-orkanger.no
-osoyro.no
-osøyro.no
-raholt.no
-råholt.no
-sandnessjoen.no
-sandnessjøen.no
-skedsmokorset.no
-slattum.no
-spjelkavik.no
-stathelle.no
-stavern.no
-stjordalshalsen.no
-stjørdalshalsen.no
-tananger.no
-tranby.no
-vossevangen.no
-// communities
-afjord.no
-åfjord.no
-agdenes.no
-al.no
-ål.no
-alesund.no
-ålesund.no
-alstahaug.no
-alta.no
-áltá.no
-alaheadju.no
-álaheadju.no
-alvdal.no
-amli.no
-åmli.no
-amot.no
-åmot.no
-andebu.no
-andoy.no
-andøy.no
-andasuolo.no
-ardal.no
-årdal.no
-aremark.no
-arendal.no
-ås.no
-aseral.no
-åseral.no
-asker.no
-askim.no
-askvoll.no
-askoy.no
-askøy.no
-asnes.no
-åsnes.no
-audnedaln.no
-aukra.no
-aure.no
-aurland.no
-aurskog-holand.no
-aurskog-høland.no
-austevoll.no
-austrheim.no
-averoy.no
-averøy.no
-balestrand.no
-ballangen.no
-balat.no
-bálát.no
-balsfjord.no
-bahccavuotna.no
-báhccavuotna.no
-bamble.no
-bardu.no
-beardu.no
-beiarn.no
-bajddar.no
-bájddar.no
-baidar.no
-báidár.no
-berg.no
-bergen.no
-berlevag.no
-berlevåg.no
-bearalvahki.no
-bearalváhki.no
-bindal.no
-birkenes.no
-bjarkoy.no
-bjarkøy.no
-bjerkreim.no
-bjugn.no
-bodo.no
-bodø.no
-badaddja.no
-bådåddjå.no
-budejju.no
-bokn.no
-bremanger.no
-bronnoy.no
-brønnøy.no
-bygland.no
-bykle.no
-barum.no
-bærum.no
-bo.telemark.no
-bø.telemark.no
-bo.nordland.no
-bø.nordland.no
-bievat.no
-bievát.no
-bomlo.no
-bømlo.no
-batsfjord.no
-båtsfjord.no
-bahcavuotna.no
-báhcavuotna.no
-dovre.no
-drammen.no
-drangedal.no
-dyroy.no
-dyrøy.no
-donna.no
-dønna.no
-eid.no
-eidfjord.no
-eidsberg.no
-eidskog.no
-eidsvoll.no
-eigersund.no
-elverum.no
-enebakk.no
-engerdal.no
-etne.no
-etnedal.no
-evenes.no
-evenassi.no
-evenášši.no
-evje-og-hornnes.no
-farsund.no
-fauske.no
-fuossko.no
-fuoisku.no
-fedje.no
-fet.no
-finnoy.no
-finnøy.no
-fitjar.no
-fjaler.no
-fjell.no
-flakstad.no
-flatanger.no
-flekkefjord.no
-flesberg.no
-flora.no
-fla.no
-flå.no
-folldal.no
-forsand.no
-fosnes.no
-frei.no
-frogn.no
-froland.no
-frosta.no
-frana.no
-fræna.no
-froya.no
-frøya.no
-fusa.no
-fyresdal.no
-forde.no
-førde.no
-gamvik.no
-gangaviika.no
-gáŋgaviika.no
-gaular.no
-gausdal.no
-gildeskal.no
-gildeskål.no
-giske.no
-gjemnes.no
-gjerdrum.no
-gjerstad.no
-gjesdal.no
-gjovik.no
-gjøvik.no
-gloppen.no
-gol.no
-gran.no
-grane.no
-granvin.no
-gratangen.no
-grimstad.no
-grong.no
-kraanghke.no
-kråanghke.no
-grue.no
-gulen.no
-hadsel.no
-halden.no
-halsa.no
-hamar.no
-hamaroy.no
-habmer.no
-hábmer.no
-hapmir.no
-hápmir.no
-hammerfest.no
-hammarfeasta.no
-hámmárfeasta.no
-haram.no
-hareid.no
-harstad.no
-hasvik.no
-aknoluokta.no
-ákŋoluokta.no
-hattfjelldal.no
-aarborte.no
-haugesund.no
-hemne.no
-hemnes.no
-hemsedal.no
-heroy.more-og-romsdal.no
-herøy.møre-og-romsdal.no
-heroy.nordland.no
-herøy.nordland.no
-hitra.no
-hjartdal.no
-hjelmeland.no
-hobol.no
-hobøl.no
-hof.no
-hol.no
-hole.no
-holmestrand.no
-holtalen.no
-holtålen.no
-hornindal.no
-horten.no
-hurdal.no
-hurum.no
-hvaler.no
-hyllestad.no
-hagebostad.no
-hægebostad.no
-hoyanger.no
-høyanger.no
-hoylandet.no
-høylandet.no
-ha.no
-hå.no
-ibestad.no
-inderoy.no
-inderøy.no
-iveland.no
-jevnaker.no
-jondal.no
-jolster.no
-jølster.no
-karasjok.no
-karasjohka.no
-kárášjohka.no
-karlsoy.no
-galsa.no
-gálsá.no
-karmoy.no
-karmøy.no
-kautokeino.no
-guovdageaidnu.no
-klepp.no
-klabu.no
-klæbu.no
-kongsberg.no
-kongsvinger.no
-kragero.no
-kragerø.no
-kristiansand.no
-kristiansund.no
-krodsherad.no
-krødsherad.no
-kvalsund.no
-rahkkeravju.no
-ráhkkerávju.no
-kvam.no
-kvinesdal.no
-kvinnherad.no
-kviteseid.no
-kvitsoy.no
-kvitsøy.no
-kvafjord.no
-kvæfjord.no
-giehtavuoatna.no
-kvanangen.no
-kvænangen.no
-navuotna.no
-návuotna.no
-kafjord.no
-kåfjord.no
-gaivuotna.no
-gáivuotna.no
-larvik.no
-lavangen.no
-lavagis.no
-loabat.no
-loabát.no
-lebesby.no
-davvesiida.no
-leikanger.no
-leirfjord.no
-leka.no
-leksvik.no
-lenvik.no
-leangaviika.no
-leaŋgaviika.no
-lesja.no
-levanger.no
-lier.no
-lierne.no
-lillehammer.no
-lillesand.no
-lindesnes.no
-lindas.no
-lindås.no
-lom.no
-loppa.no
-lahppi.no
-láhppi.no
-lund.no
-lunner.no
-luroy.no
-lurøy.no
-luster.no
-lyngdal.no
-lyngen.no
-ivgu.no
-lardal.no
-lerdal.no
-lærdal.no
-lodingen.no
-lødingen.no
-lorenskog.no
-lørenskog.no
-loten.no
-løten.no
-malvik.no
-masoy.no
-måsøy.no
-muosat.no
-muosát.no
-mandal.no
-marker.no
-marnardal.no
-masfjorden.no
-meland.no
-meldal.no
-melhus.no
-meloy.no
-meløy.no
-meraker.no
-meråker.no
-moareke.no
-moåreke.no
-midsund.no
-midtre-gauldal.no
-modalen.no
-modum.no
-molde.no
-moskenes.no
-moss.no
-mosvik.no
-malselv.no
-målselv.no
-malatvuopmi.no
-málatvuopmi.no
-namdalseid.no
-aejrie.no
-namsos.no
-namsskogan.no
-naamesjevuemie.no
-nååmesjevuemie.no
-laakesvuemie.no
-nannestad.no
-narvik.no
-narviika.no
-naustdal.no
-nedre-eiker.no
-nes.akershus.no
-nes.buskerud.no
-nesna.no
-nesodden.no
-nesseby.no
-unjarga.no
-unjárga.no
-nesset.no
-nissedal.no
-nittedal.no
-nord-aurdal.no
-nord-fron.no
-nord-odal.no
-norddal.no
-nordkapp.no
-davvenjarga.no
-davvenjárga.no
-nordre-land.no
-nordreisa.no
-raisa.no
-ráisa.no
-nore-og-uvdal.no
-notodden.no
-naroy.no
-nærøy.no
-notteroy.no
-nøtterøy.no
-odda.no
-oksnes.no
-øksnes.no
-oppdal.no
-oppegard.no
-oppegård.no
-orkdal.no
-orland.no
-ørland.no
-orskog.no
-ørskog.no
-orsta.no
-ørsta.no
-os.hedmark.no
-os.hordaland.no
-osen.no
-osteroy.no
-osterøy.no
-ostre-toten.no
-østre-toten.no
-overhalla.no
-ovre-eiker.no
-øvre-eiker.no
-oyer.no
-øyer.no
-oygarden.no
-øygarden.no
-oystre-slidre.no
-øystre-slidre.no
-porsanger.no
-porsangu.no
-porsáŋgu.no
-porsgrunn.no
-radoy.no
-radøy.no
-rakkestad.no
-rana.no
-ruovat.no
-randaberg.no
-rauma.no
-rendalen.no
-rennebu.no
-rennesoy.no
-rennesøy.no
-rindal.no
-ringebu.no
-ringerike.no
-ringsaker.no
-rissa.no
-risor.no
-risør.no
-roan.no
-rollag.no
-rygge.no
-ralingen.no
-rælingen.no
-rodoy.no
-rødøy.no
-romskog.no
-rømskog.no
-roros.no
-røros.no
-rost.no
-røst.no
-royken.no
-røyken.no
-royrvik.no
-røyrvik.no
-rade.no
-råde.no
-salangen.no
-siellak.no
-saltdal.no
-salat.no
-sálát.no
-sálat.no
-samnanger.no
-sande.more-og-romsdal.no
-sande.møre-og-romsdal.no
-sande.vestfold.no
-sandefjord.no
-sandnes.no
-sandoy.no
-sandøy.no
-sarpsborg.no
-sauda.no
-sauherad.no
-sel.no
-selbu.no
-selje.no
-seljord.no
-sigdal.no
-siljan.no
-sirdal.no
-skaun.no
-skedsmo.no
-ski.no
-skien.no
-skiptvet.no
-skjervoy.no
-skjervøy.no
-skierva.no
-skiervá.no
-skjak.no
-skjåk.no
-skodje.no
-skanland.no
-skånland.no
-skanit.no
-skánit.no
-smola.no
-smøla.no
-snillfjord.no
-snasa.no
-snåsa.no
-snoasa.no
-snaase.no
-snåase.no
-sogndal.no
-sokndal.no
-sola.no
-solund.no
-songdalen.no
-sortland.no
-spydeberg.no
-stange.no
-stavanger.no
-steigen.no
-steinkjer.no
-stjordal.no
-stjørdal.no
-stokke.no
-stor-elvdal.no
-stord.no
-stordal.no
-storfjord.no
-omasvuotna.no
-strand.no
-stranda.no
-stryn.no
-sula.no
-suldal.no
-sund.no
-sunndal.no
-surnadal.no
-sveio.no
-svelvik.no
-sykkylven.no
-sogne.no
-søgne.no
-somna.no
-sømna.no
-sondre-land.no
-søndre-land.no
-sor-aurdal.no
-sør-aurdal.no
-sor-fron.no
-sør-fron.no
-sor-odal.no
-sør-odal.no
-sor-varanger.no
-sør-varanger.no
-matta-varjjat.no
-mátta-várjjat.no
-sorfold.no
-sørfold.no
-sorreisa.no
-sørreisa.no
-sorum.no
-sørum.no
-tana.no
-deatnu.no
-time.no
-tingvoll.no
-tinn.no
-tjeldsund.no
-dielddanuorri.no
-tjome.no
-tjøme.no
-tokke.no
-tolga.no
-torsken.no
-tranoy.no
-tranøy.no
-tromso.no
-tromsø.no
-tromsa.no
-romsa.no
-trondheim.no
-troandin.no
-trysil.no
-trana.no
-træna.no
-trogstad.no
-trøgstad.no
-tvedestrand.no
-tydal.no
-tynset.no
-tysfjord.no
-divtasvuodna.no
-divttasvuotna.no
-tysnes.no
-tysvar.no
-tysvær.no
-tonsberg.no
-tønsberg.no
-ullensaker.no
-ullensvang.no
-ulvik.no
-utsira.no
-vadso.no
-vadsø.no
-cahcesuolo.no
-čáhcesuolo.no
-vaksdal.no
-valle.no
-vang.no
-vanylven.no
-vardo.no
-vardø.no
-varggat.no
-várggát.no
-vefsn.no
-vaapste.no
-vega.no
-vegarshei.no
-vegårshei.no
-vennesla.no
-verdal.no
-verran.no
-vestby.no
-vestnes.no
-vestre-slidre.no
-vestre-toten.no
-vestvagoy.no
-vestvågøy.no
-vevelstad.no
-vik.no
-vikna.no
-vindafjord.no
-volda.no
-voss.no
-varoy.no
-værøy.no
-vagan.no
-vågan.no
-voagat.no
-vagsoy.no
-vågsøy.no
-vaga.no
-vågå.no
-valer.ostfold.no
-våler.østfold.no
-valer.hedmark.no
-våler.hedmark.no
-
-// np : http://www.mos.com.np/register.html
-*.np
-
-// nr : http://cenpac.net.nr/dns/index.html
-// Confirmed by registry 2008-06-17
-nr
-biz.nr
-info.nr
-gov.nr
-edu.nr
-org.nr
-net.nr
-com.nr
-
-// nu : http://en.wikipedia.org/wiki/.nu
-nu
-
-// nz : http://en.wikipedia.org/wiki/.nz
-// Confirmed by registry 2014-05-19
-nz
-ac.nz
-co.nz
-cri.nz
-geek.nz
-gen.nz
-govt.nz
-health.nz
-iwi.nz
-kiwi.nz
-maori.nz
-mil.nz
-māori.nz
-net.nz
-org.nz
-parliament.nz
-school.nz
-
-// om : http://en.wikipedia.org/wiki/.om
-om
-co.om
-com.om
-edu.om
-gov.om
-med.om
-museum.om
-net.om
-org.om
-pro.om
-
-// org : http://en.wikipedia.org/wiki/.org
-org
-
-// pa : http://www.nic.pa/
-// Some additional second level "domains" resolve directly as hostnames, such as
-// pannet.pa, so we add a rule for "pa".
-pa
-ac.pa
-gob.pa
-com.pa
-org.pa
-sld.pa
-edu.pa
-net.pa
-ing.pa
-abo.pa
-med.pa
-nom.pa
-
-// pe : https://www.nic.pe/InformeFinalComision.pdf
-pe
-edu.pe
-gob.pe
-nom.pe
-mil.pe
-org.pe
-com.pe
-net.pe
-
-// pf : http://www.gobin.info/domainname/formulaire-pf.pdf
-pf
-com.pf
-org.pf
-edu.pf
-
-// pg : http://en.wikipedia.org/wiki/.pg
-*.pg
-
-// ph : http://www.domains.ph/FAQ2.asp
-// Submitted by registry 2008-06-13
-ph
-com.ph
-net.ph
-org.ph
-gov.ph
-edu.ph
-ngo.ph
-mil.ph
-i.ph
-
-// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK
-pk
-com.pk
-net.pk
-edu.pk
-org.pk
-fam.pk
-biz.pk
-web.pk
-gov.pk
-gob.pk
-gok.pk
-gon.pk
-gop.pk
-gos.pk
-info.pk
-
-// pl http://www.dns.pl/english/index.html
-// updated by .PL registry on 2015-04-28
-pl
-com.pl
-net.pl
-org.pl
-// pl functional domains (http://www.dns.pl/english/index.html)
-aid.pl
-agro.pl
-atm.pl
-auto.pl
-biz.pl
-edu.pl
-gmina.pl
-gsm.pl
-info.pl
-mail.pl
-miasta.pl
-media.pl
-mil.pl
-nieruchomosci.pl
-nom.pl
-pc.pl
-powiat.pl
-priv.pl
-realestate.pl
-rel.pl
-sex.pl
-shop.pl
-sklep.pl
-sos.pl
-szkola.pl
-targi.pl
-tm.pl
-tourism.pl
-travel.pl
-turystyka.pl
-// Government domains
-gov.pl
-ap.gov.pl
-ic.gov.pl
-is.gov.pl
-us.gov.pl
-kmpsp.gov.pl
-kppsp.gov.pl
-kwpsp.gov.pl
-psp.gov.pl
-wskr.gov.pl
-kwp.gov.pl
-mw.gov.pl
-ug.gov.pl
-um.gov.pl
-umig.gov.pl
-ugim.gov.pl
-upow.gov.pl
-uw.gov.pl
-starostwo.gov.pl
-pa.gov.pl
-po.gov.pl
-psse.gov.pl
-pup.gov.pl
-rzgw.gov.pl
-sa.gov.pl
-so.gov.pl
-sr.gov.pl
-wsa.gov.pl
-sko.gov.pl
-uzs.gov.pl
-wiih.gov.pl
-winb.gov.pl
-pinb.gov.pl
-wios.gov.pl
-witd.gov.pl
-wzmiuw.gov.pl
-piw.gov.pl
-wiw.gov.pl
-griw.gov.pl
-wif.gov.pl
-oum.gov.pl
-sdn.gov.pl
-zp.gov.pl
-uppo.gov.pl
-mup.gov.pl
-wuoz.gov.pl
-konsulat.gov.pl
-oirm.gov.pl
-// pl regional domains (http://www.dns.pl/english/index.html)
-augustow.pl
-babia-gora.pl
-bedzin.pl
-beskidy.pl
-bialowieza.pl
-bialystok.pl
-bielawa.pl
-bieszczady.pl
-boleslawiec.pl
-bydgoszcz.pl
-bytom.pl
-cieszyn.pl
-czeladz.pl
-czest.pl
-dlugoleka.pl
-elblag.pl
-elk.pl
-glogow.pl
-gniezno.pl
-gorlice.pl
-grajewo.pl
-ilawa.pl
-jaworzno.pl
-jelenia-gora.pl
-jgora.pl
-kalisz.pl
-kazimierz-dolny.pl
-karpacz.pl
-kartuzy.pl
-kaszuby.pl
-katowice.pl
-kepno.pl
-ketrzyn.pl
-klodzko.pl
-kobierzyce.pl
-kolobrzeg.pl
-konin.pl
-konskowola.pl
-kutno.pl
-lapy.pl
-lebork.pl
-legnica.pl
-lezajsk.pl
-limanowa.pl
-lomza.pl
-lowicz.pl
-lubin.pl
-lukow.pl
-malbork.pl
-malopolska.pl
-mazowsze.pl
-mazury.pl
-mielec.pl
-mielno.pl
-mragowo.pl
-naklo.pl
-nowaruda.pl
-nysa.pl
-olawa.pl
-olecko.pl
-olkusz.pl
-olsztyn.pl
-opoczno.pl
-opole.pl
-ostroda.pl
-ostroleka.pl
-ostrowiec.pl
-ostrowwlkp.pl
-pila.pl
-pisz.pl
-podhale.pl
-podlasie.pl
-polkowice.pl
-pomorze.pl
-pomorskie.pl
-prochowice.pl
-pruszkow.pl
-przeworsk.pl
-pulawy.pl
-radom.pl
-rawa-maz.pl
-rybnik.pl
-rzeszow.pl
-sanok.pl
-sejny.pl
-slask.pl
-slupsk.pl
-sosnowiec.pl
-stalowa-wola.pl
-skoczow.pl
-starachowice.pl
-stargard.pl
-suwalki.pl
-swidnica.pl
-swiebodzin.pl
-swinoujscie.pl
-szczecin.pl
-szczytno.pl
-tarnobrzeg.pl
-tgory.pl
-turek.pl
-tychy.pl
-ustka.pl
-walbrzych.pl
-warmia.pl
-warszawa.pl
-waw.pl
-wegrow.pl
-wielun.pl
-wlocl.pl
-wloclawek.pl
-wodzislaw.pl
-wolomin.pl
-wroclaw.pl
-zachpomor.pl
-zagan.pl
-zarow.pl
-zgora.pl
-zgorzelec.pl
-
-// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-pm
-
-// pn : http://www.government.pn/PnRegistry/policies.htm
-pn
-gov.pn
-co.pn
-org.pn
-edu.pn
-net.pn
-
-// post : http://en.wikipedia.org/wiki/.post
-post
-
-// pr : http://www.nic.pr/index.asp?f=1
-pr
-com.pr
-net.pr
-org.pr
-gov.pr
-edu.pr
-isla.pr
-pro.pr
-biz.pr
-info.pr
-name.pr
-// these aren't mentioned on nic.pr, but on http://en.wikipedia.org/wiki/.pr
-est.pr
-prof.pr
-ac.pr
-
-// pro : http://www.nic.pro/support_faq.htm
-pro
-aca.pro
-bar.pro
-cpa.pro
-jur.pro
-law.pro
-med.pro
-eng.pro
-
-// ps : http://en.wikipedia.org/wiki/.ps
-// http://www.nic.ps/registration/policy.html#reg
-ps
-edu.ps
-gov.ps
-sec.ps
-plo.ps
-com.ps
-org.ps
-net.ps
-
-// pt : http://online.dns.pt/dns/start_dns
-pt
-net.pt
-gov.pt
-org.pt
-edu.pt
-int.pt
-publ.pt
-com.pt
-nome.pt
-
-// pw : http://en.wikipedia.org/wiki/.pw
-pw
-co.pw
-ne.pw
-or.pw
-ed.pw
-go.pw
-belau.pw
-
-// py : http://www.nic.py/pautas.html#seccion_9
-// Confirmed by registry 2012-10-03
-py
-com.py
-coop.py
-edu.py
-gov.py
-mil.py
-net.py
-org.py
-
-// qa : http://domains.qa/en/
-qa
-com.qa
-edu.qa
-gov.qa
-mil.qa
-name.qa
-net.qa
-org.qa
-sch.qa
-
-// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs
-re
-com.re
-asso.re
-nom.re
-
-// ro : http://www.rotld.ro/
-ro
-com.ro
-org.ro
-tm.ro
-nt.ro
-nom.ro
-info.ro
-rec.ro
-arts.ro
-firm.ro
-store.ro
-www.ro
-
-// rs : http://en.wikipedia.org/wiki/.rs
-rs
-co.rs
-org.rs
-edu.rs
-ac.rs
-gov.rs
-in.rs
-
-// ru : http://www.cctld.ru/ru/docs/aktiv_8.php
-// Industry domains
-ru
-ac.ru
-com.ru
-edu.ru
-int.ru
-net.ru
-org.ru
-pp.ru
-// Geographical domains
-adygeya.ru
-altai.ru
-amur.ru
-arkhangelsk.ru
-astrakhan.ru
-bashkiria.ru
-belgorod.ru
-bir.ru
-bryansk.ru
-buryatia.ru
-cbg.ru
-chel.ru
-chelyabinsk.ru
-chita.ru
-chukotka.ru
-chuvashia.ru
-dagestan.ru
-dudinka.ru
-e-burg.ru
-grozny.ru
-irkutsk.ru
-ivanovo.ru
-izhevsk.ru
-jar.ru
-joshkar-ola.ru
-kalmykia.ru
-kaluga.ru
-kamchatka.ru
-karelia.ru
-kazan.ru
-kchr.ru
-kemerovo.ru
-khabarovsk.ru
-khakassia.ru
-khv.ru
-kirov.ru
-koenig.ru
-komi.ru
-kostroma.ru
-krasnoyarsk.ru
-kuban.ru
-kurgan.ru
-kursk.ru
-lipetsk.ru
-magadan.ru
-mari.ru
-mari-el.ru
-marine.ru
-mordovia.ru
-// mosreg.ru Bug 1090800 - removed at request of Aleksey Konstantinov
-msk.ru
-murmansk.ru
-nalchik.ru
-nnov.ru
-nov.ru
-novosibirsk.ru
-nsk.ru
-omsk.ru
-orenburg.ru
-oryol.ru
-palana.ru
-penza.ru
-perm.ru
-ptz.ru
-rnd.ru
-ryazan.ru
-sakhalin.ru
-samara.ru
-saratov.ru
-simbirsk.ru
-smolensk.ru
-spb.ru
-stavropol.ru
-stv.ru
-surgut.ru
-tambov.ru
-tatarstan.ru
-tom.ru
-tomsk.ru
-tsaritsyn.ru
-tsk.ru
-tula.ru
-tuva.ru
-tver.ru
-tyumen.ru
-udm.ru
-udmurtia.ru
-ulan-ude.ru
-vladikavkaz.ru
-vladimir.ru
-vladivostok.ru
-volgograd.ru
-vologda.ru
-voronezh.ru
-vrn.ru
-vyatka.ru
-yakutia.ru
-yamal.ru
-yaroslavl.ru
-yekaterinburg.ru
-yuzhno-sakhalinsk.ru
-// More geographical domains
-amursk.ru
-baikal.ru
-cmw.ru
-fareast.ru
-jamal.ru
-kms.ru
-k-uralsk.ru
-kustanai.ru
-kuzbass.ru
-magnitka.ru
-mytis.ru
-nakhodka.ru
-nkz.ru
-norilsk.ru
-oskol.ru
-pyatigorsk.ru
-rubtsovsk.ru
-snz.ru
-syzran.ru
-vdonsk.ru
-zgrad.ru
-// State domains
-gov.ru
-mil.ru
-// Technical domains
-test.ru
-
-// rw : http://www.nic.rw/cgi-bin/policy.pl
-rw
-gov.rw
-net.rw
-edu.rw
-ac.rw
-com.rw
-co.rw
-int.rw
-mil.rw
-gouv.rw
-
-// sa : http://www.nic.net.sa/
-sa
-com.sa
-net.sa
-org.sa
-gov.sa
-med.sa
-pub.sa
-edu.sa
-sch.sa
-
-// sb : http://www.sbnic.net.sb/
-// Submitted by registry 2008-06-08
-sb
-com.sb
-edu.sb
-gov.sb
-net.sb
-org.sb
-
-// sc : http://www.nic.sc/
-sc
-com.sc
-gov.sc
-net.sc
-org.sc
-edu.sc
-
-// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm
-// Submitted by registry 2008-06-17
-sd
-com.sd
-net.sd
-org.sd
-edu.sd
-med.sd
-tv.sd
-gov.sd
-info.sd
-
-// se : http://en.wikipedia.org/wiki/.se
-// Submitted by registry 2014-03-18
-se
-a.se
-ac.se
-b.se
-bd.se
-brand.se
-c.se
-d.se
-e.se
-f.se
-fh.se
-fhsk.se
-fhv.se
-g.se
-h.se
-i.se
-k.se
-komforb.se
-kommunalforbund.se
-komvux.se
-l.se
-lanbib.se
-m.se
-n.se
-naturbruksgymn.se
-o.se
-org.se
-p.se
-parti.se
-pp.se
-press.se
-r.se
-s.se
-t.se
-tm.se
-u.se
-w.se
-x.se
-y.se
-z.se
-
-// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines
-sg
-com.sg
-net.sg
-org.sg
-gov.sg
-edu.sg
-per.sg
-
-// sh : http://www.nic.sh/registrar.html
-sh
-com.sh
-net.sh
-gov.sh
-org.sh
-mil.sh
-
-// si : http://en.wikipedia.org/wiki/.si
-si
-
-// sj : No registrations at this time.
-// Submitted by registry 2008-06-16
-sj
-
-// sk : http://en.wikipedia.org/wiki/.sk
-// list of 2nd level domains ?
-sk
-
-// sl : http://www.nic.sl
-// Submitted by registry 2008-06-12
-sl
-com.sl
-net.sl
-edu.sl
-gov.sl
-org.sl
-
-// sm : http://en.wikipedia.org/wiki/.sm
-sm
-
-// sn : http://en.wikipedia.org/wiki/.sn
-sn
-art.sn
-com.sn
-edu.sn
-gouv.sn
-org.sn
-perso.sn
-univ.sn
-
-// so : http://www.soregistry.com/
-so
-com.so
-net.so
-org.so
-
-// sr : http://en.wikipedia.org/wiki/.sr
-sr
-
-// st : http://www.nic.st/html/policyrules/
-st
-co.st
-com.st
-consulado.st
-edu.st
-embaixada.st
-gov.st
-mil.st
-net.st
-org.st
-principe.st
-saotome.st
-store.st
-
-// su : http://en.wikipedia.org/wiki/.su
-su
-adygeya.su
-arkhangelsk.su
-balashov.su
-bashkiria.su
-bryansk.su
-dagestan.su
-grozny.su
-ivanovo.su
-kalmykia.su
-kaluga.su
-karelia.su
-khakassia.su
-krasnodar.su
-kurgan.su
-lenug.su
-mordovia.su
-msk.su
-murmansk.su
-nalchik.su
-nov.su
-obninsk.su
-penza.su
-pokrovsk.su
-sochi.su
-spb.su
-togliatti.su
-troitsk.su
-tula.su
-tuva.su
-vladikavkaz.su
-vladimir.su
-vologda.su
-
-// sv : http://www.svnet.org.sv/niveldos.pdf
-sv
-com.sv
-edu.sv
-gob.sv
-org.sv
-red.sv
-
-// sx : http://en.wikipedia.org/wiki/.sx
-// Confirmed by registry 2012-05-31
-sx
-gov.sx
-
-// sy : http://en.wikipedia.org/wiki/.sy
-// see also: http://www.gobin.info/domainname/sy.doc
-sy
-edu.sy
-gov.sy
-net.sy
-mil.sy
-com.sy
-org.sy
-
-// sz : http://en.wikipedia.org/wiki/.sz
-// http://www.sispa.org.sz/
-sz
-co.sz
-ac.sz
-org.sz
-
-// tc : http://en.wikipedia.org/wiki/.tc
-tc
-
-// td : http://en.wikipedia.org/wiki/.td
-td
-
-// tel: http://en.wikipedia.org/wiki/.tel
-// http://www.telnic.org/
-tel
-
-// tf : http://en.wikipedia.org/wiki/.tf
-tf
-
-// tg : http://en.wikipedia.org/wiki/.tg
-// http://www.nic.tg/
-tg
-
-// th : http://en.wikipedia.org/wiki/.th
-// Submitted by registry 2008-06-17
-th
-ac.th
-co.th
-go.th
-in.th
-mi.th
-net.th
-or.th
-
-// tj : http://www.nic.tj/policy.html
-tj
-ac.tj
-biz.tj
-co.tj
-com.tj
-edu.tj
-go.tj
-gov.tj
-int.tj
-mil.tj
-name.tj
-net.tj
-nic.tj
-org.tj
-test.tj
-web.tj
-
-// tk : http://en.wikipedia.org/wiki/.tk
-tk
-
-// tl : http://en.wikipedia.org/wiki/.tl
-tl
-gov.tl
-
-// tm : http://www.nic.tm/local.html
-tm
-com.tm
-co.tm
-org.tm
-net.tm
-nom.tm
-gov.tm
-mil.tm
-edu.tm
-
-// tn : http://en.wikipedia.org/wiki/.tn
-// http://whois.ati.tn/
-tn
-com.tn
-ens.tn
-fin.tn
-gov.tn
-ind.tn
-intl.tn
-nat.tn
-net.tn
-org.tn
-info.tn
-perso.tn
-tourism.tn
-edunet.tn
-rnrt.tn
-rns.tn
-rnu.tn
-mincom.tn
-agrinet.tn
-defense.tn
-turen.tn
-
-// to : http://en.wikipedia.org/wiki/.to
-// Submitted by registry 2008-06-17
-to
-com.to
-gov.to
-net.to
-org.to
-edu.to
-mil.to
-
-// tp : No registrations at this time.
-// Submitted by Ryan Sleevi 2014-01-03
-tp
-
-// subTLDs: https://www.nic.tr/forms/eng/policies.pdf
-// and: https://www.nic.tr/forms/politikalar.pdf
-// Submitted by 2014-07-19
-tr
-com.tr
-info.tr
-biz.tr
-net.tr
-org.tr
-web.tr
-gen.tr
-tv.tr
-av.tr
-dr.tr
-bbs.tr
-name.tr
-tel.tr
-gov.tr
-bel.tr
-pol.tr
-mil.tr
-k12.tr
-edu.tr
-kep.tr
-
-// Used by Northern Cyprus
-nc.tr
-
-// Used by government agencies of Northern Cyprus
-gov.nc.tr
-
-// travel : http://en.wikipedia.org/wiki/.travel
-travel
-
-// tt : http://www.nic.tt/
-tt
-co.tt
-com.tt
-org.tt
-net.tt
-biz.tt
-info.tt
-pro.tt
-int.tt
-coop.tt
-jobs.tt
-mobi.tt
-travel.tt
-museum.tt
-aero.tt
-name.tt
-gov.tt
-edu.tt
-
-// tv : http://en.wikipedia.org/wiki/.tv
-// Not listing any 2LDs as reserved since none seem to exist in practice,
-// Wikipedia notwithstanding.
-tv
-
-// tw : http://en.wikipedia.org/wiki/.tw
-tw
-edu.tw
-gov.tw
-mil.tw
-com.tw
-net.tw
-org.tw
-idv.tw
-game.tw
-ebiz.tw
-club.tw
-網路.tw
-組織.tw
-商業.tw
-
-// tz : http://www.tznic.or.tz/index.php/domains
-// Confirmed by registry 2013-01-22
-tz
-ac.tz
-co.tz
-go.tz
-hotel.tz
-info.tz
-me.tz
-mil.tz
-mobi.tz
-ne.tz
-or.tz
-sc.tz
-tv.tz
-
-// ua : https://hostmaster.ua/policy/?ua
-// Submitted by registry 2012-04-27
-ua
-// ua 2LD
-com.ua
-edu.ua
-gov.ua
-in.ua
-net.ua
-org.ua
-// ua geographic names
-// https://hostmaster.ua/2ld/
-cherkassy.ua
-cherkasy.ua
-chernigov.ua
-chernihiv.ua
-chernivtsi.ua
-chernovtsy.ua
-ck.ua
-cn.ua
-cr.ua
-crimea.ua
-cv.ua
-dn.ua
-dnepropetrovsk.ua
-dnipropetrovsk.ua
-dominic.ua
-donetsk.ua
-dp.ua
-if.ua
-ivano-frankivsk.ua
-kh.ua
-kharkiv.ua
-kharkov.ua
-kherson.ua
-khmelnitskiy.ua
-khmelnytskyi.ua
-kiev.ua
-kirovograd.ua
-km.ua
-kr.ua
-krym.ua
-ks.ua
-kv.ua
-kyiv.ua
-lg.ua
-lt.ua
-lugansk.ua
-lutsk.ua
-lv.ua
-lviv.ua
-mk.ua
-mykolaiv.ua
-nikolaev.ua
-od.ua
-odesa.ua
-odessa.ua
-pl.ua
-poltava.ua
-rivne.ua
-rovno.ua
-rv.ua
-sb.ua
-sebastopol.ua
-sevastopol.ua
-sm.ua
-sumy.ua
-te.ua
-ternopil.ua
-uz.ua
-uzhgorod.ua
-vinnica.ua
-vinnytsia.ua
-vn.ua
-volyn.ua
-yalta.ua
-zaporizhzhe.ua
-zaporizhzhia.ua
-zhitomir.ua
-zhytomyr.ua
-zp.ua
-zt.ua
-
-// Private registries in .ua
-co.ua
-pp.ua
-
-// ug : https://www.registry.co.ug/
-ug
-co.ug
-or.ug
-ac.ug
-sc.ug
-go.ug
-ne.ug
-com.ug
-org.ug
-
-// uk : http://en.wikipedia.org/wiki/.uk
-// Submitted by registry
-uk
-ac.uk
-co.uk
-gov.uk
-ltd.uk
-me.uk
-net.uk
-nhs.uk
-org.uk
-plc.uk
-police.uk
-*.sch.uk
-
-// us : http://en.wikipedia.org/wiki/.us
-us
-dni.us
-fed.us
-isa.us
-kids.us
-nsn.us
-// us geographic names
-ak.us
-al.us
-ar.us
-as.us
-az.us
-ca.us
-co.us
-ct.us
-dc.us
-de.us
-fl.us
-ga.us
-gu.us
-hi.us
-ia.us
-id.us
-il.us
-in.us
-ks.us
-ky.us
-la.us
-ma.us
-md.us
-me.us
-mi.us
-mn.us
-mo.us
-ms.us
-mt.us
-nc.us
-nd.us
-ne.us
-nh.us
-nj.us
-nm.us
-nv.us
-ny.us
-oh.us
-ok.us
-or.us
-pa.us
-pr.us
-ri.us
-sc.us
-sd.us
-tn.us
-tx.us
-ut.us
-vi.us
-vt.us
-va.us
-wa.us
-wi.us
-wv.us
-wy.us
-// The registrar notes several more specific domains available in each state,
-// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat
-// haphazard; in some states these domains resolve as addresses, while in others
-// only subdomains are available, or even nothing at all. We include the
-// most common ones where it's clear that different sites are different
-// entities.
-k12.ak.us
-k12.al.us
-k12.ar.us
-k12.as.us
-k12.az.us
-k12.ca.us
-k12.co.us
-k12.ct.us
-k12.dc.us
-k12.de.us
-k12.fl.us
-k12.ga.us
-k12.gu.us
-// k12.hi.us Bug 614565 - Hawaii has a state-wide DOE login
-k12.ia.us
-k12.id.us
-k12.il.us
-k12.in.us
-k12.ks.us
-k12.ky.us
-k12.la.us
-k12.ma.us
-k12.md.us
-k12.me.us
-k12.mi.us
-k12.mn.us
-k12.mo.us
-k12.ms.us
-k12.mt.us
-k12.nc.us
-// k12.nd.us Bug 1028347 - Removed at request of Travis Rosso
-k12.ne.us
-k12.nh.us
-k12.nj.us
-k12.nm.us
-k12.nv.us
-k12.ny.us
-k12.oh.us
-k12.ok.us
-k12.or.us
-k12.pa.us
-k12.pr.us
-k12.ri.us
-k12.sc.us
-// k12.sd.us Bug 934131 - Removed at request of James Booze
-k12.tn.us
-k12.tx.us
-k12.ut.us
-k12.vi.us
-k12.vt.us
-k12.va.us
-k12.wa.us
-k12.wi.us
-// k12.wv.us Bug 947705 - Removed at request of Verne Britton
-k12.wy.us
-cc.ak.us
-cc.al.us
-cc.ar.us
-cc.as.us
-cc.az.us
-cc.ca.us
-cc.co.us
-cc.ct.us
-cc.dc.us
-cc.de.us
-cc.fl.us
-cc.ga.us
-cc.gu.us
-cc.hi.us
-cc.ia.us
-cc.id.us
-cc.il.us
-cc.in.us
-cc.ks.us
-cc.ky.us
-cc.la.us
-cc.ma.us
-cc.md.us
-cc.me.us
-cc.mi.us
-cc.mn.us
-cc.mo.us
-cc.ms.us
-cc.mt.us
-cc.nc.us
-cc.nd.us
-cc.ne.us
-cc.nh.us
-cc.nj.us
-cc.nm.us
-cc.nv.us
-cc.ny.us
-cc.oh.us
-cc.ok.us
-cc.or.us
-cc.pa.us
-cc.pr.us
-cc.ri.us
-cc.sc.us
-cc.sd.us
-cc.tn.us
-cc.tx.us
-cc.ut.us
-cc.vi.us
-cc.vt.us
-cc.va.us
-cc.wa.us
-cc.wi.us
-cc.wv.us
-cc.wy.us
-lib.ak.us
-lib.al.us
-lib.ar.us
-lib.as.us
-lib.az.us
-lib.ca.us
-lib.co.us
-lib.ct.us
-lib.dc.us
-lib.de.us
-lib.fl.us
-lib.ga.us
-lib.gu.us
-lib.hi.us
-lib.ia.us
-lib.id.us
-lib.il.us
-lib.in.us
-lib.ks.us
-lib.ky.us
-lib.la.us
-lib.ma.us
-lib.md.us
-lib.me.us
-lib.mi.us
-lib.mn.us
-lib.mo.us
-lib.ms.us
-lib.mt.us
-lib.nc.us
-lib.nd.us
-lib.ne.us
-lib.nh.us
-lib.nj.us
-lib.nm.us
-lib.nv.us
-lib.ny.us
-lib.oh.us
-lib.ok.us
-lib.or.us
-lib.pa.us
-lib.pr.us
-lib.ri.us
-lib.sc.us
-lib.sd.us
-lib.tn.us
-lib.tx.us
-lib.ut.us
-lib.vi.us
-lib.vt.us
-lib.va.us
-lib.wa.us
-lib.wi.us
-// lib.wv.us Bug 941670 - Removed at request of Larry W Arnold
-lib.wy.us
-// k12.ma.us contains school districts in Massachusetts. The 4LDs are
-// managed indepedently except for private (PVT), charter (CHTR) and
-// parochial (PAROCH) schools. Those are delegated dorectly to the
-// 5LD operators.
-pvt.k12.ma.us
-chtr.k12.ma.us
-paroch.k12.ma.us
-
-// uy : http://www.nic.org.uy/
-uy
-com.uy
-edu.uy
-gub.uy
-mil.uy
-net.uy
-org.uy
-
-// uz : http://www.reg.uz/
-uz
-co.uz
-com.uz
-net.uz
-org.uz
-
-// va : http://en.wikipedia.org/wiki/.va
-va
-
-// vc : http://en.wikipedia.org/wiki/.vc
-// Submitted by registry 2008-06-13
-vc
-com.vc
-net.vc
-org.vc
-gov.vc
-mil.vc
-edu.vc
-
-// ve : https://registro.nic.ve/
-// Confirmed by registry 2012-10-04
-// Updated 2014-05-20 - Bug 940478
-ve
-arts.ve
-co.ve
-com.ve
-e12.ve
-edu.ve
-firm.ve
-gob.ve
-gov.ve
-info.ve
-int.ve
-mil.ve
-net.ve
-org.ve
-rec.ve
-store.ve
-tec.ve
-web.ve
-
-// vg : http://en.wikipedia.org/wiki/.vg
-vg
-
-// vi : http://www.nic.vi/newdomainform.htm
-// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other
-// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they
-// are available for registration (which they do not seem to be).
-vi
-co.vi
-com.vi
-k12.vi
-net.vi
-org.vi
-
-// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp
-vn
-com.vn
-net.vn
-org.vn
-edu.vn
-gov.vn
-int.vn
-ac.vn
-biz.vn
-info.vn
-name.vn
-pro.vn
-health.vn
-
-// vu : http://en.wikipedia.org/wiki/.vu
-// http://www.vunic.vu/
-vu
-com.vu
-edu.vu
-net.vu
-org.vu
-
-// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-wf
-
-// ws : http://en.wikipedia.org/wiki/.ws
-// http://samoanic.ws/index.dhtml
-ws
-com.ws
-net.ws
-org.ws
-gov.ws
-edu.ws
-
-// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-yt
-
-// IDN ccTLDs
-// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then
-// U-label, and follow this format:
-// // A-Label ("", [, variant info]) :
-// // [sponsoring org]
-// U-Label
-
-// xn--mgbaam7a8h ("Emerat", Arabic) : AE
-// http://nic.ae/english/arabicdomain/rules.jsp
-امارات
-
-// xn--y9a3aq ("hye", Armenian) : AM
-// ISOC AM (operated by .am Registry)
-հայ
-
-// xn--54b7fta0cc ("Bangla", Bangla) : BD
-বাংলা
-
-// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY
-// Operated by .by registry
-бел
-
-// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN
-// CNNIC
-// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
-中国
-
-// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN
-// CNNIC
-// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
-中國
-
-// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ
-الجزائر
-
-// xn--wgbh1c ("Egypt/Masr", Arabic) : EG
-// http://www.dotmasr.eg/
-مصر
-
-// xn--node ("ge", Georgian Mkhedruli) : GE
-გე
-
-// xn--qxam ("el", Greek) : GR
-// Hellenic Ministry of Infrastructure, Transport, and Networks
-ελ
-
-// xn--j6w193g ("Hong Kong", Chinese) : HK
-// https://www2.hkirc.hk/register/rules.jsp
-香港
-
-// xn--h2brj9c ("Bharat", Devanagari) : IN
-// India
-भारत
-
-// xn--mgbbh1a71e ("Bharat", Arabic) : IN
-// India
-بھارت
-
-// xn--fpcrj9c3d ("Bharat", Telugu) : IN
-// India
-భారత్
-
-// xn--gecrj9c ("Bharat", Gujarati) : IN
-// India
-ભારત
-
-// xn--s9brj9c ("Bharat", Gurmukhi) : IN
-// India
-ਭਾਰਤ
-
-// xn--45brj9c ("Bharat", Bengali) : IN
-// India
-ভারত
-
-// xn--xkc2dl3a5ee0h ("India", Tamil) : IN
-// India
-இந்தியா
-
-// xn--mgba3a4f16a ("Iran", Persian) : IR
-ایران
-
-// xn--mgba3a4fra ("Iran", Arabic) : IR
-ايران
-
-// xn--mgbtx2b ("Iraq", Arabic) : IQ
-// Communications and Media Commission
-عراق
-
-// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO
-// National Information Technology Center (NITC)
-// Royal Scientific Society, Al-Jubeiha
-الاردن
-
-// xn--3e0b707e ("Republic of Korea", Hangul) : KR
-한국
-
-// xn--80ao21a ("Kaz", Kazakh) : KZ
-қаз
-
-// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK
-// http://nic.lk
-ලංකා
-
-// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK
-// http://nic.lk
-இலங்கை
-
-// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA
-المغرب
-
-// xn--d1alf ("mkd", Macedonian) : MK
-// MARnet
-мкд
-
-// xn--l1acc ("mon", Mongolian) : MN
-мон
-
-// xn--mix891f ("Macao", Chinese, Traditional) : MO
-// MONIC / HNET Asia (Registry Operator for .mo)
-澳門
-
-// xn--mix082f ("Macao", Chinese, Simplified) : MO
-澳门
-
-// xn--mgbx4cd0ab ("Malaysia", Malay) : MY
-مليسيا
-
-// xn--mgb9awbf ("Oman", Arabic) : OM
-عمان
-
-// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK
-پاکستان
-
-// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK
-پاكستان
-
-// xn--ygbi2ammx ("Falasteen", Arabic) : PS
-// The Palestinian National Internet Naming Authority (PNINA)
-// http://www.pnina.ps
-فلسطين
-
-// xn--90a3ac ("srb", Cyrillic) : RS
-// http://www.rnids.rs/en/the-.срб-domain
-срб
-пр.срб
-орг.срб
-обр.срб
-од.срб
-упр.срб
-ак.срб
-
-// xn--p1ai ("rf", Russian-Cyrillic) : RU
-// http://www.cctld.ru/en/docs/rulesrf.php
-рф
-
-// xn--wgbl6a ("Qatar", Arabic) : QA
-// http://www.ict.gov.qa/
-قطر
-
-// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA
-// http://www.nic.net.sa/
-السعودية
-
-// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant) : SA
-السعودیة
-
-// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA
-السعودیۃ
-
-// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA
-السعوديه
-
-// xn--mgbpl2fh ("sudan", Arabic) : SD
-// Operated by .sd registry
-سودان
-
-// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG
-新加坡
-
-// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG
-சிங்கப்பூர்
-
-// xn--ogbpf8fl ("Syria", Arabic) : SY
-سورية
-
-// xn--mgbtf8fl ("Syria", Arabic, variant) : SY
-سوريا
-
-// xn--o3cw4h ("Thai", Thai) : TH
-// http://www.thnic.co.th
-ไทย
-
-// xn--pgbs0dh ("Tunisia", Arabic) : TN
-// http://nic.tn
-تونس
-
-// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW
-// http://www.twnic.net/english/dn/dn_07a.htm
-台灣
-
-// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW
-// http://www.twnic.net/english/dn/dn_07a.htm
-台湾
-
-// xn--nnx388a ("Taiwan", Chinese, variant) : TW
-臺灣
-
-// xn--j1amh ("ukr", Cyrillic) : UA
-укр
-
-// xn--mgb2ddes ("AlYemen", Arabic) : YE
-اليمن
-
-// xxx : http://icmregistry.com
-xxx
-
-// ye : http://www.y.net.ye/services/domain_name.htm
-*.ye
-
-// za : http://www.zadna.org.za/slds.html
-*.za
-
-// zm : http://en.wikipedia.org/wiki/.zm
-*.zm
-
-// zw : http://en.wikipedia.org/wiki/.zw
-*.zw
-
-
-// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2015-05-06T09:31:08Z
-
-// aaa : 2015-02-26 American Automobile Association, Inc.
-aaa
-
-// abb : 2014-10-24 ABB Ltd
-abb
-
-// abbott : 2014-07-24 Abbott Laboratories, Inc.
-abbott
-
-// abogado : 2014-04-24 Top Level Domain Holdings Limited
-abogado
-
-// academy : 2013-11-07 Half Oaks, LLC
-academy
-
-// accenture : 2014-08-15 Accenture plc
-accenture
-
-// accountant : 2014-11-20 dot Accountant Limited
-accountant
-
-// accountants : 2014-03-20 Knob Town, LLC
-accountants
-
-// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG
-aco
-
-// active : 2014-05-01 The Active Network, Inc
-active
-
-// actor : 2013-12-12 United TLD Holdco Ltd.
-actor
-
-// ads : 2014-12-04 Charleston Road Registry Inc.
-ads
-
-// adult : 2014-10-16 ICM Registry AD LLC
-adult
-
-// aeg : 2015-03-19 Aktiebolaget Electrolux
-aeg
-
-// afl : 2014-10-02 Australian Football League
-afl
-
-// africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa
-africa
-
-// africamagic : 2015-03-05 Electronic Media Network (Pty) Ltd
-africamagic
-
-// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
-agakhan
-
-// agency : 2013-11-14 Steel Falls, LLC
-agency
-
-// aig : 2014-12-18 American International Group, Inc.
-aig
-
-// airforce : 2014-03-06 United TLD Holdco Ltd.
-airforce
-
-// airtel : 2014-10-24 Bharti Airtel Limited
-airtel
-
-// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
-akdn
-
-// alibaba : 2015-01-15 Alibaba Group Holding Limited
-alibaba
-
-// alipay : 2015-01-15 Alibaba Group Holding Limited
-alipay
-
-// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft
-allfinanz
-
-// alsace : 2014-07-02 REGION D ALSACE
-alsace
-
-// amsterdam : 2014-07-24 Gemeente Amsterdam
-amsterdam
-
-// analytics : 2014-12-18 Campus IP LLC
-analytics
-
-// android : 2014-08-07 Charleston Road Registry Inc.
-android
-
-// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-anquan
-
-// apartments : 2014-12-11 June Maple, LLC
-apartments
-
-// aquarelle : 2014-07-24 Aquarelle.com
-aquarelle
-
-// aramco : 2014-11-20 Aramco Services Company
-aramco
-
-// archi : 2014-02-06 STARTING DOT LIMITED
-archi
-
-// army : 2014-03-06 United TLD Holdco Ltd.
-army
-
-// arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E.
-arte
-
-// associates : 2014-03-06 Baxter Hill, LLC
-associates
-
-// attorney : 2014-03-20
-attorney
-
-// auction : 2014-03-20
-auction
-
-// audio : 2014-03-20 Uniregistry, Corp.
-audio
-
-// author : 2014-12-18 Amazon EU S.à r.l.
-author
-
-// auto : 2014-11-13 Uniregistry, Corp.
-auto
-
-// autos : 2014-01-09 DERAutos, LLC
-autos
-
-// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca
-avianca
-
-// axa : 2013-12-19 AXA SA
-axa
-
-// azure : 2014-12-18 Microsoft Corporation
-azure
-
-// baby : 2015-04-09 Johnson & Johnson Services, Inc.
-baby
-
-// baidu : 2015-01-08 Baidu, Inc.
-baidu
-
-// band : 2014-06-12
-band
-
-// bank : 2014-09-25 fTLD Registry Services LLC
-bank
-
-// bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
-bar
-
-// barcelona : 2014-07-24 Municipi de Barcelona
-barcelona
-
-// barclaycard : 2014-11-20 Barclays Bank PLC
-barclaycard
-
-// barclays : 2014-11-20 Barclays Bank PLC
-barclays
-
-// bargains : 2013-11-14 Half Hallow, LLC
-bargains
-
-// bauhaus : 2014-04-17 Werkhaus GmbH
-bauhaus
-
-// bayern : 2014-01-23 Bayern Connect GmbH
-bayern
-
-// bbc : 2014-12-18 British Broadcasting Corporation
-bbc
-
-// bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A.
-bbva
-
-// bcg : 2015-04-02 The Boston Consulting Group, Inc.
-bcg
-
-// bcn : 2014-07-24 Municipi de Barcelona
-bcn
-
-// beer : 2014-01-09 Top Level Domain Holdings Limited
-beer
-
-// bentley : 2014-12-18 Bentley Motors Limited
-bentley
-
-// berlin : 2013-10-31 dotBERLIN GmbH & Co. KG
-berlin
-
-// best : 2013-12-19 BestTLD Pty Ltd
-best
-
-// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited
-bharti
-
-// bible : 2014-06-19 American Bible Society
-bible
-
-// bid : 2013-12-19 dot Bid Limited
-bid
-
-// bike : 2013-08-27 Grand Hollow, LLC
-bike
-
-// bing : 2014-12-18 Microsoft Corporation
-bing
-
-// bingo : 2014-12-04 Sand Cedar, LLC
-bingo
-
-// bio : 2014-03-06 STARTING DOT LIMITED
-bio
-
-// black : 2014-01-16 Afilias Limited
-black
-
-// blackfriday : 2014-01-16 Uniregistry, Corp.
-blackfriday
-
-// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC
-bloomberg
-
-// blue : 2013-11-07 Afilias Limited
-blue
-
-// bms : 2014-10-30 Bristol-Myers Squibb Company
-bms
-
-// bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
-bmw
-
-// bnl : 2014-07-24 Banca Nazionale del Lavoro
-bnl
-
-// bnpparibas : 2014-05-29 BNP Paribas
-bnpparibas
-
-// boats : 2014-12-04 DERBoats, LLC
-boats
-
-// bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
-bom
-
-// bond : 2014-06-05 Bond University Limited
-bond
-
-// boo : 2014-01-30 Charleston Road Registry Inc.
-boo
-
-// boots : 2015-01-08 THE BOOTS COMPANY PLC
-boots
-
-// bot : 2014-12-18 Amazon EU S.à r.l.
-bot
-
-// boutique : 2013-11-14 Over Galley, LLC
-boutique
-
-// bradesco : 2014-12-18 Banco Bradesco S.A.
-bradesco
-
-// bridgestone : 2014-12-18 Bridgestone Corporation
-bridgestone
-
-// broadway : 2014-12-22 Celebrate Broadway, Inc.
-broadway
-
-// broker : 2014-12-11 IG Group Holdings PLC
-broker
-
-// brother : 2015-01-29 Brother Industries, Ltd.
-brother
-
-// brussels : 2014-02-06 DNS.be vzw
-brussels
-
-// budapest : 2013-11-21 Top Level Domain Holdings Limited
-budapest
-
-// build : 2013-11-07 Plan Bee LLC
-build
-
-// builders : 2013-11-07 Atomic Madison, LLC
-builders
-
-// business : 2013-11-07 Spring Cross, LLC
-business
-
-// buy : 2014-12-18 Amazon EU S.à r.l.
-buy
-
-// buzz : 2013-10-02 DOTSTRATEGY CO.
-buzz
-
-// bzh : 2014-02-27 Association www.bzh
-bzh
-
-// cab : 2013-10-24 Half Sunset, LLC
-cab
-
-// cafe : 2015-02-11 Pioneer Canyon, LLC
-cafe
-
-// cal : 2014-07-24 Charleston Road Registry Inc.
-cal
-
-// call : 2014-12-18 Amazon EU S.à r.l.
-call
-
-// camera : 2013-08-27 Atomic Maple, LLC
-camera
-
-// camp : 2013-11-07 Delta Dynamite, LLC
-camp
-
-// cancerresearch : 2014-05-15 Australian Cancer Research Foundation
-cancerresearch
-
-// canon : 2014-09-12 Canon Inc.
-canon
-
-// capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-capetown
-
-// capital : 2014-03-06 Delta Mill, LLC
-capital
-
-// car : 2015-01-22 Charleston Road Registry Inc.
-car
-
-// caravan : 2013-12-12 Caravan International, Inc.
-caravan
-
-// cards : 2013-12-05 Foggy Hollow, LLC
-cards
-
-// care : 2014-03-06 Goose Cross
-care
-
-// career : 2013-10-09 dotCareer LLC
-career
-
-// careers : 2013-10-02 Wild Corner, LLC
-careers
-
-// cars : 2014-11-13 Uniregistry, Corp.
-cars
-
-// cartier : 2014-06-23 Richemont DNS Inc.
-cartier
-
-// casa : 2013-11-21 Top Level Domain Holdings Limited
-casa
-
-// cash : 2014-03-06 Delta Lake, LLC
-cash
-
-// casino : 2014-12-18 Binky Sky, LLC
-casino
-
-// catering : 2013-12-05 New Falls. LLC
-catering
-
-// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-cba
-
-// cbn : 2014-08-22 The Christian Broadcasting Network, Inc.
-cbn
-
-// ceb : 2015-04-09 The Corporate Executive Board Company
-ceb
-
-// center : 2013-11-07 Tin Mill, LLC
-center
-
-// ceo : 2013-11-07 CEOTLD Pty Ltd
-ceo
-
-// cern : 2014-06-05 European Organization for Nuclear Research ("CERN")
-cern
-
-// cfa : 2014-08-28 CFA Institute
-cfa
-
-// cfd : 2014-12-11 IG Group Holdings PLC
-cfd
-
-// chanel : 2015-04-09 Chanel International B.V.
-chanel
-
-// channel : 2014-05-08 Charleston Road Registry Inc.
-channel
-
-// chase : 2015-04-30 JPMorgan Chase & Co.
-chase
-
-// chat : 2014-12-04 Sand Fields, LLC
-chat
-
-// cheap : 2013-11-14 Sand Cover, LLC
-cheap
-
-// chloe : 2014-10-16 Richemont DNS Inc.
-chloe
-
-// christmas : 2013-11-21 Uniregistry, Corp.
-christmas
-
-// chrome : 2014-07-24 Charleston Road Registry Inc.
-chrome
-
-// church : 2014-02-06 Holly Fields, LLC
-church
-
-// cipriani : 2015-02-19 Hotel Cipriani Srl
-cipriani
-
-// circle : 2014-12-18 Amazon EU S.à r.l.
-circle
-
-// cisco : 2014-12-22 Cisco Technology, Inc.
-cisco
-
-// citic : 2014-01-09 CITIC Group Corporation
-citic
-
-// city : 2014-05-29 Snow Sky, LLC
-city
-
-// cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc.
-cityeats
-
-// claims : 2014-03-20 Black Corner, LLC
-claims
-
-// cleaning : 2013-12-05 Fox Shadow, LLC
-cleaning
-
-// click : 2014-06-05 Uniregistry, Corp.
-click
-
-// clinic : 2014-03-20 Goose Park, LLC
-clinic
-
-// clothing : 2013-08-27 Steel Lake, LLC
-clothing
-
-// cloud : 2015-04-16 ARUBA S.p.A.
-cloud
-
-// club : 2013-11-08 .CLUB DOMAINS, LLC
-club
-
-// coach : 2014-10-09 Koko Island, LLC
-coach
-
-// codes : 2013-10-31 Puff Willow, LLC
-codes
-
-// coffee : 2013-10-17 Trixy Cover, LLC
-coffee
-
-// college : 2014-01-16 XYZ.COM LLC
-college
-
-// cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH
-cologne
-
-// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-commbank
-
-// community : 2013-12-05 Fox Orchard, LLC
-community
-
-// company : 2013-11-07 Silver Avenue, LLC
-company
-
-// computer : 2013-10-24 Pine Mill, LLC
-computer
-
-// comsec : 2015-01-08 VeriSign, Inc.
-comsec
-
-// condos : 2013-12-05 Pine House, LLC
-condos
-
-// construction : 2013-09-16 Fox Dynamite, LLC
-construction
-
-// consulting : 2013-12-05
-consulting
-
-// contact : 2015-01-08 Top Level Spectrum, Inc.
-contact
-
-// contractors : 2013-09-10 Magic Woods, LLC
-contractors
-
-// cooking : 2013-11-21 Top Level Domain Holdings Limited
-cooking
-
-// cool : 2013-11-14 Koko Lake, LLC
-cool
-
-// corsica : 2014-09-25 Collectivité Territoriale de Corse
-corsica
-
-// country : 2013-12-19 Top Level Domain Holdings Limited
-country
-
-// coupon : 2015-02-26 Amazon EU S.à r.l.
-coupon
-
-// coupons : 2015-03-26 Black Island, LLC
-coupons
-
-// courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD
-courses
-
-// credit : 2014-03-20 Snow Shadow, LLC
-credit
-
-// creditcard : 2014-03-20 Binky Frostbite, LLC
-creditcard
-
-// creditunion : 2015-01-22 CUNA Performance Resources, LLC
-creditunion
-
-// cricket : 2014-10-09 dot Cricket Limited
-cricket
-
-// crown : 2014-10-24 Crown Equipment Corporation
-crown
-
-// crs : 2014-04-03 Federated Co-operatives Limited
-crs
-
-// cruises : 2013-12-05 Spring Way, LLC
-cruises
-
-// csc : 2014-09-25 Alliance-One Services, Inc.
-csc
-
-// cuisinella : 2014-04-03 SALM S.A.S.
-cuisinella
-
-// cymru : 2014-05-08 Nominet UK
-cymru
-
-// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd.
-cyou
-
-// dabur : 2014-02-06 Dabur India Limited
-dabur
-
-// dad : 2014-01-23 Charleston Road Registry Inc.
-dad
-
-// dance : 2013-10-24 United TLD Holdco Ltd.
-dance
-
-// date : 2014-11-20 dot Date Limited
-date
-
-// dating : 2013-12-05 Pine Fest, LLC
-dating
-
-// datsun : 2014-03-27 NISSAN MOTOR CO., LTD.
-datsun
-
-// day : 2014-01-30 Charleston Road Registry Inc.
-day
-
-// dclk : 2014-11-20 Charleston Road Registry Inc.
-dclk
-
-// dealer : 2014-12-22 Dealer Dot Com, Inc.
-dealer
-
-// deals : 2014-05-22 Sand Sunset, LLC
-deals
-
-// degree : 2014-03-06
-degree
-
-// delivery : 2014-09-11 Steel Station, LLC
-delivery
-
-// dell : 2014-10-24 Dell Inc.
-dell
-
-// delta : 2015-02-19 Delta Air Lines, Inc.
-delta
-
-// democrat : 2013-10-24 United TLD Holdco Ltd.
-democrat
-
-// dental : 2014-03-20 Tin Birch, LLC
-dental
-
-// dentist : 2014-03-20
-dentist
-
-// desi : 2013-11-14 Desi Networks LLC
-desi
-
-// design : 2014-11-07 Top Level Design, LLC
-design
-
-// dev : 2014-10-16 Charleston Road Registry Inc.
-dev
-
-// diamonds : 2013-09-22 John Edge, LLC
-diamonds
-
-// diet : 2014-06-26 Uniregistry, Corp.
-diet
-
-// digital : 2014-03-06 Dash Park, LLC
-digital
-
-// direct : 2014-04-10 Half Trail, LLC
-direct
-
-// directory : 2013-09-20 Extra Madison, LLC
-directory
-
-// discount : 2014-03-06 Holly Hill, LLC
-discount
-
-// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd.
-dnp
-
-// docs : 2014-10-16 Charleston Road Registry Inc.
-docs
-
-// dog : 2014-12-04 Koko Mill, LLC
-dog
-
-// doha : 2014-09-18 Communications Regulatory Authority (CRA)
-doha
-
-// domains : 2013-10-17 Sugar Cross, LLC
-domains
-
-// doosan : 2014-04-03 Doosan Corporation
-doosan
-
-// download : 2014-11-20 dot Support Limited
-download
-
-// drive : 2015-03-05 Charleston Road Registry Inc.
-drive
-
-// dstv : 2015-03-12 MultiChoice (Proprietary) Limited
-dstv
-
-// dubai : 2015-01-01 Dubai Smart Government Department
-dubai
-
-// durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-durban
-
-// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-dvag
-
-// earth : 2014-12-04 Interlink Co., Ltd.
-earth
-
-// eat : 2014-01-23 Charleston Road Registry Inc.
-eat
-
-// edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V.
-edeka
-
-// education : 2013-11-07 Brice Way, LLC
-education
-
-// email : 2013-10-31 Spring Madison, LLC
-email
-
-// emerck : 2014-04-03 Merck KGaA
-emerck
-
-// energy : 2014-09-11 Binky Birch, LLC
-energy
-
-// engineer : 2014-03-06 United TLD Holdco Ltd.
-engineer
-
-// engineering : 2014-03-06 Romeo Canyon
-engineering
-
-// enterprises : 2013-09-20 Snow Oaks, LLC
-enterprises
-
-// epson : 2014-12-04 Seiko Epson Corporation
-epson
-
-// equipment : 2013-08-27 Corn Station, LLC
-equipment
-
-// erni : 2014-04-03 ERNI Group Holding AG
-erni
-
-// esq : 2014-05-08 Charleston Road Registry Inc.
-esq
-
-// estate : 2013-08-27 Trixy Park, LLC
-estate
-
-// eurovision : 2014-04-24 European Broadcasting Union (EBU)
-eurovision
-
-// eus : 2013-12-12 Puntueus Fundazioa
-eus
-
-// events : 2013-12-05 Pioneer Maple, LLC
-events
-
-// everbank : 2014-05-15 EverBank
-everbank
-
-// exchange : 2014-03-06 Spring Falls, LLC
-exchange
-
-// expert : 2013-11-21 Magic Pass, LLC
-expert
-
-// exposed : 2013-12-05 Victor Beach, LLC
-exposed
-
-// express : 2015-02-11 Sea Sunset, LLC
-express
-
-// fage : 2014-12-18 Fage International S.A.
-fage
-
-// fail : 2014-03-06 Atomic Pipe, LLC
-fail
-
-// fairwinds : 2014-11-13 FairWinds Partners, LLC
-fairwinds
-
-// faith : 2014-11-20 dot Faith Limited
-faith
-
-// family : 2015-04-02 Bitter Galley, LLC
-family
-
-// fan : 2014-03-06
-fan
-
-// fans : 2014-11-07 Asiamix Digital Limited
-fans
-
-// farm : 2013-11-07 Just Maple, LLC
-farm
-
-// fashion : 2014-07-03 Top Level Domain Holdings Limited
-fashion
-
-// fast : 2014-12-18 Amazon EU S.à r.l.
-fast
-
-// feedback : 2013-12-19 Top Level Spectrum, Inc.
-feedback
-
-// ferrero : 2014-12-18 Ferrero Trading Lux S.A.
-ferrero
-
-// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd
-film
-
-// final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
-final
-
-// finance : 2014-03-20 Cotton Cypress, LLC
-finance
-
-// financial : 2014-03-06 Just Cover, LLC
-financial
-
-// firestone : 2014-12-18 Bridgestone Corporation
-firestone
-
-// firmdale : 2014-03-27 Firmdale Holdings Limited
-firmdale
-
-// fish : 2013-12-12 Fox Woods, LLC
-fish
-
-// fishing : 2013-11-21 Top Level Domain Holdings Limited
-fishing
-
-// fit : 2014-11-07 Top Level Domain Holdings Limited
-fit
-
-// fitness : 2014-03-06 Brice Orchard, LLC
-fitness
-
-// flickr : 2015-04-02 Yahoo! Domain Services Inc.
-flickr
-
-// flights : 2013-12-05 Fox Station, LLC
-flights
-
-// florist : 2013-11-07 Half Cypress, LLC
-florist
-
-// flowers : 2014-10-09 Uniregistry, Corp.
-flowers
-
-// flsmidth : 2014-07-24 FLSmidth A/S
-flsmidth
-
-// fly : 2014-05-08 Charleston Road Registry Inc.
-fly
-
-// foo : 2014-01-23 Charleston Road Registry Inc.
-foo
-
-// football : 2014-12-18 Foggy Farms, LLC
-football
-
-// ford : 2014-11-13 Ford Motor Company
-ford
-
-// forex : 2014-12-11 IG Group Holdings PLC
-forex
-
-// forsale : 2014-05-22
-forsale
-
-// forum : 2015-04-02 Fegistry, LLC
-forum
-
-// foundation : 2013-12-05 John Dale, LLC
-foundation
-
-// frl : 2014-05-15 FRLregistry B.V.
-frl
-
-// frogans : 2013-12-19 OP3FT
-frogans
-
-// frontier : 2015-02-05 Frontier Communications Corporation
-frontier
-
-// fund : 2014-03-20 John Castle, LLC
-fund
-
-// furniture : 2014-03-20 Lone Fields, LLC
-furniture
-
-// futbol : 2013-09-20
-futbol
-
-// fyi : 2015-04-02 Silver Tigers, LLC
-fyi
-
-// gal : 2013-11-07 Asociación puntoGAL
-gal
-
-// gallery : 2013-09-13 Sugar House, LLC
-gallery
-
-// gallup : 2015-02-19 Gallup, Inc.
-gallup
-
-// garden : 2014-06-26 Top Level Domain Holdings Limited
-garden
-
-// gbiz : 2014-07-17 Charleston Road Registry Inc.
-gbiz
-
-// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems"
-gdn
-
-// gea : 2014-12-04 GEA Group Aktiengesellschaft
-gea
-
-// gent : 2014-01-23 COMBELL GROUP NV/SA
-gent
-
-// genting : 2015-03-12 Resorts World Inc Pte. Ltd.
-genting
-
-// ggee : 2014-01-09 GMO Internet, Inc.
-ggee
-
-// gift : 2013-10-17 Uniregistry, Corp.
-gift
-
-// gifts : 2014-07-03 Goose Sky, LLC
-gifts
-
-// gives : 2014-03-06 United TLD Holdco Ltd.
-gives
-
-// giving : 2014-11-13 Giving Limited
-giving
-
-// glass : 2013-11-07 Black Cover, LLC
-glass
-
-// gle : 2014-07-24 Charleston Road Registry Inc.
-gle
-
-// global : 2014-04-17 Dot GLOBAL AS
-global
-
-// globo : 2013-12-19 Globo Comunicação e Participações S.A
-globo
-
-// gmail : 2014-05-01 Charleston Road Registry Inc.
-gmail
-
-// gmo : 2014-01-09 GMO Internet, Inc.
-gmo
-
-// gmx : 2014-04-24 1&1 Mail & Media GmbH
-gmx
-
-// gold : 2015-01-22 June Edge, LLC
-gold
-
-// goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
-goldpoint
-
-// golf : 2014-12-18 Lone falls, LLC
-golf
-
-// goo : 2014-12-18 NTT Resonant Inc.
-goo
-
-// goog : 2014-11-20 Charleston Road Registry Inc.
-goog
-
-// google : 2014-07-24 Charleston Road Registry Inc.
-google
-
-// gop : 2014-01-16 Republican State Leadership Committee, Inc.
-gop
-
-// got : 2014-12-18 Amazon EU S.à r.l.
-got
-
-// gotv : 2015-03-12 MultiChoice (Proprietary) Limited
-gotv
-
-// graphics : 2013-09-13 Over Madison, LLC
-graphics
-
-// gratis : 2014-03-20 Pioneer Tigers, LLC
-gratis
-
-// green : 2014-05-08 Afilias Limited
-green
-
-// gripe : 2014-03-06 Corn Sunset, LLC
-gripe
-
-// group : 2014-08-15 Romeo Town, LLC
-group
-
-// gucci : 2014-11-13 Guccio Gucci S.p.a.
-gucci
-
-// guge : 2014-08-28 Charleston Road Registry Inc.
-guge
-
-// guide : 2013-09-13 Snow Moon, LLC
-guide
-
-// guitars : 2013-11-14 Uniregistry, Corp.
-guitars
-
-// guru : 2013-08-27 Pioneer Cypress, LLC
-guru
-
-// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH
-hamburg
-
-// hangout : 2014-11-13 Charleston Road Registry Inc.
-hangout
-
-// haus : 2013-12-05
-haus
-
-// hdfcbank : 2015-02-12 HDFC Bank Limited
-hdfcbank
-
-// health : 2015-02-11 DotHealth, LLC
-health
-
-// healthcare : 2014-06-12 Silver Glen, LLC
-healthcare
-
-// help : 2014-06-26 Uniregistry, Corp.
-help
-
-// helsinki : 2015-02-05 City of Helsinki
-helsinki
-
-// here : 2014-02-06 Charleston Road Registry Inc.
-here
-
-// hermes : 2014-07-10 HERMES INTERNATIONAL
-hermes
-
-// hiphop : 2014-03-06 Uniregistry, Corp.
-hiphop
-
-// hitachi : 2014-10-31 Hitachi, Ltd.
-hitachi
-
-// hiv : 2014-03-13 dotHIV gemeinnuetziger e.V.
-hiv
-
-// hockey : 2015-03-19 Half Willow, LLC
-hockey
-
-// holdings : 2013-08-27 John Madison, LLC
-holdings
-
-// holiday : 2013-11-07 Goose Woods, LLC
-holiday
-
-// homedepot : 2015-04-02 Homer TLC, Inc.
-homedepot
-
-// homes : 2014-01-09 DERHomes, LLC
-homes
-
-// honda : 2014-12-18 Honda Motor Co., Ltd.
-honda
-
-// horse : 2013-11-21 Top Level Domain Holdings Limited
-horse
-
-// host : 2014-04-17 DotHost Inc.
-host
-
-// hosting : 2014-05-29 Uniregistry, Corp.
-hosting
-
-// hoteles : 2015-03-05 Travel Reservations SRL
-hoteles
-
-// hotmail : 2014-12-18 Microsoft Corporation
-hotmail
-
-// house : 2013-11-07 Sugar Park, LLC
-house
-
-// how : 2014-01-23 Charleston Road Registry Inc.
-how
-
-// hsbc : 2014-10-24 HSBC Holdings PLC
-hsbc
-
-// htc : 2015-04-02 HTC corporation
-htc
-
-// ibm : 2014-07-31 International Business Machines Corporation
-ibm
-
-// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited
-icbc
-
-// ice : 2014-10-30 IntercontinentalExchange, Inc.
-ice
-
-// icu : 2015-01-08 One.com A/S
-icu
-
-// ifm : 2014-01-30 ifm electronic gmbh
-ifm
-
-// iinet : 2014-07-03 Connect West Pty. Ltd.
-iinet
-
-// immo : 2014-07-10 Auburn Bloom, LLC
-immo
-
-// immobilien : 2013-11-07 United TLD Holdco Ltd.
-immobilien
-
-// industries : 2013-12-05 Outer House, LLC
-industries
-
-// infiniti : 2014-03-27 NISSAN MOTOR CO., LTD.
-infiniti
-
-// ing : 2014-01-23 Charleston Road Registry Inc.
-ing
-
-// ink : 2013-12-05 Top Level Design, LLC
-ink
-
-// institute : 2013-11-07 Outer Maple, LLC
-institute
-
-// insurance : 2015-02-19 fTLD Registry Services LLC
-insurance
-
-// insure : 2014-03-20 Pioneer Willow, LLC
-insure
-
-// international : 2013-11-07 Wild Way, LLC
-international
-
-// investments : 2014-03-20 Holly Glen, LLC
-investments
-
-// ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A.
-ipiranga
-
-// irish : 2014-08-07 Dot-Irish LLC
-irish
-
-// iselect : 2015-02-11 iSelect Ltd
-iselect
-
-// ist : 2014-08-28 Istanbul Metropolitan Municipality
-ist
-
-// istanbul : 2014-08-28 Istanbul Metropolitan Municipality
-istanbul
-
-// itau : 2014-10-02 Itau Unibanco Holding S.A.
-itau
-
-// iwc : 2014-06-23 Richemont DNS Inc.
-iwc
-
-// jaguar : 2014-11-13 Jaguar Land Rover Ltd
-jaguar
-
-// java : 2014-06-19 Oracle Corporation
-java
-
-// jcb : 2014-11-20 JCB Co., Ltd.
-jcb
-
-// jcp : 2015-04-23 JCP Media, Inc.
-jcp
-
-// jetzt : 2014-01-09 New TLD Company AB
-jetzt
-
-// jewelry : 2015-03-05 Wild Bloom, LLC
-jewelry
-
-// jio : 2015-04-02 Affinity Names, Inc.
-jio
-
-// jlc : 2014-12-04 Richemont DNS Inc.
-jlc
-
-// jll : 2015-04-02 Jones Lang LaSalle Incorporated
-jll
-
-// jmp : 2015-03-26 Matrix IP LLC
-jmp
-
-// joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-joburg
-
-// jot : 2014-12-18 Amazon EU S.à r.l.
-jot
-
-// joy : 2014-12-18 Amazon EU S.à r.l.
-joy
-
-// jpmorgan : 2015-04-30 JPMorgan Chase & Co.
-jpmorgan
-
-// jprs : 2014-09-18 Japan Registry Services Co., Ltd.
-jprs
-
-// juegos : 2014-03-20 Uniregistry, Corp.
-juegos
-
-// kaufen : 2013-11-07 United TLD Holdco Ltd.
-kaufen
-
-// kddi : 2014-09-12 KDDI CORPORATION
-kddi
-
-// kerryhotels : 2015-04-30 Kerry Trading Co. Limited
-kerryhotels
-
-// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited
-kerrylogistics
-
-// kerryproperties : 2015-04-09 Kerry Trading Co. Limited
-kerryproperties
-
-// kfh : 2014-12-04 Kuwait Finance House
-kfh
-
-// kim : 2013-09-23 Afilias Limited
-kim
-
-// kinder : 2014-11-07 Ferrero Trading Lux S.A.
-kinder
-
-// kitchen : 2013-09-20 Just Goodbye, LLC
-kitchen
-
-// kiwi : 2013-09-20 DOT KIWI LIMITED
-kiwi
-
-// koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH
-koeln
-
-// komatsu : 2015-01-08 Komatsu Ltd.
-komatsu
-
-// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft)
-kpmg
-
-// kpn : 2015-01-08 Koninklijke KPN N.V.
-kpn
-
-// krd : 2013-12-05 KRG Department of Information Technology
-krd
-
-// kred : 2013-12-19 KredTLD Pty Ltd
-kred
-
-// kuokgroup : 2015-04-09 Kerry Trading Co. Limited
-kuokgroup
-
-// kyknet : 2015-03-05 Electronic Media Network (Pty) Ltd
-kyknet
-
-// kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen
-kyoto
-
-// lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA
-lacaixa
-
-// lancaster : 2015-02-12 LANCASTER
-lancaster
-
-// land : 2013-09-10 Pine Moon, LLC
-land
-
-// landrover : 2014-11-13 Jaguar Land Rover Ltd
-landrover
-
-// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated
-lasalle
-
-// lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico
-lat
-
-// latrobe : 2014-06-16 La Trobe University
-latrobe
-
-// law : 2015-01-22 Minds + Machines Group Limited
-law
-
-// lawyer : 2014-03-20
-lawyer
-
-// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant")
-lds
-
-// lease : 2014-03-06 Victor Trail, LLC
-lease
-
-// leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc
-leclerc
-
-// legal : 2014-10-16 Blue Falls, LLC
-legal
-
-// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION
-lexus
-
-// lgbt : 2014-05-08 Afilias Limited
-lgbt
-
-// liaison : 2014-10-02 Liaison Technologies, Incorporated
-liaison
-
-// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
-lidl
-
-// life : 2014-02-06 Trixy Oaks, LLC
-life
-
-// lifeinsurance : 2015-01-15 American Council of Life Insurers
-lifeinsurance
-
-// lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc.
-lifestyle
-
-// lighting : 2013-08-27 John McCook, LLC
-lighting
-
-// like : 2014-12-18 Amazon EU S.à r.l.
-like
-
-// limited : 2014-03-06 Big Fest, LLC
-limited
-
-// limo : 2013-10-17 Hidden Frostbite, LLC
-limo
-
-// lincoln : 2014-11-13 Ford Motor Company
-lincoln
-
-// linde : 2014-12-04 Linde Aktiengesellschaft
-linde
-
-// link : 2013-11-14 Uniregistry, Corp.
-link
-
-// live : 2014-12-04 Half Woods, LLC
-live
-
-// lixil : 2015-03-19 LIXIL Group Corporation
-lixil
-
-// loan : 2014-11-20 dot Loan Limited
-loan
-
-// loans : 2014-03-20 June Woods, LLC
-loans
-
-// lol : 2015-01-30 Uniregistry, Corp.
-lol
-
-// london : 2013-11-14 Dot London Domains Limited
-london
-
-// lotte : 2014-11-07 Lotte Holdings Co., Ltd.
-lotte
-
-// lotto : 2014-04-10 Afilias Limited
-lotto
-
-// love : 2014-12-22 Merchant Law Group LLP
-love
-
-// ltd : 2014-09-25 Over Corner, LLC
-ltd
-
-// ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA
-ltda
-
-// lupin : 2014-11-07 LUPIN LIMITED
-lupin
-
-// luxe : 2014-01-09 Top Level Domain Holdings Limited
-luxe
-
-// luxury : 2013-10-17 Luxury Partners, LLC
-luxury
-
-// madrid : 2014-05-01 Comunidad de Madrid
-madrid
-
-// maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF)
-maif
-
-// maison : 2013-12-05 Victor Frostbite, LLC
-maison
-
-// makeup : 2015-01-15 L'Oréal
-makeup
-
-// man : 2014-12-04 MAN SE
-man
-
-// management : 2013-11-07 John Goodbye, LLC
-management
-
-// mango : 2013-10-24 PUNTO FA S.L.
-mango
-
-// market : 2014-03-06
-market
-
-// marketing : 2013-11-07 Fern Pass, LLC
-marketing
-
-// markets : 2014-12-11 IG Group Holdings PLC
-markets
-
-// marriott : 2014-10-09 Marriott Worldwide Corporation
-marriott
-
-// mba : 2015-04-02 Lone Hollow, LLC
-mba
-
-// media : 2014-03-06 Grand Glen, LLC
-media
-
-// meet : 2014-01-16
-meet
-
-// melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation
-melbourne
-
-// meme : 2014-01-30 Charleston Road Registry Inc.
-meme
-
-// memorial : 2014-10-16 Dog Beach, LLC
-memorial
-
-// men : 2015-02-26 Exclusive Registry Limited
-men
-
-// menu : 2013-09-11 Wedding TLD2, LLC
-menu
-
-// meo : 2014-11-07 PT Comunicacoes S.A.
-meo
-
-// miami : 2013-12-19 Top Level Domain Holdings Limited
-miami
-
-// microsoft : 2014-12-18 Microsoft Corporation
-microsoft
-
-// mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
-mini
-
-// mls : 2015-04-23 The Canadian Real Estate Association
-mls
-
-// mma : 2014-11-07 MMA IARD
-mma
-
-// mnet : 2015-03-05 Electronic Media Network (Pty) Ltd
-mnet
-
-// mobily : 2014-12-18 GreenTech Consultancy Company W.L.L.
-mobily
-
-// moda : 2013-11-07 United TLD Holdco Ltd.
-moda
-
-// moe : 2013-11-13 Interlink Co., Ltd.
-moe
-
-// moi : 2014-12-18 Amazon EU S.à r.l.
-moi
-
-// mom : 2015-04-16 Uniregistry, Corp.
-mom
-
-// monash : 2013-09-30 Monash University
-monash
-
-// money : 2014-10-16 Outer McCook, LLC
-money
-
-// montblanc : 2014-06-23 Richemont DNS Inc.
-montblanc
-
-// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant")
-mormon
-
-// mortgage : 2014-03-20
-mortgage
-
-// moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
-moscow
-
-// motorcycles : 2014-01-09 DERMotorcycles, LLC
-motorcycles
-
-// mov : 2014-01-30 Charleston Road Registry Inc.
-mov
-
-// movie : 2015-02-05 New Frostbite, LLC
-movie
-
-// movistar : 2014-10-16 Telefónica S.A.
-movistar
-
-// mtn : 2014-12-04 MTN Dubai Limited
-mtn
-
-// mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation
-mtpc
-
-// mtr : 2015-03-12 MTR Corporation Limited
-mtr
-
-// multichoice : 2015-03-12 MultiChoice (Proprietary) Limited
-multichoice
-
-// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC
-mutual
-
-// mzansimagic : 2015-03-05 Electronic Media Network (Pty) Ltd
-mzansimagic
-
-// nadex : 2014-12-11 IG Group Holdings PLC
-nadex
-
-// nagoya : 2013-10-24 GMO Registry, Inc.
-nagoya
-
-// naspers : 2015-02-12 Intelprop (Proprietary) Limited
-naspers
-
-// natura : 2015-03-12 NATURA COSMÉTICOS S.A.
-natura
-
-// navy : 2014-03-06 United TLD Holdco Ltd.
-navy
-
-// nec : 2015-01-08 NEC Corporation
-nec
-
-// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-netbank
-
-// network : 2013-11-14 Trixy Manor, LLC
-network
-
-// neustar : 2013-12-05 NeuStar, Inc.
-neustar
-
-// new : 2014-01-30 Charleston Road Registry Inc.
-new
-
-// news : 2014-12-18
-news
-
-// nexus : 2014-07-24 Charleston Road Registry Inc.
-nexus
-
-// ngo : 2014-03-06 Public Interest Registry
-ngo
-
-// nhk : 2014-02-13 Japan Broadcasting Corporation (NHK)
-nhk
-
-// nico : 2014-12-04 DWANGO Co., Ltd.
-nico
-
-// ninja : 2013-11-07 United TLD Holdco Ltd.
-ninja
-
-// nissan : 2014-03-27 NISSAN MOTOR CO., LTD.
-nissan
-
-// nokia : 2015-01-08 Nokia Corporation
-nokia
-
-// norton : 2014-12-04 Symantec Corporation
-norton
-
-// nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-nowruz
-
-// nra : 2014-05-22 NRA Holdings Company, INC.
-nra
-
-// nrw : 2013-11-21 Minds + Machines GmbH
-nrw
-
-// ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION
-ntt
-
-// nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications
-nyc
-
-// obi : 2014-09-25 OBI Group Holding SE & Co. KGaA
-obi
-
-// observer : 2015-04-30 Guardian News and Media Limited
-observer
-
-// office : 2015-03-12 Microsoft Corporation
-office
-
-// okinawa : 2013-12-05 BusinessRalliart Inc.
-okinawa
-
-// omega : 2015-01-08 The Swatch Group Ltd
-omega
-
-// one : 2014-11-07 One.com A/S
-one
-
-// ong : 2014-03-06 Public Interest Registry
-ong
-
-// onl : 2013-09-16 I-Registry Ltd.
-onl
-
-// online : 2015-01-15 DotOnline Inc.
-online
-
-// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED
-ooo
-
-// oracle : 2014-06-19 Oracle Corporation
-oracle
-
-// orange : 2015-03-12 Orange Brand Services Limited
-orange
-
-// organic : 2014-03-27 Afilias Limited
-organic
-
-// orientexpress : 2015-02-05 Belmond Ltd.
-orientexpress
-
-// osaka : 2014-09-04 Interlink Co., Ltd.
-osaka
-
-// otsuka : 2013-10-11 Otsuka Holdings Co., Ltd.
-otsuka
-
-// ovh : 2014-01-16 OVH SAS
-ovh
-
-// page : 2014-12-04 Charleston Road Registry Inc.
-page
-
-// pamperedchef : 2015-02-05 The Pampered Chef, Ltd.
-pamperedchef
-
-// panerai : 2014-11-07 Richemont DNS Inc.
-panerai
-
-// paris : 2014-01-30 City of Paris
-paris
-
-// pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-pars
-
-// partners : 2013-12-05 Magic Glen, LLC
-partners
-
-// parts : 2013-12-05 Sea Goodbye, LLC
-parts
-
-// party : 2014-09-11 Blue Sky Registry Limited
-party
-
-// passagens : 2015-03-05 Travel Reservations SRL
-passagens
-
-// payu : 2015-02-12 MIH PayU B.V.
-payu
-
-// pharmacy : 2014-06-19 National Association of Boards of Pharmacy
-pharmacy
-
-// philips : 2014-11-07 Koninklijke Philips N.V.
-philips
-
-// photo : 2013-11-14 Uniregistry, Corp.
-photo
-
-// photography : 2013-09-20 Sugar Glen, LLC
-photography
-
-// photos : 2013-10-17 Sea Corner, LLC
-photos
-
-// physio : 2014-05-01 PhysBiz Pty Ltd
-physio
-
-// piaget : 2014-10-16 Richemont DNS Inc.
-piaget
-
-// pics : 2013-11-14 Uniregistry, Corp.
-pics
-
-// pictet : 2014-06-26 Pictet Europe S.A.
-pictet
-
-// pictures : 2014-03-06 Foggy Sky, LLC
-pictures
-
-// pid : 2015-01-08 Top Level Spectrum, Inc.
-pid
-
-// pin : 2014-12-18 Amazon EU S.à r.l.
-pin
-
-// pink : 2013-10-01 Afilias Limited
-pink
-
-// pizza : 2014-06-26 Foggy Moon, LLC
-pizza
-
-// place : 2014-04-24 Snow Galley, LLC
-place
-
-// play : 2015-03-05 Charleston Road Registry Inc.
-play
-
-// plumbing : 2013-09-10 Spring Tigers, LLC
-plumbing
-
-// plus : 2015-02-05 Sugar Mill, LLC
-plus
-
-// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-pohl
-
-// poker : 2014-07-03 Afilias Domains No. 5 Limited
-poker
-
-// porn : 2014-10-16 ICM Registry PN LLC
-porn
-
-// praxi : 2013-12-05 Praxi S.p.A.
-praxi
-
-// press : 2014-04-03 DotPress Inc.
-press
-
-// prod : 2014-01-23 Charleston Road Registry Inc.
-prod
-
-// productions : 2013-12-05 Magic Birch, LLC
-productions
-
-// prof : 2014-07-24 Charleston Road Registry Inc.
-prof
-
-// promo : 2014-12-18 Play.PROMO Oy
-promo
-
-// properties : 2013-12-05 Big Pass, LLC
-properties
-
-// property : 2014-05-22 Uniregistry, Corp.
-property
-
-// protection : 2015-04-23 Symantec Corporation
-protection
-
-// pub : 2013-12-12 United TLD Holdco Ltd.
-pub
-
-// qpon : 2013-11-14 dotCOOL, Inc.
-qpon
-
-// quebec : 2013-12-19 PointQuébec Inc
-quebec
-
-// quest : 2015-03-26 Quest ION Limited
-quest
-
-// racing : 2014-12-04 Premier Registry Limited
-racing
-
-// read : 2014-12-18 Amazon EU S.à r.l.
-read
-
-// realtor : 2014-05-29 Real Estate Domains LLC
-realtor
-
-// realty : 2015-03-19 Fegistry, LLC
-realty
-
-// recipes : 2013-10-17 Grand Island, LLC
-recipes
-
-// red : 2013-11-07 Afilias Limited
-red
-
-// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd.
-redstone
-
-// redumbrella : 2015-03-26 Travelers TLD, LLC
-redumbrella
-
-// rehab : 2014-03-06 United TLD Holdco Ltd.
-rehab
-
-// reise : 2014-03-13 dotreise GmbH
-reise
-
-// reisen : 2014-03-06 New Cypress, LLC
-reisen
-
-// reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc.
-reit
-
-// reliance : 2015-04-02 Reliance Industries Limited
-reliance
-
-// ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd.
-ren
-
-// rent : 2014-12-04 DERRent, LLC
-rent
-
-// rentals : 2013-12-05 Big Hollow,LLC
-rentals
-
-// repair : 2013-11-07 Lone Sunset, LLC
-repair
-
-// report : 2013-12-05 Binky Glen, LLC
-report
-
-// republican : 2014-03-20 United TLD Holdco Ltd.
-republican
-
-// rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
-rest
-
-// restaurant : 2014-07-03 Snow Avenue, LLC
-restaurant
-
-// review : 2014-11-20 dot Review Limited
-review
-
-// reviews : 2013-09-13
-reviews
-
-// rich : 2013-11-21 I-Registry Ltd.
-rich
-
-// ricoh : 2014-11-20 Ricoh Company, Ltd.
-ricoh
-
-// ril : 2015-04-02 Reliance Industries Limited
-ril
-
-// rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO
-rio
-
-// rip : 2014-07-10 United TLD Holdco Ltd.
-rip
-
-// rocher : 2014-12-18 Ferrero Trading Lux S.A.
-rocher
-
-// rocks : 2013-11-14
-rocks
-
-// rodeo : 2013-12-19 Top Level Domain Holdings Limited
-rodeo
-
-// room : 2014-12-18 Amazon EU S.à r.l.
-room
-
-// rsvp : 2014-05-08 Charleston Road Registry Inc.
-rsvp
-
-// ruhr : 2013-10-02 regiodot GmbH & Co. KG
-ruhr
-
-// run : 2015-03-19 Snow Park, LLC
-run
-
-// rwe : 2015-04-02 RWE AG
-rwe
-
-// ryukyu : 2014-01-09 BusinessRalliart Inc.
-ryukyu
-
-// saarland : 2013-12-12 dotSaarland GmbH
-saarland
-
-// safe : 2014-12-18 Amazon EU S.à r.l.
-safe
-
-// safety : 2015-01-08 Safety Registry Services, LLC.
-safety
-
-// sakura : 2014-12-18 SAKURA Internet Inc.
-sakura
-
-// sale : 2014-10-16
-sale
-
-// salon : 2014-12-11 Outer Orchard, LLC
-salon
-
-// samsung : 2014-04-03 SAMSUNG SDS CO., LTD
-samsung
-
-// sandvik : 2014-11-13 Sandvik AB
-sandvik
-
-// sandvikcoromant : 2014-11-07 Sandvik AB
-sandvikcoromant
-
-// sanofi : 2014-10-09 Sanofi
-sanofi
-
-// sap : 2014-03-27 SAP AG
-sap
-
-// sapo : 2014-11-07 PT Comunicacoes S.A.
-sapo
-
-// sarl : 2014-07-03 Delta Orchard, LLC
-sarl
-
-// sas : 2015-04-02 Research IP LLC
-sas
-
-// saxo : 2014-10-31 Saxo Bank A/S
-saxo
-
-// sbi : 2015-03-12 STATE BANK OF INDIA
-sbi
-
-// sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION
-sbs
-
-// sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ)
-sca
-
-// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB")
-scb
-
-// schmidt : 2014-04-03 SALM S.A.S.
-schmidt
-
-// scholarships : 2014-04-24 Scholarships.com, LLC
-scholarships
-
-// school : 2014-12-18 Little Galley, LLC
-school
-
-// schule : 2014-03-06 Outer Moon, LLC
-schule
-
-// schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
-schwarz
-
-// science : 2014-09-11 dot Science Limited
-science
-
-// scor : 2014-10-31 SCOR SE
-scor
-
-// scot : 2014-01-23 Dot Scot Registry Limited
-scot
-
-// seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal)
-seat
-
-// seek : 2014-12-04 Seek Limited
-seek
-
-// sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A.
-sener
-
-// services : 2014-02-27 Fox Castle, LLC
-services
-
-// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG
-sew
-
-// sex : 2014-11-13 ICM Registry SX LLC
-sex
-
-// sexy : 2013-09-11 Uniregistry, Corp.
-sexy
-
-// sharp : 2014-05-01 Sharp Corporation
-sharp
-
-// shaw : 2015-04-23 Shaw Cablesystems G.P.
-shaw
-
-// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-shia
-
-// shiksha : 2013-11-14 Afilias Limited
-shiksha
-
-// shoes : 2013-10-02 Binky Galley, LLC
-shoes
-
-// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-shouji
-
-// show : 2015-03-05 Snow Beach, LLC
-show
-
-// shriram : 2014-01-23 Shriram Capital Ltd.
-shriram
-
-// sina : 2015-03-12 Sina Corporation
-sina
-
-// singles : 2013-08-27 Fern Madison, LLC
-singles
-
-// site : 2015-01-15 DotSite Inc.
-site
-
-// ski : 2015-04-09 STARTING DOT LIMITED
-ski
-
-// skin : 2015-01-15 L'Oréal
-skin
-
-// sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch
-sky
-
-// skype : 2014-12-18 Microsoft Corporation
-skype
-
-// smile : 2014-12-18 Amazon EU S.à r.l.
-smile
-
-// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F
-sncf
-
-// soccer : 2015-03-26 Foggy Shadow, LLC
-soccer
-
-// social : 2013-11-07 United TLD Holdco Ltd.
-social
-
-// software : 2014-03-20
-software
-
-// sohu : 2013-12-19 Sohu.com Limited
-sohu
-
-// solar : 2013-11-07 Ruby Town, LLC
-solar
-
-// solutions : 2013-11-07 Silver Cover, LLC
-solutions
-
-// song : 2015-02-26 Amazon EU S.à r.l.
-song
-
-// sony : 2015-01-08 Sony Corporation
-sony
-
-// soy : 2014-01-23 Charleston Road Registry Inc.
-soy
-
-// space : 2014-04-03 DotSpace Inc.
-space
-
-// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG
-spiegel
-
-// spot : 2015-02-26 Amazon EU S.à r.l.
-spot
-
-// spreadbetting : 2014-12-11 IG Group Holdings PLC
-spreadbetting
-
-// stada : 2014-11-13 STADA Arzneimittel AG
-stada
-
-// star : 2015-01-08 Star India Private Limited
-star
-
-// starhub : 2015-02-05 StarHub Limited
-starhub
-
-// statebank : 2015-03-12 STATE BANK OF INDIA
-statebank
-
-// statoil : 2014-12-04 Statoil ASA
-statoil
-
-// stc : 2014-10-09 Saudi Telecom Company
-stc
-
-// stcgroup : 2014-10-09 Saudi Telecom Company
-stcgroup
-
-// stockholm : 2014-12-18 Stockholms kommun
-stockholm
-
-// storage : 2014-12-22 Self Storage Company LLC
-storage
-
-// store : 2015-04-09 DotStore Inc.
-store
-
-// studio : 2015-02-11 Spring Goodbye, LLC
-studio
-
-// study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD
-study
-
-// style : 2014-12-04 Binky Moon, LLC
-style
-
-// sucks : 2014-12-22 Vox Populi Registry Inc.
-sucks
-
-// supersport : 2015-03-05 SuperSport International Holdings Proprietary Limited
-supersport
-
-// supplies : 2013-12-19 Atomic Fields, LLC
-supplies
-
-// supply : 2013-12-19 Half Falls, LLC
-supply
-
-// support : 2013-10-24 Grand Orchard, LLC
-support
-
-// surf : 2014-01-09 Top Level Domain Holdings Limited
-surf
-
-// surgery : 2014-03-20 Tin Avenue, LLC
-surgery
-
-// suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION
-suzuki
-
-// swatch : 2015-01-08 The Swatch Group Ltd
-swatch
-
-// swiss : 2014-10-16 Swiss Confederation
-swiss
-
-// sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet
-sydney
-
-// symantec : 2014-12-04 Symantec Corporation
-symantec
-
-// systems : 2013-11-07 Dash Cypress, LLC
-systems
-
-// tab : 2014-12-04 Tabcorp Holdings Limited
-tab
-
-// taipei : 2014-07-10 Taipei City Government
-taipei
-
-// talk : 2015-04-09 Amazon EU S.à r.l.
-talk
-
-// taobao : 2015-01-15 Alibaba Group Holding Limited
-taobao
-
-// tatamotors : 2015-03-12 Tata Motors Ltd
-tatamotors
-
-// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"
-tatar
-
-// tattoo : 2013-08-30 Uniregistry, Corp.
-tattoo
-
-// tax : 2014-03-20 Storm Orchard, LLC
-tax
-
-// taxi : 2015-03-19 Pine Falls, LLC
-taxi
-
-// tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-tci
-
-// team : 2015-03-05 Atomic Lake, LLC
-team
-
-// tech : 2015-01-30 Dot Tech LLC
-tech
-
-// technology : 2013-09-13 Auburn Falls
-technology
-
-// telecity : 2015-02-19 TelecityGroup International Limited
-telecity
-
-// telefonica : 2014-10-16 Telefónica S.A.
-telefonica
-
-// temasek : 2014-08-07 Temasek Holdings (Private) Limited
-temasek
-
-// tennis : 2014-12-04 Cotton Bloom, LLC
-tennis
-
-// thd : 2015-04-02 Homer TLC, Inc.
-thd
-
-// theater : 2015-03-19 Blue Tigers, LLC
-theater
-
-// theguardian : 2015-04-30 Guardian News and Media Limited
-theguardian
-
-// tickets : 2015-02-05 Accent Media Limited
-tickets
-
-// tienda : 2013-11-14 Victor Manor, LLC
-tienda
-
-// tiffany : 2015-01-30 Tiffany and Company
-tiffany
-
-// tips : 2013-09-20 Corn Willow, LLC
-tips
-
-// tires : 2014-11-07 Dog Edge, LLC
-tires
-
-// tirol : 2014-04-24 punkt Tirol GmbH
-tirol
-
-// tmall : 2015-01-15 Alibaba Group Holding Limited
-tmall
-
-// today : 2013-09-20 Pearl Woods, LLC
-today
-
-// tokyo : 2013-11-13 GMO Registry, Inc.
-tokyo
-
-// tools : 2013-11-21 Pioneer North, LLC
-tools
-
-// top : 2014-03-20 Jiangsu Bangning Science & Technology Co.,Ltd.
-top
-
-// toray : 2014-12-18 Toray Industries, Inc.
-toray
-
-// toshiba : 2014-04-10 TOSHIBA Corporation
-toshiba
-
-// tours : 2015-01-22 Sugar Station, LLC
-tours
-
-// town : 2014-03-06 Koko Moon, LLC
-town
-
-// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION
-toyota
-
-// toys : 2014-03-06 Pioneer Orchard, LLC
-toys
-
-// trade : 2014-01-23 Elite Registry Limited
-trade
-
-// trading : 2014-12-11 IG Group Holdings PLC
-trading
-
-// training : 2013-11-07 Wild Willow, LLC
-training
-
-// travelers : 2015-03-26 Travelers TLD, LLC
-travelers
-
-// travelersinsurance : 2015-03-26 Travelers TLD, LLC
-travelersinsurance
-
-// trust : 2014-10-16
-trust
-
-// trv : 2015-03-26 Travelers TLD, LLC
-trv
-
-// tui : 2014-07-03 TUI AG
-tui
-
-// tunes : 2015-02-26 Amazon EU S.à r.l.
-tunes
-
-// tushu : 2014-12-18 Amazon EU S.à r.l.
-tushu
-
-// tvs : 2015-02-19 T V SUNDRAM IYENGAR & SONS LIMITED
-tvs
-
-// ubs : 2014-12-11 UBS AG
-ubs
-
-// university : 2014-03-06 Little Station, LLC
-university
-
-// uno : 2013-09-11 Dot Latin LLC
-uno
-
-// uol : 2014-05-01 UBN INTERNET LTDA.
-uol
-
-// vacations : 2013-12-05 Atomic Tigers, LLC
-vacations
-
-// vana : 2014-12-11 Lifestyle Domain Holdings, Inc.
-vana
-
-// vegas : 2014-01-16 Dot Vegas, Inc.
-vegas
-
-// ventures : 2013-08-27 Binky Lake, LLC
-ventures
-
-// versicherung : 2014-03-20 dotversicherung-registry GmbH
-versicherung
-
-// vet : 2014-03-06
-vet
-
-// viajes : 2013-10-17 Black Madison, LLC
-viajes
-
-// video : 2014-10-16
-video
-
-// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd.
-viking
-
-// villas : 2013-12-05 New Sky, LLC
-villas
-
-// vip : 2015-01-22 Minds + Machines Group Limited
-vip
-
-// virgin : 2014-09-25 Virgin Enterprises Limited
-virgin
-
-// vision : 2013-12-05 Koko Station, LLC
-vision
-
-// vista : 2014-09-18 Vistaprint Limited
-vista
-
-// vistaprint : 2014-09-18 Vistaprint Limited
-vistaprint
-
-// viva : 2014-11-07 Saudi Telecom Company
-viva
-
-// vlaanderen : 2014-02-06 DNS.be vzw
-vlaanderen
-
-// vodka : 2013-12-19 Top Level Domain Holdings Limited
-vodka
-
-// vote : 2013-11-21 Monolith Registry LLC
-vote
-
-// voting : 2013-11-13 Valuetainment Corp.
-voting
-
-// voto : 2013-11-21 Monolith Registry LLC
-voto
-
-// voyage : 2013-08-27 Ruby House, LLC
-voyage
-
-// vuelos : 2015-03-05 Travel Reservations SRL
-vuelos
-
-// wales : 2014-05-08 Nominet UK
-wales
-
-// walter : 2014-11-13 Sandvik AB
-walter
-
-// wang : 2013-10-24 Zodiac Leo Limited
-wang
-
-// wanggou : 2014-12-18 Amazon EU S.à r.l.
-wanggou
-
-// watch : 2013-11-14 Sand Shadow, LLC
-watch
-
-// watches : 2014-12-22 Richemont DNS Inc.
-watches
-
-// weather : 2015-01-08 The Weather Channel, LLC
-weather
-
-// weatherchannel : 2015-03-12 The Weather Channel, LLC
-weatherchannel
-
-// webcam : 2014-01-23 dot Webcam Limited
-webcam
-
-// website : 2014-04-03 DotWebsite Inc.
-website
-
-// wed : 2013-10-01 Atgron, Inc.
-wed
-
-// wedding : 2014-04-24 Top Level Domain Holdings Limited
-wedding
-
-// weibo : 2015-03-05 Sina Corporation
-weibo
-
-// weir : 2015-01-29 Weir Group IP Limited
-weir
-
-// whoswho : 2014-02-20 Who's Who Registry
-whoswho
-
-// wien : 2013-10-28 punkt.wien GmbH
-wien
-
-// wiki : 2013-11-07 Top Level Design, LLC
-wiki
-
-// williamhill : 2014-03-13 William Hill Organization Limited
-williamhill
-
-// win : 2014-11-20 First Registry Limited
-win
-
-// windows : 2014-12-18 Microsoft Corporation
-windows
-
-// wme : 2014-02-13 William Morris Endeavor Entertainment, LLC
-wme
-
-// work : 2013-12-19 Top Level Domain Holdings Limited
-work
-
-// works : 2013-11-14 Little Dynamite, LLC
-works
-
-// world : 2014-06-12 Bitter Fields, LLC
-world
-
-// wtc : 2013-12-19 World Trade Centers Association, Inc.
-wtc
-
-// wtf : 2014-03-06 Hidden Way, LLC
-wtf
-
-// xbox : 2014-12-18 Microsoft Corporation
-xbox
-
-// xerox : 2014-10-24 Xerox DNHC LLC
-xerox
-
-// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-xihuan
-
-// xin : 2014-12-11 Elegant Leader Limited
-xin
-
-// xn--11b4c3d : 2015-01-15 VeriSign Sarl
-कॉम
-
-// xn--1ck2e1b : 2015-02-26 Amazon EU S.à r.l.
-セール
-
-// xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd.
-佛山
-
-// xn--30rr7y : 2014-06-12 Excellent First Limited
-慈善
-
-// xn--3bst00m : 2013-09-13 Eagle Horizon Limited
-集团
-
-// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED
-在线
-
-// xn--3pxu8k : 2015-01-15 VeriSign Sarl
-点看
-
-// xn--42c2d9a : 2015-01-15 VeriSign Sarl
-คอม
-
-// xn--45q11c : 2013-11-21 Zodiac Scorpio Limited
-八卦
-
-// xn--4gbrim : 2013-10-04 Suhub Electronic Establishment
-موقع
-
-// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center
-公益
-
-// xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
-公司
-
-// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited
-网站
-
-// xn--6frz82g : 2013-09-23 Afilias Limited
-移动
-
-// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited
-我爱你
-
-// xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
-москва
-
-// xn--80asehdb : 2013-07-14 CORE Association
-онлайн
-
-// xn--80aswg : 2013-07-14 CORE Association
-сайт
-
-// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited
-联通
-
-// xn--9dbq2a : 2015-01-15 VeriSign Sarl
-קום
-
-// xn--9et52u : 2014-06-12 RISE VICTORY LIMITED
-时尚
-
-// xn--9krt00a : 2015-03-12 Sina Corporation
-微博
-
-// xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited
-淡马锡
-
-// xn--bck1b9a5dre4c : 2015-02-26 Amazon EU S.à r.l.
-ファッション
-
-// xn--c1avg : 2013-11-14 Public Interest Registry
-орг
-
-// xn--c2br7g : 2015-01-15 VeriSign Sarl
-नेट
-
-// xn--cck2b3b : 2015-02-26 Amazon EU S.à r.l.
-ストア
-
-// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD
-삼성
-
-// xn--czr694b : 2014-01-16 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY.HONGKONG LIMITED
-商标
-
-// xn--czrs0t : 2013-12-19 Wild Island, LLC
-商店
-
-// xn--czru2d : 2013-11-21 Zodiac Capricorn Limited
-商城
-
-// xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet”
-дети
-
-// xn--eckvdtc9d : 2014-12-18 Amazon EU S.à r.l.
-ポイント
-
-// xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社
-新闻
-
-// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited
-工行
-
-// xn--fct429k : 2015-04-09 Amazon EU S.à r.l.
-家電
-
-// xn--fhbei : 2015-01-15 VeriSign Sarl
-كوم
-
-// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED
-中文网
-
-// xn--fiq64b : 2013-10-14 CITIC Group Corporation
-中信
-
-// xn--fjq720a : 2014-05-22 Will Bloom, LLC
-娱乐
-
-// xn--flw351e : 2014-07-31 Charleston Road Registry Inc.
-谷歌
-
-// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited
-购物
-
-// xn--gckr3f0f : 2015-02-26 Amazon EU S.à r.l.
-クラウド
-
-// xn--hxt814e : 2014-05-15 Zodiac Libra Limited
-网店
-
-// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry
-संगठन
-
-// xn--imr513n : 2014-12-11 HU YI GLOBAL INFORMATION RESOURCES (HOLDING) COMPANY. HONGKONG LIMITED
-餐厅
-
-// xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
-网络
-
-// xn--j1aef : 2015-01-15 VeriSign Sarl
-ком
-
-// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation
-诺基亚
-
-// xn--jvr189m : 2015-02-26 Amazon EU S.à r.l.
-食品
-
-// xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V.
-飞利浦
-
-// xn--kpu716f : 2014-12-22 Richemont DNS Inc.
-手表
-
-// xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd
-手机
-
-// xn--mgba3a3ejt : 2014-11-20 Aramco Services Company
-ارامكو
-
-// xn--mgbab2bd : 2013-10-31 CORE Association
-بازار
-
-// xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L.
-موبايلي
-
-// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-همراه
-
-// xn--mk1bu44c : 2015-01-15 VeriSign Sarl
-닷컴
-
-// xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd.
-政府
-
-// xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd.
-شبكة
-
-// xn--ngbe9e0a : 2014-12-04 Kuwait Finance House
-بيتك
-
-// xn--nqv7f : 2013-11-14 Public Interest Registry
-机构
-
-// xn--nqv7fs00ema : 2013-11-14 Public Interest Registry
-组织机构
-
-// xn--nyqy26a : 2014-11-07 Stable Tone Limited
-健康
-
-// xn--p1acf : 2013-12-12 Rusnames Limited
-рус
-
-// xn--pbt977c : 2014-12-22 Richemont DNS Inc.
-珠宝
-
-// xn--pssy2u : 2015-01-15 VeriSign Sarl
-大拿
-
-// xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc.
-みんな
-
-// xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc.
-グーグル
-
-// xn--rhqv96g : 2013-09-11 Stable Tone Limited
-世界
-
-// xn--rovu88b : 2015-02-26 Amazon EU S.à r.l.
-書籍
-
-// xn--ses554g : 2014-01-16
-网址
-
-// xn--t60b56a : 2015-01-15 VeriSign Sarl
-닷넷
-
-// xn--tckwe : 2015-01-15 VeriSign Sarl
-コム
-
-// xn--unup4y : 2013-07-14 Spring Fields, LLC
-游戏
-
-// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-vermögensberater
-
-// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-vermögensberatung
-
-// xn--vhquv : 2013-08-27 Dash McCook, LLC
-企业
-
-// xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd.
-信息
-
-// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited
-嘉里大酒店
-
-// xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd.
-广东
-
-// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center
-政务
-
-// xyz : 2013-12-05 XYZ.COM LLC
-xyz
-
-// yachts : 2014-01-09 DERYachts, LLC
-yachts
-
-// yahoo : 2015-04-02 Yahoo! Domain Services Inc.
-yahoo
-
-// yamaxun : 2014-12-18 Amazon EU S.à r.l.
-yamaxun
-
-// yandex : 2014-04-10 YANDEX, LLC
-yandex
-
-// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
-yodobashi
-
-// yoga : 2014-05-29 Top Level Domain Holdings Limited
-yoga
-
-// yokohama : 2013-12-12 GMO Registry, Inc.
-yokohama
-
-// you : 2015-04-09 Amazon EU S.à r.l.
-you
-
-// youtube : 2014-05-01 Charleston Road Registry Inc.
-youtube
-
-// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-yun
-
-// zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.)
-zara
-
-// zero : 2014-12-18 Amazon EU S.à r.l.
-zero
-
-// zip : 2014-05-08 Charleston Road Registry Inc.
-zip
-
-// zone : 2013-11-14 Outer Falls, LLC
-zone
-
-// zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich)
-zuerich
-
-
-// ===END ICANN DOMAINS===
-// ===BEGIN PRIVATE DOMAINS===
-// (Note: these are in alphabetical order by company name)
-
-// Amazon CloudFront : https://aws.amazon.com/cloudfront/
-// Submitted by Donavan Miller 2013-03-22
-cloudfront.net
-
-// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/
-// Submitted by Osman Surkatty 2014-12-16
-ap-northeast-1.compute.amazonaws.com
-ap-southeast-1.compute.amazonaws.com
-ap-southeast-2.compute.amazonaws.com
-cn-north-1.compute.amazonaws.cn
-compute.amazonaws.cn
-compute.amazonaws.com
-compute-1.amazonaws.com
-eu-west-1.compute.amazonaws.com
-eu-central-1.compute.amazonaws.com
-sa-east-1.compute.amazonaws.com
-us-east-1.amazonaws.com
-us-gov-west-1.compute.amazonaws.com
-us-west-1.compute.amazonaws.com
-us-west-2.compute.amazonaws.com
-z-1.compute-1.amazonaws.com
-z-2.compute-1.amazonaws.com
-
-// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/
-// Submitted by Adam Stein 2013-04-02
-elasticbeanstalk.com
-
-// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/
-// Submitted by Scott Vidmar 2013-03-27
-elb.amazonaws.com
-
-// Amazon S3 : https://aws.amazon.com/s3/
-// Submitted by Courtney Eckhardt 2013-03-22
-s3.amazonaws.com
-s3-us-west-2.amazonaws.com
-s3-us-west-1.amazonaws.com
-s3-eu-west-1.amazonaws.com
-s3-ap-southeast-1.amazonaws.com
-s3-ap-southeast-2.amazonaws.com
-s3-ap-northeast-1.amazonaws.com
-s3-sa-east-1.amazonaws.com
-s3-us-gov-west-1.amazonaws.com
-s3-fips-us-gov-west-1.amazonaws.com
-s3-website-us-east-1.amazonaws.com
-s3-website-us-west-2.amazonaws.com
-s3-website-us-west-1.amazonaws.com
-s3-website-eu-west-1.amazonaws.com
-s3-website-ap-southeast-1.amazonaws.com
-s3-website-ap-southeast-2.amazonaws.com
-s3-website-ap-northeast-1.amazonaws.com
-s3-website-sa-east-1.amazonaws.com
-s3-website-us-gov-west-1.amazonaws.com
-
-// BetaInABox
-// Submitted by adrian@betainabox.com 2012-09-13
-betainabox.com
-
-// CentralNic : http://www.centralnic.com/names/domains
-// Submitted by registry 2012-09-27
-ae.org
-ar.com
-br.com
-cn.com
-com.de
-com.se
-de.com
-eu.com
-gb.com
-gb.net
-hu.com
-hu.net
-jp.net
-jpn.com
-kr.com
-mex.com
-no.com
-qc.com
-ru.com
-sa.com
-se.com
-se.net
-uk.com
-uk.net
-us.com
-uy.com
-za.bz
-za.com
-
-// Africa.com Web Solutions Ltd : https://registry.africa.com
-// Submitted by Gavin Brown 2014-02-04
-africa.com
-
-// iDOT Services Limited : http://www.domain.gr.com
-// Submitted by Gavin Brown 2014-02-04
-gr.com
-
-// Radix FZC : http://domains.in.net
-// Submitted by Gavin Brown 2014-02-04
-in.net
-
-// US REGISTRY LLC : http://us.org
-// Submitted by Gavin Brown 2014-02-04
-us.org
-
-// co.com Registry, LLC : https://registry.co.com
-// Submitted by Gavin Brown 2014-02-04
-co.com
-
-// c.la : http://www.c.la/
-c.la
-
-// cloudControl : https://www.cloudcontrol.com/
-// Submitted by Tobias Wilken 2013-07-23
-cloudcontrolled.com
-cloudcontrolapp.com
-
-// co.ca : http://registry.co.ca/
-co.ca
-
-// CoDNS B.V.
-co.nl
-co.no
-
-// Commerce Guys, SAS
-// Submitted by Damien Tournoud 2015-01-22
-*.platform.sh
-
-// Cupcake : https://cupcake.io/
-// Submitted by Jonathan Rudenberg 2013-10-08
-cupcake.is
-
-// DreamHost : http://www.dreamhost.com/
-// Submitted by Andrew Farmer 2012-10-02
-dreamhosters.com
-
-// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/
-dyndns-at-home.com
-dyndns-at-work.com
-dyndns-blog.com
-dyndns-free.com
-dyndns-home.com
-dyndns-ip.com
-dyndns-mail.com
-dyndns-office.com
-dyndns-pics.com
-dyndns-remote.com
-dyndns-server.com
-dyndns-web.com
-dyndns-wiki.com
-dyndns-work.com
-dyndns.biz
-dyndns.info
-dyndns.org
-dyndns.tv
-at-band-camp.net
-ath.cx
-barrel-of-knowledge.info
-barrell-of-knowledge.info
-better-than.tv
-blogdns.com
-blogdns.net
-blogdns.org
-blogsite.org
-boldlygoingnowhere.org
-broke-it.net
-buyshouses.net
-cechire.com
-dnsalias.com
-dnsalias.net
-dnsalias.org
-dnsdojo.com
-dnsdojo.net
-dnsdojo.org
-does-it.net
-doesntexist.com
-doesntexist.org
-dontexist.com
-dontexist.net
-dontexist.org
-doomdns.com
-doomdns.org
-dvrdns.org
-dyn-o-saur.com
-dynalias.com
-dynalias.net
-dynalias.org
-dynathome.net
-dyndns.ws
-endofinternet.net
-endofinternet.org
-endoftheinternet.org
-est-a-la-maison.com
-est-a-la-masion.com
-est-le-patron.com
-est-mon-blogueur.com
-for-better.biz
-for-more.biz
-for-our.info
-for-some.biz
-for-the.biz
-forgot.her.name
-forgot.his.name
-from-ak.com
-from-al.com
-from-ar.com
-from-az.net
-from-ca.com
-from-co.net
-from-ct.com
-from-dc.com
-from-de.com
-from-fl.com
-from-ga.com
-from-hi.com
-from-ia.com
-from-id.com
-from-il.com
-from-in.com
-from-ks.com
-from-ky.com
-from-la.net
-from-ma.com
-from-md.com
-from-me.org
-from-mi.com
-from-mn.com
-from-mo.com
-from-ms.com
-from-mt.com
-from-nc.com
-from-nd.com
-from-ne.com
-from-nh.com
-from-nj.com
-from-nm.com
-from-nv.com
-from-ny.net
-from-oh.com
-from-ok.com
-from-or.com
-from-pa.com
-from-pr.com
-from-ri.com
-from-sc.com
-from-sd.com
-from-tn.com
-from-tx.com
-from-ut.com
-from-va.com
-from-vt.com
-from-wa.com
-from-wi.com
-from-wv.com
-from-wy.com
-ftpaccess.cc
-fuettertdasnetz.de
-game-host.org
-game-server.cc
-getmyip.com
-gets-it.net
-go.dyndns.org
-gotdns.com
-gotdns.org
-groks-the.info
-groks-this.info
-ham-radio-op.net
-here-for-more.info
-hobby-site.com
-hobby-site.org
-home.dyndns.org
-homedns.org
-homeftp.net
-homeftp.org
-homeip.net
-homelinux.com
-homelinux.net
-homelinux.org
-homeunix.com
-homeunix.net
-homeunix.org
-iamallama.com
-in-the-band.net
-is-a-anarchist.com
-is-a-blogger.com
-is-a-bookkeeper.com
-is-a-bruinsfan.org
-is-a-bulls-fan.com
-is-a-candidate.org
-is-a-caterer.com
-is-a-celticsfan.org
-is-a-chef.com
-is-a-chef.net
-is-a-chef.org
-is-a-conservative.com
-is-a-cpa.com
-is-a-cubicle-slave.com
-is-a-democrat.com
-is-a-designer.com
-is-a-doctor.com
-is-a-financialadvisor.com
-is-a-geek.com
-is-a-geek.net
-is-a-geek.org
-is-a-green.com
-is-a-guru.com
-is-a-hard-worker.com
-is-a-hunter.com
-is-a-knight.org
-is-a-landscaper.com
-is-a-lawyer.com
-is-a-liberal.com
-is-a-libertarian.com
-is-a-linux-user.org
-is-a-llama.com
-is-a-musician.com
-is-a-nascarfan.com
-is-a-nurse.com
-is-a-painter.com
-is-a-patsfan.org
-is-a-personaltrainer.com
-is-a-photographer.com
-is-a-player.com
-is-a-republican.com
-is-a-rockstar.com
-is-a-socialist.com
-is-a-soxfan.org
-is-a-student.com
-is-a-teacher.com
-is-a-techie.com
-is-a-therapist.com
-is-an-accountant.com
-is-an-actor.com
-is-an-actress.com
-is-an-anarchist.com
-is-an-artist.com
-is-an-engineer.com
-is-an-entertainer.com
-is-by.us
-is-certified.com
-is-found.org
-is-gone.com
-is-into-anime.com
-is-into-cars.com
-is-into-cartoons.com
-is-into-games.com
-is-leet.com
-is-lost.org
-is-not-certified.com
-is-saved.org
-is-slick.com
-is-uberleet.com
-is-very-bad.org
-is-very-evil.org
-is-very-good.org
-is-very-nice.org
-is-very-sweet.org
-is-with-theband.com
-isa-geek.com
-isa-geek.net
-isa-geek.org
-isa-hockeynut.com
-issmarterthanyou.com
-isteingeek.de
-istmein.de
-kicks-ass.net
-kicks-ass.org
-knowsitall.info
-land-4-sale.us
-lebtimnetz.de
-leitungsen.de
-likes-pie.com
-likescandy.com
-merseine.nu
-mine.nu
-misconfused.org
-mypets.ws
-myphotos.cc
-neat-url.com
-office-on-the.net
-on-the-web.tv
-podzone.net
-podzone.org
-readmyblog.org
-saves-the-whales.com
-scrapper-site.net
-scrapping.cc
-selfip.biz
-selfip.com
-selfip.info
-selfip.net
-selfip.org
-sells-for-less.com
-sells-for-u.com
-sells-it.net
-sellsyourhome.org
-servebbs.com
-servebbs.net
-servebbs.org
-serveftp.net
-serveftp.org
-servegame.org
-shacknet.nu
-simple-url.com
-space-to-rent.com
-stuff-4-sale.org
-stuff-4-sale.us
-teaches-yoga.com
-thruhere.net
-traeumtgerade.de
-webhop.biz
-webhop.info
-webhop.net
-webhop.org
-worse-than.tv
-writesthisblog.com
-
-// EU.org https://eu.org/
-// Submitted by Pierre Beyssac 2015-04-17
-
-eu.org
-al.eu.org
-asso.eu.org
-at.eu.org
-au.eu.org
-be.eu.org
-bg.eu.org
-ca.eu.org
-cd.eu.org
-ch.eu.org
-cn.eu.org
-cy.eu.org
-cz.eu.org
-de.eu.org
-dk.eu.org
-edu.eu.org
-ee.eu.org
-es.eu.org
-fi.eu.org
-fr.eu.org
-gr.eu.org
-hr.eu.org
-hu.eu.org
-ie.eu.org
-il.eu.org
-in.eu.org
-int.eu.org
-is.eu.org
-it.eu.org
-jp.eu.org
-kr.eu.org
-lt.eu.org
-lu.eu.org
-lv.eu.org
-mc.eu.org
-me.eu.org
-mk.eu.org
-mt.eu.org
-my.eu.org
-net.eu.org
-ng.eu.org
-nl.eu.org
-no.eu.org
-nz.eu.org
-paris.eu.org
-pl.eu.org
-pt.eu.org
-q-a.eu.org
-ro.eu.org
-ru.eu.org
-se.eu.org
-si.eu.org
-sk.eu.org
-tr.eu.org
-uk.eu.org
-us.eu.org
-
-// Fastly Inc. http://www.fastly.com/
-// Submitted by Vladimir Vuksan 2013-05-31
-a.ssl.fastly.net
-b.ssl.fastly.net
-global.ssl.fastly.net
-a.prod.fastly.net
-global.prod.fastly.net
-
-// Firebase, Inc.
-// Submitted by Chris Raynor 2014-01-21
-firebaseapp.com
-
-// Flynn : https://flynn.io
-// Submitted by Jonathan Rudenberg 2014-07-12
-flynnhub.com
-
-// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains
-// Submitted by David Illsley 2014-08-28
-service.gov.uk
-
-// GitHub, Inc.
-// Submitted by Ben Toews 2014-02-06
-github.io
-githubusercontent.com
-
-// GlobeHosting, Inc.
-// Submitted by Zoltan Egresi 2013-07-12
-ro.com
-
-// Google, Inc.
-// Submitted by Eduardo Vela 2014-12-19
-appspot.com
-blogspot.ae
-blogspot.be
-blogspot.bj
-blogspot.ca
-blogspot.cf
-blogspot.ch
-blogspot.co.at
-blogspot.co.il
-blogspot.co.nz
-blogspot.co.uk
-blogspot.com
-blogspot.com.ar
-blogspot.com.au
-blogspot.com.br
-blogspot.com.es
-blogspot.com.tr
-blogspot.cv
-blogspot.cz
-blogspot.de
-blogspot.dk
-blogspot.fi
-blogspot.fr
-blogspot.gr
-blogspot.hk
-blogspot.hu
-blogspot.ie
-blogspot.in
-blogspot.it
-blogspot.jp
-blogspot.kr
-blogspot.mr
-blogspot.mx
-blogspot.nl
-blogspot.no
-blogspot.pt
-blogspot.re
-blogspot.ro
-blogspot.ru
-blogspot.se
-blogspot.sg
-blogspot.sk
-blogspot.td
-blogspot.tw
-codespot.com
-googleapis.com
-googlecode.com
-pagespeedmobilizer.com
-withgoogle.com
-
-// Heroku : https://www.heroku.com/
-// Submitted by Tom Maher 2013-05-02
-herokuapp.com
-herokussl.com
-
-// iki.fi
-// Submitted by Hannu Aronsson 2009-11-05
-iki.fi
-
-// info.at : http://www.info.at/
-biz.at
-info.at
-
-// Michau Enterprises Limited : http://www.co.pl/
-co.pl
-
-// Microsoft : http://microsoft.com
-// Submitted by Barry Dorrans 2014-01-24
-azurewebsites.net
-azure-mobile.net
-cloudapp.net
-
-// Neustar Inc.
-// Submitted by Trung Tran 2015-04-23
-4u.com
-
-// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/
-// Submitted by Jeff Wheelhouse 2014-02-02
-nfshost.com
-
-// NYC.mn : http://www.information.nyc.mn
-// Submitted by Matthew Brown 2013-03-11
-nyc.mn
-
-// One Fold Media : http://www.onefoldmedia.com/
-// Submitted by Eddie Jones 2014-06-10
-nid.io
-
-// Opera Software, A.S.A.
-// Submitted by Yngve Pettersen 2009-11-26
-operaunite.com
-
-// OutSystems
-// Submitted by Duarte Santos 2014-03-11
-outsystemscloud.com
-
-// .pl domains (grandfathered)
-art.pl
-gliwice.pl
-krakow.pl
-poznan.pl
-wroc.pl
-zakopane.pl
-
-// priv.at : http://www.nic.priv.at/
-// Submitted by registry 2008-06-09
-priv.at
-
-// Red Hat, Inc. OpenShift : https://openshift.redhat.com/
-// Submitted by Tim Kramer 2012-10-24
-rhcloud.com
-
-// SinaAppEngine : http://sae.sina.com.cn/
-// Submitted by SinaAppEngine 2015-02-02
-sinaapp.com
-vipsinaapp.com
-1kapp.com
-
-// TASK geographical domains (www.task.gda.pl/uslugi/dns)
-gda.pl
-gdansk.pl
-gdynia.pl
-med.pl
-sopot.pl
-
-// UDR Limited : http://www.udr.hk.com
-// Submitted by registry 2014-11-07
-hk.com
-hk.org
-ltd.hk
-inc.hk
-
-// Yola : https://www.yola.com/
-// Submitted by Stefano Rivera 2014-07-09
-yolasite.com
-
-// ZaNiC : http://www.za.net/
-// Submitted by registry 2009-10-03
-za.net
-za.org
-
-// ===END PRIVATE DOMAINS===
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/api_test.js b/scripts/node_modules/request/node_modules/tough-cookie/test/api_test.js
deleted file mode 100644
index b21326cd..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/api_test.js
+++ /dev/null
@@ -1,372 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var async = require('async');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-
-
-var atNow = Date.now();
-
-function at(offset) {
- return {now: new Date(atNow + offset)};
-}
-
-vows
- .describe('API')
- .addBatch({
- "All defined": function () {
- assert.ok(Cookie);
- assert.ok(CookieJar);
- }
- })
- .addBatch({
- "Constructor": {
- topic: function () {
- return new Cookie({
- key: 'test',
- value: 'b',
- maxAge: 60
- });
- },
- 'check for key property': function (c) {
- assert.ok(c);
- assert.equal(c.key, 'test');
- },
- 'check for value property': function (c) {
- assert.equal(c.value, 'b');
- },
- 'check for maxAge': function (c) {
- assert.equal(c.maxAge, 60);
- },
- 'check for default values for unspecified properties': function (c) {
- assert.equal(c.expires, "Infinity");
- assert.equal(c.secure, false);
- assert.equal(c.httpOnly, false);
- }
- }
- })
- .addBatch({
- "expiry option": {
- topic: function () {
- var cb = this.callback;
- var cj = new CookieJar();
- cj.setCookie('near=expiry; Domain=example.com; Path=/; Max-Age=1', 'http://www.example.com', at(-1), function (err, cookie) {
-
- cb(err, {cj: cj, cookie: cookie});
- });
- },
- "set the cookie": function (t) {
- assert.ok(t.cookie, "didn't set?!");
- assert.equal(t.cookie.key, 'near');
- },
- "then, retrieving": {
- topic: function (t) {
- var cb = this.callback;
- setTimeout(function () {
- t.cj.getCookies('http://www.example.com', {http: true, expire: false}, function (err, cookies) {
- t.cookies = cookies;
- cb(err, t);
- });
- }, 2000);
- },
- "got the cookie": function (t) {
- assert.lengthOf(t.cookies, 1);
- assert.equal(t.cookies[0].key, 'near');
- }
- }
- }
- })
- .addBatch({
- "allPaths option": {
- topic: function () {
- var cj = new CookieJar();
- var tasks = [];
- tasks.push(cj.setCookie.bind(cj, 'nopath_dom=qq; Path=/; Domain=example.com', 'http://example.com', {}));
- tasks.push(cj.setCookie.bind(cj, 'path_dom=qq; Path=/foo; Domain=example.com', 'http://example.com', {}));
- tasks.push(cj.setCookie.bind(cj, 'nopath_host=qq; Path=/', 'http://www.example.com', {}));
- tasks.push(cj.setCookie.bind(cj, 'path_host=qq; Path=/foo', 'http://www.example.com', {}));
- tasks.push(cj.setCookie.bind(cj, 'other=qq; Path=/', 'http://other.example.com/', {}));
- tasks.push(cj.setCookie.bind(cj, 'other2=qq; Path=/foo', 'http://other.example.com/foo', {}));
- var cb = this.callback;
- async.parallel(tasks, function (err, results) {
- cb(err, {cj: cj, cookies: results});
- });
- },
- "all set": function (t) {
- assert.equal(t.cookies.length, 6);
- assert.ok(t.cookies.every(function (c) {
- return !!c
- }));
- },
- "getting without allPaths": {
- topic: function (t) {
- var cb = this.callback;
- var cj = t.cj;
- cj.getCookies('http://www.example.com/', {}, function (err, cookies) {
- cb(err, {cj: cj, cookies: cookies});
- });
- },
- "found just two cookies": function (t) {
- assert.equal(t.cookies.length, 2);
- },
- "all are path=/": function (t) {
- assert.ok(t.cookies.every(function (c) {
- return c.path === '/'
- }));
- },
- "no 'other' cookies": function (t) {
- assert.ok(!t.cookies.some(function (c) {
- return (/^other/).test(c.name)
- }));
- }
- },
- "getting without allPaths for /foo": {
- topic: function (t) {
- var cb = this.callback;
- var cj = t.cj;
- cj.getCookies('http://www.example.com/foo', {}, function (err, cookies) {
- cb(err, {cj: cj, cookies: cookies});
- });
- },
- "found four cookies": function (t) {
- assert.equal(t.cookies.length, 4);
- },
- "no 'other' cookies": function (t) {
- assert.ok(!t.cookies.some(function (c) {
- return (/^other/).test(c.name)
- }));
- }
- },
- "getting with allPaths:true": {
- topic: function (t) {
- var cb = this.callback;
- var cj = t.cj;
- cj.getCookies('http://www.example.com/', {allPaths: true}, function (err, cookies) {
- cb(err, {cj: cj, cookies: cookies});
- });
- },
- "found four cookies": function (t) {
- assert.equal(t.cookies.length, 4);
- },
- "no 'other' cookies": function (t) {
- assert.ok(!t.cookies.some(function (c) {
- return (/^other/).test(c.name)
- }));
- }
- }
- }
- })
- .addBatch({
- "Remove cookies": {
- topic: function () {
- var jar = new CookieJar();
- var cookie = Cookie.parse("a=b; Domain=example.com; Path=/");
- var cookie2 = Cookie.parse("a=b; Domain=foo.com; Path=/");
- var cookie3 = Cookie.parse("foo=bar; Domain=foo.com; Path=/");
- jar.setCookie(cookie, 'http://example.com/index.html', function () {
- });
- jar.setCookie(cookie2, 'http://foo.com/index.html', function () {
- });
- jar.setCookie(cookie3, 'http://foo.com/index.html', function () {
- });
- return jar;
- },
- "all from matching domain": function (jar) {
- jar.store.removeCookies('example.com', null, function (err) {
- assert(err == null);
-
- jar.store.findCookies('example.com', null, function (err, cookies) {
- assert(err == null);
- assert(cookies != null);
- assert(cookies.length === 0, 'cookie was not removed');
- });
-
- jar.store.findCookies('foo.com', null, function (err, cookies) {
- assert(err == null);
- assert(cookies != null);
- assert(cookies.length === 2, 'cookies should not have been removed');
- });
- });
- },
- "from cookie store matching domain and key": function (jar) {
- jar.store.removeCookie('foo.com', '/', 'foo', function (err) {
- assert(err == null);
-
- jar.store.findCookies('foo.com', null, function (err, cookies) {
- assert(err == null);
- assert(cookies != null);
- assert(cookies.length === 1, 'cookie was not removed correctly');
- assert(cookies[0].key === 'a', 'wrong cookie was removed');
- });
- });
- }
- }
- })
- .addBatch({
- "Synchronous CookieJar": {
- "setCookieSync": {
- topic: function () {
- var jar = new CookieJar();
- var cookie = Cookie.parse("a=b; Domain=example.com; Path=/");
- cookie = jar.setCookieSync(cookie, 'http://example.com/index.html');
- return cookie;
- },
- "returns a copy of the cookie": function (cookie) {
- assert.instanceOf(cookie, Cookie);
- }
- },
- "getCookiesSync": {
- topic: function () {
- var jar = new CookieJar();
- var url = 'http://example.com/index.html';
- jar.setCookieSync("a=b; Domain=example.com; Path=/", url);
- jar.setCookieSync("c=d; Domain=example.com; Path=/", url);
- return jar.getCookiesSync(url);
- },
- "returns the cookie array": function (err, cookies) {
- assert.ok(!err);
- assert.ok(Array.isArray(cookies));
- assert.lengthOf(cookies, 2);
- cookies.forEach(function (cookie) {
- assert.instanceOf(cookie, Cookie);
- });
- }
- },
-
- "getCookieStringSync": {
- topic: function () {
- var jar = new CookieJar();
- var url = 'http://example.com/index.html';
- jar.setCookieSync("a=b; Domain=example.com; Path=/", url);
- jar.setCookieSync("c=d; Domain=example.com; Path=/", url);
- return jar.getCookieStringSync(url);
- },
- "returns the cookie header string": function (err, str) {
- assert.ok(!err);
- assert.typeOf(str, 'string');
- }
- },
-
- "getSetCookieStringsSync": {
- topic: function () {
- var jar = new CookieJar();
- var url = 'http://example.com/index.html';
- jar.setCookieSync("a=b; Domain=example.com; Path=/", url);
- jar.setCookieSync("c=d; Domain=example.com; Path=/", url);
- return jar.getSetCookieStringsSync(url);
- },
- "returns the cookie header string": function (err, headers) {
- assert.ok(!err);
- assert.ok(Array.isArray(headers));
- assert.lengthOf(headers, 2);
- headers.forEach(function (header) {
- assert.typeOf(header, 'string');
- });
- }
- }
- }
- })
- .addBatch({
- "Synchronous API on async CookieJar": {
- topic: function () {
- return new tough.Store();
- },
- "setCookieSync": {
- topic: function (store) {
- var jar = new CookieJar(store);
- try {
- jar.setCookieSync("a=b", 'http://example.com/index.html');
- return false;
- } catch (e) {
- return e;
- }
- },
- "fails": function (err) {
- assert.instanceOf(err, Error);
- assert.equal(err.message,
- 'CookieJar store is not synchronous; use async API instead.');
- }
- },
- "getCookiesSync": {
- topic: function (store) {
- var jar = new CookieJar(store);
- try {
- jar.getCookiesSync('http://example.com/index.html');
- return false;
- } catch (e) {
- return e;
- }
- },
- "fails": function (err) {
- assert.instanceOf(err, Error);
- assert.equal(err.message,
- 'CookieJar store is not synchronous; use async API instead.');
- }
- },
- "getCookieStringSync": {
- topic: function (store) {
- var jar = new CookieJar(store);
- try {
- jar.getCookieStringSync('http://example.com/index.html');
- return false;
- } catch (e) {
- return e;
- }
- },
- "fails": function (err) {
- assert.instanceOf(err, Error);
- assert.equal(err.message,
- 'CookieJar store is not synchronous; use async API instead.');
- }
- },
- "getSetCookieStringsSync": {
- topic: function (store) {
- var jar = new CookieJar(store);
- try {
- jar.getSetCookieStringsSync('http://example.com/index.html');
- return false;
- } catch (e) {
- return e;
- }
- },
- "fails": function (err) {
- assert.instanceOf(err, Error);
- assert.equal(err.message,
- 'CookieJar store is not synchronous; use async API instead.');
- }
- }
- }
- })
- .export(module);
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_jar_test.js b/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_jar_test.js
deleted file mode 100644
index 689407b0..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_jar_test.js
+++ /dev/null
@@ -1,468 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var async = require('async');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-
-var atNow = Date.now();
-
-function at(offset) {
- return {now: new Date(atNow + offset)};
-}
-
-vows
- .describe('CookieJar')
- .addBatch({
- "Setting a basic cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com; Path=/");
- assert.strictEqual(c.hostOnly, null);
- assert.instanceOf(c.creation, Date);
- assert.strictEqual(c.lastAccessed, null);
- c.creation = new Date(Date.now() - 10000);
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "works": function (c) {
- assert.instanceOf(c, Cookie)
- }, // C is for Cookie, good enough for me
- "gets timestamped": function (c) {
- assert.ok(c.creation);
- assert.ok(Date.now() - c.creation.getTime() < 5000); // recently stamped
- assert.ok(c.lastAccessed);
- assert.equal(c.creation, c.lastAccessed);
- assert.equal(c.TTL(), Infinity);
- assert.ok(!c.isPersistent());
- }
- },
- "Setting a no-path cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com");
- assert.strictEqual(c.hostOnly, null);
- assert.instanceOf(c.creation, Date);
- assert.strictEqual(c.lastAccessed, null);
- c.creation = new Date(Date.now() - 10000);
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "domain": function (c) {
- assert.equal(c.domain, 'example.com')
- },
- "path is /": function (c) {
- assert.equal(c.path, '/')
- },
- "path was derived": function (c) {
- assert.strictEqual(c.pathIsDefault, true)
- }
- },
- "Setting a cookie already marked as host-only": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com");
- assert.strictEqual(c.hostOnly, null);
- assert.instanceOf(c.creation, Date);
- assert.strictEqual(c.lastAccessed, null);
- c.creation = new Date(Date.now() - 10000);
- c.hostOnly = true;
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "domain": function (c) {
- assert.equal(c.domain, 'example.com')
- },
- "still hostOnly": function (c) {
- assert.strictEqual(c.hostOnly, true)
- }
- },
- "Setting a session cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b");
- assert.strictEqual(c.path, null);
- cj.setCookie(c, 'http://www.example.com/dir/index.html', this.callback);
- },
- "works": function (c) {
- assert.instanceOf(c, Cookie)
- },
- "gets the domain": function (c) {
- assert.equal(c.domain, 'www.example.com')
- },
- "gets the default path": function (c) {
- assert.equal(c.path, '/dir')
- },
- "is 'hostOnly'": function (c) {
- assert.ok(c.hostOnly)
- }
- },
- "Setting wrong domain cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=fooxample.com; Path=/");
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "fails": function (err, c) {
- assert.ok(err.message.match(/domain/i));
- assert.ok(!c);
- }
- },
- "Setting sub-domain cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=www.example.com; Path=/");
- cj.setCookie(c, 'http://example.com/index.html', this.callback);
- },
- "fails": function (err, c) {
- assert.ok(err.message.match(/domain/i));
- assert.ok(!c);
- }
- },
- "Setting super-domain cookie": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com; Path=/");
- cj.setCookie(c, 'http://www.app.example.com/index.html', this.callback);
- },
- "success": function (err, c) {
- assert.ok(!err);
- assert.equal(c.domain, 'example.com');
- }
- },
- "Setting a sub-path cookie on a super-domain": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com; Path=/subpath");
- assert.strictEqual(c.hostOnly, null);
- assert.instanceOf(c.creation, Date);
- assert.strictEqual(c.lastAccessed, null);
- c.creation = new Date(Date.now() - 10000);
- cj.setCookie(c, 'http://www.example.com/index.html', this.callback);
- },
- "domain is super-domain": function (c) {
- assert.equal(c.domain, 'example.com')
- },
- "path is /subpath": function (c) {
- assert.equal(c.path, '/subpath')
- },
- "path was NOT derived": function (c) {
- assert.strictEqual(c.pathIsDefault, null)
- }
- },
- "Setting HttpOnly cookie over non-HTTP API": {
- topic: function () {
- var cj = new CookieJar();
- var c = Cookie.parse("a=b; Domain=example.com; Path=/; HttpOnly");
- cj.setCookie(c, 'http://example.com/index.html', {http: false}, this.callback);
- },
- "fails": function (err, c) {
- assert.match(err.message, /HttpOnly/i);
- assert.ok(!c);
- }
- }
- })
- .addBatch({
- "Store eight cookies": {
- topic: function () {
- var cj = new CookieJar();
- var ex = 'http://example.com/index.html';
- var tasks = [];
- tasks.push(function (next) {
- cj.setCookie('a=1; Domain=example.com; Path=/', ex, at(0), next);
- });
- tasks.push(function (next) {
- cj.setCookie('b=2; Domain=example.com; Path=/; HttpOnly', ex, at(1000), next);
- });
- tasks.push(function (next) {
- cj.setCookie('c=3; Domain=example.com; Path=/; Secure', ex, at(2000), next);
- });
- tasks.push(function (next) { // path
- cj.setCookie('d=4; Domain=example.com; Path=/foo', ex, at(3000), next);
- });
- tasks.push(function (next) { // host only
- cj.setCookie('e=5', ex, at(4000), next);
- });
- tasks.push(function (next) { // other domain
- cj.setCookie('f=6; Domain=nodejs.org; Path=/', 'http://nodejs.org', at(5000), next);
- });
- tasks.push(function (next) { // expired
- cj.setCookie('g=7; Domain=example.com; Path=/; Expires=Tue, 18 Oct 2011 00:00:00 GMT', ex, at(6000), next);
- });
- tasks.push(function (next) { // expired via Max-Age
- cj.setCookie('h=8; Domain=example.com; Path=/; Max-Age=1', ex, next);
- });
- var cb = this.callback;
- async.parallel(tasks, function (err, results) {
- setTimeout(function () {
- cb(err, cj, results);
- }, 2000); // so that 'h=8' expires
- });
- },
- "setup ok": function (err, cj, results) {
- assert.ok(!err);
- assert.ok(cj);
- assert.ok(results);
- },
- "then retrieving for http://nodejs.org": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://nodejs.org', this.callback);
- },
- "get a nodejs cookie": function (cookies) {
- assert.lengthOf(cookies, 1);
- var cookie = cookies[0];
- assert.equal(cookie.domain, 'nodejs.org');
- }
- },
- "then retrieving for https://example.com": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('https://example.com', {secure: true}, this.callback);
- },
- "get a secure example cookie with others": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'b', 'c', 'e']);
- }
- },
- "then retrieving for https://example.com (missing options)": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('https://example.com', this.callback);
- },
- "get a secure example cookie with others": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'b', 'c', 'e']);
- }
- },
- "then retrieving for http://example.com": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://example.com', this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'b', 'e']);
- }
- },
- "then retrieving for http://EXAMPlE.com": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://EXAMPlE.com', this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'b', 'e']);
- }
- },
- "then retrieving for http://example.com, non-HTTP": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://example.com', {http: false}, this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['a', 'e']);
- }
- },
- "then retrieving for http://example.com/foo/bar": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://example.com/foo/bar', this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['d', 'a', 'b', 'e']);
- }
- },
- "then retrieving for http://example.com as a string": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookieString('http://example.com', this.callback);
- },
- "get a single string": function (cookieHeader) {
- assert.equal(cookieHeader, "a=1; b=2; e=5");
- }
- },
- "then retrieving for http://example.com as a set-cookie header": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getSetCookieStrings('http://example.com', this.callback);
- },
- "get a single string": function (cookieHeaders) {
- assert.lengthOf(cookieHeaders, 3);
- assert.equal(cookieHeaders[0], "a=1; Domain=example.com; Path=/");
- assert.equal(cookieHeaders[1], "b=2; Domain=example.com; Path=/; HttpOnly");
- assert.equal(cookieHeaders[2], "e=5; Path=/");
- }
- },
- "then retrieving for http://www.example.com/": {
- topic: function (cj, oldResults) {
- assert.ok(oldResults);
- cj.getCookies('http://www.example.com/foo/bar', this.callback);
- },
- "get a bunch of cookies": function (cookies) {
- var names = cookies.map(function (c) {
- return c.key
- });
- assert.deepEqual(names, ['d', 'a', 'b']); // note lack of 'e'
- }
- }
- }
- })
- .addBatch({
- "Repeated names": {
- topic: function () {
- var cb = this.callback;
- var cj = new CookieJar();
- var ex = 'http://www.example.com/';
- var sc = cj.setCookie;
- var tasks = [];
- var now = Date.now();
- tasks.push(sc.bind(cj, 'aaaa=xxxx', ex, at(0)));
- tasks.push(sc.bind(cj, 'aaaa=1111; Domain=www.example.com', ex, at(1000)));
- tasks.push(sc.bind(cj, 'aaaa=2222; Domain=example.com', ex, at(2000)));
- tasks.push(sc.bind(cj, 'aaaa=3333; Domain=www.example.com; Path=/pathA', ex, at(3000)));
- async.series(tasks, function (err, results) {
- results = results.filter(function (e) {
- return e !== undefined
- });
- cb(err, {cj: cj, cookies: results, now: now});
- });
- },
- "all got set": function (err, t) {
- assert.lengthOf(t.cookies, 4);
- },
- "then getting 'em back": {
- topic: function (t) {
- var cj = t.cj;
- cj.getCookies('http://www.example.com/pathA', this.callback);
- },
- "there's just three": function (err, cookies) {
- var vals = cookies.map(function (c) {
- return c.value
- });
- // may break with sorting; sorting should put 3333 first due to longest path:
- assert.deepEqual(vals, ['3333', '1111', '2222']);
- }
- }
- }
- })
- .addBatch({
- "CookieJar setCookie errors": {
- "public-suffix domain": {
- topic: function () {
- var cj = new CookieJar();
- cj.setCookie('i=9; Domain=kyoto.jp; Path=/', 'kyoto.jp', this.callback);
- },
- "errors": function (err, cookie) {
- assert.ok(err);
- assert.ok(!cookie);
- assert.match(err.message, /public suffix/i);
- }
- },
- "wrong domain": {
- topic: function () {
- var cj = new CookieJar();
- cj.setCookie('j=10; Domain=google.com; Path=/', 'http://google.ca', this.callback);
- },
- "errors": function (err, cookie) {
- assert.ok(err);
- assert.ok(!cookie);
- assert.match(err.message, /not in this host's domain/i);
- }
- },
- "old cookie is HttpOnly": {
- topic: function () {
- var cb = this.callback;
- var next = function (err, c) {
- c = null;
- return cb(err, cj);
- };
- var cj = new CookieJar();
- cj.setCookie('k=11; Domain=example.ca; Path=/; HttpOnly', 'http://example.ca', {http: true}, next);
- },
- "initial cookie is set": function (err, cj) {
- assert.ok(!err);
- assert.ok(cj);
- },
- "but when trying to overwrite": {
- topic: function (cj) {
- var cb = this.callback;
- var next = function (err, c) {
- c = null;
- cb(null, err);
- };
- cj.setCookie('k=12; Domain=example.ca; Path=/', 'http://example.ca', {http: false}, next);
- },
- "it's an error": function (err) {
- assert.ok(err);
- },
- "then, checking the original": {
- topic: function (ignored, cj) {
- assert.ok(cj instanceof CookieJar);
- cj.getCookies('http://example.ca', {http: true}, this.callback);
- },
- "cookie has original value": function (err, cookies) {
- assert.equal(err, null);
- assert.lengthOf(cookies, 1);
- assert.equal(cookies[0].value, 11);
- }
- }
- }
- },
- "similar to public suffix": {
- topic: function () {
- var cj = new CookieJar();
- var url = 'http://www.foonet.net';
- assert.isTrue(cj.rejectPublicSuffixes);
- cj.setCookie('l=13; Domain=foonet.net; Path=/', url, this.callback);
- },
- "doesn't error": function (err, cookie) {
- assert.ok(!err);
- assert.ok(cookie);
- }
- }
- }
- })
- .export(module);
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_sorting_test.js b/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_sorting_test.js
deleted file mode 100644
index 826562a2..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_sorting_test.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-
-function toKeyArray(cookies) {
- return cookies.map(function (c) {
- return c.key
- });
-}
-
-vows
- .describe('Cookie sorting')
- .addBatch({
- "Assumptions:": {
- ".creationIndex is set during construction": function() {
- var now = new Date();
- var c1 = new Cookie();
- var c2 = new Cookie();
- assert.isNumber(c1.creationIndex);
- assert.isNumber(c2.creationIndex);
- assert(c1.creationIndex < c2.creationIndex,
- 'creationIndex should increase with each construction');
- },
-
- ".creationIndex is set during construction (forced ctime)": function() {
- var now = new Date();
- var c1 = new Cookie({creation: now});
- var c2 = new Cookie({creation: now});
- assert.strictEqual(c1.creation, c2.creation);
- assert.isNumber(c1.creationIndex);
- assert.isNumber(c2.creationIndex);
- assert(c1.creationIndex < c2.creationIndex,
- 'creationIndex should increase with each construction');
- },
-
- ".creationIndex is left alone during new setCookie": function() {
- var jar = new CookieJar();
- var c = new Cookie({key:'k', value:'v', domain:'example.com'});
- var now = new Date();
- var beforeDate = c.creation;
- assert.instanceOf(beforeDate, Date);
- assert.notStrictEqual(now, beforeDate);
- var beforeIndex = c.creationIndex;
- assert.isNumber(c.creationIndex);
-
- jar.setCookieSync(c, 'http://example.com/', {now: now});
-
- assert.strictEqual(c.creation, now);
- assert.strictEqual(c.creationIndex, beforeIndex);
- },
-
- ".creationIndex is preserved during update setCookie": function() {
- var jar = new CookieJar();
-
- var thisMs = Date.now();
- var t1 = new Date(thisMs);
- var t2 = new Date(thisMs);
- assert.notStrictEqual(t1, t2); // Date objects are distinct
-
- var c = new Cookie({key:'k', value:'v1', domain:'example.com'});
- jar.setCookieSync(c, 'http://example.com/', {now: t1});
- var originalIndex = c.creationIndex;
-
- assert.strictEqual(c.creation, t1);
- assert.strictEqual(c.lastAccessed, t1);
-
- c = new Cookie({key:'k', value:'v2', domain:'example.com'});
- assert.notStrictEqual(c.creation, t1); // new timestamp assigned
-
- jar.setCookieSync(c, 'http://example.com/', {now: t2});
-
- assert.strictEqual(c.creation, t1); // retained
- assert.strictEqual(c.lastAccessed, t2); // updated
- assert.strictEqual(c.creationIndex, originalIndex); // retained
- },
- }
- })
- .addBatch({
- "Cookie Sorting": {
- topic: function () {
- var cookies = [];
- cookies.push(Cookie.parse("a=0; Domain=example.com"));
- cookies.push(Cookie.parse("b=1; Domain=www.example.com"));
- cookies.push(Cookie.parse("c=2; Domain=example.com; Path=/pathA"));
- cookies.push(Cookie.parse("d=3; Domain=www.example.com; Path=/pathA"));
- cookies.push(Cookie.parse("e=4; Domain=example.com; Path=/pathA/pathB"));
- cookies.push(Cookie.parse("f=5; Domain=www.example.com; Path=/pathA/pathB"));
-
- // weak shuffle:
- cookies = cookies.sort(function () {
- return Math.random() - 0.5
- });
-
- cookies = cookies.sort(tough.cookieCompare);
- return cookies;
- },
- "got": function (cookies) {
- assert.lengthOf(cookies, 6);
- assert.deepEqual(toKeyArray(cookies), ['e', 'f', 'c', 'd', 'a', 'b']);
- }
- }
- })
- .addBatch({
- "Changing creation date affects sorting": {
- topic: function () {
- var cookies = [];
- var now = Date.now();
- cookies.push(Cookie.parse("a=0;"));
- cookies.push(Cookie.parse("b=1;"));
- cookies.push(Cookie.parse("c=2;"));
-
- cookies.forEach(function (cookie, idx) {
- cookie.creation = new Date(now - 100 * idx);
- });
-
- return cookies.sort(tough.cookieCompare);
- },
- "got": function (cookies) {
- assert.deepEqual(toKeyArray(cookies), ['c', 'b', 'a']);
- }
- }
- })
- .export(module);
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_to_json_test.js b/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_to_json_test.js
deleted file mode 100644
index 94a23d46..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_to_json_test.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-
-vows
- .describe('Cookie.toJSON()')
- .addBatch({
- "JSON": {
- "serialization": {
- topic: function() {
- var c = Cookie.parse('alpha=beta; Domain=example.com; Path=/foo; Expires=Tue, 19 Jan 2038 03:14:07 GMT; HttpOnly');
- return JSON.stringify(c);
- },
- "gives a string": function(str) {
- assert.equal(typeof str, "string");
- },
- "date is in ISO format": function(str) {
- assert.match(str, /"expires":"2038-01-19T03:14:07\.000Z"/, 'expires is in ISO format');
- }
- },
- "deserialization": {
- topic: function() {
- var json = '{"key":"alpha","value":"beta","domain":"example.com","path":"/foo","expires":"2038-01-19T03:14:07.000Z","httpOnly":true,"lastAccessed":2000000000123}';
- return Cookie.fromJSON(json);
- },
- "works": function(c) {
- assert.ok(c);
- },
- "key": function(c) { assert.equal(c.key, "alpha") },
- "value": function(c) { assert.equal(c.value, "beta") },
- "domain": function(c) { assert.equal(c.domain, "example.com") },
- "path": function(c) { assert.equal(c.path, "/foo") },
- "httpOnly": function(c) { assert.strictEqual(c.httpOnly, true) },
- "secure": function(c) { assert.strictEqual(c.secure, false) },
- "hostOnly": function(c) { assert.strictEqual(c.hostOnly, null) },
- "expires is a date object": function(c) {
- assert.equal(c.expires.getTime(), 2147483647000);
- },
- "lastAccessed is a date object": function(c) {
- assert.equal(c.lastAccessed.getTime(), 2000000000123);
- },
- "creation defaulted": function(c) {
- assert.ok(c.creation.getTime());
- }
- },
- "null deserialization": {
- topic: function() {
- return Cookie.fromJSON(null);
- },
- "is null": function(cookie) {
- assert.equal(cookie,null);
- }
- }
- },
- "expiry deserialization": {
- "Infinity": {
- topic: Cookie.fromJSON.bind(null, '{"expires":"Infinity"}'),
- "is infinite": function(c) {
- assert.strictEqual(c.expires, "Infinity");
- assert.equal(c.expires, Infinity);
- }
- }
- },
- "maxAge serialization": {
- topic: function() {
- return function(toSet) {
- var c = new Cookie();
- c.key = 'foo'; c.value = 'bar';
- c.setMaxAge(toSet);
- return JSON.stringify(c);
- };
- },
- "zero": {
- topic: function(f) { return f(0) },
- "looks good": function(str) {
- assert.match(str, /"maxAge":0/);
- }
- },
- "Infinity": {
- topic: function(f) { return f(Infinity) },
- "looks good": function(str) {
- assert.match(str, /"maxAge":"Infinity"/);
- }
- },
- "-Infinity": {
- topic: function(f) { return f(-Infinity) },
- "looks good": function(str) {
- assert.match(str, /"maxAge":"-Infinity"/);
- }
- },
- "null": {
- topic: function(f) { return f(null) },
- "absent": function(str) {
- assert.match(str, /(?!"maxAge":null)/); // NB: negative RegExp
- }
- }
- },
- "maxAge deserialization": {
- "number": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":123}'),
- "is the number": function(c) {
- assert.strictEqual(c.maxAge, 123);
- }
- },
- "null": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":null}'),
- "is null": function(c) {
- assert.strictEqual(c.maxAge, null);
- }
- },
- "less than zero": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":-123}'),
- "is -123": function(c) {
- assert.strictEqual(c.maxAge, -123);
- }
- },
- "Infinity": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"Infinity"}'),
- "is inf-as-string": function(c) {
- assert.strictEqual(c.maxAge, "Infinity");
- }
- },
- "-Infinity": {
- topic: Cookie.fromJSON.bind(null,'{"key":"foo","value":"bar","maxAge":"-Infinity"}'),
- "is inf-as-string": function(c) {
- assert.strictEqual(c.maxAge, "-Infinity");
- }
- }
- }
- })
- .export(module);
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_to_string_test.js b/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_to_string_test.js
deleted file mode 100644
index b7ad10da..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/cookie_to_string_test.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-
-vows
- .describe('Cookie.toString()')
- .addBatch({
- "a simple cookie": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate());
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=b');
- }
- },
- "a cookie with spaces in the value": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'beta gamma';
- return c;
- },
- "doesn't validate": function (c) {
- assert.ok(!c.validate());
- },
- "'garbage in, garbage out'": function (c) {
- assert.equal(c.toString(), 'a=beta gamma');
- }
- },
- "with an empty value and HttpOnly": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.httpOnly = true;
- return c;
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=; HttpOnly');
- }
- },
- "with an expiry": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.setExpires("Oct 18 2011 07:05:03 GMT");
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate());
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT');
- },
- "to short string": function (c) {
- assert.equal(c.cookieString(), 'a=b');
- }
- },
- "with a max-age": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.setExpires("Oct 18 2011 07:05:03 GMT");
- c.maxAge = 12345;
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate()); // mabe this one *shouldn't*?
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345');
- }
- },
- "with a bunch of things": function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.setExpires("Oct 18 2011 07:05:03 GMT");
- c.maxAge = 12345;
- c.domain = 'example.com';
- c.path = '/foo';
- c.secure = true;
- c.httpOnly = true;
- c.extensions = ['MyExtension'];
- assert.equal(c.toString(), 'a=b; Expires=Tue, 18 Oct 2011 07:05:03 GMT; Max-Age=12345; Domain=example.com; Path=/foo; Secure; HttpOnly; MyExtension');
- },
- "a host-only cookie": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.hostOnly = true;
- c.domain = 'shouldnt-stringify.example.com';
- c.path = '/should-stringify';
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate());
- },
- "to string": function (c) {
- assert.equal(c.toString(), 'a=b; Path=/should-stringify');
- }
- },
- "minutes are '10'": {
- topic: function () {
- var c = new Cookie();
- c.key = 'a';
- c.value = 'b';
- c.expires = new Date(1284113410000);
- return c;
- },
- "validates": function (c) {
- assert.ok(c.validate());
- },
- "to string": function (c) {
- var str = c.toString();
- assert.notEqual(str, 'a=b; Expires=Fri, 010 Sep 2010 010:010:010 GMT');
- assert.equal(str, 'a=b; Expires=Fri, 10 Sep 2010 10:10:10 GMT');
- }
- }
- })
- .export(module);
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/date_test.js b/scripts/node_modules/request/node_modules/tough-cookie/test/date_test.js
deleted file mode 100644
index afd989c5..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/date_test.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-
-function dateVows(table) {
- var theVows = {};
- Object.keys(table).forEach(function (date) {
- var expect = table[date];
- theVows[date] = function () {
- var got = tough.parseDate(date) ? 'valid' : 'invalid';
- assert.equal(got, expect ? 'valid' : 'invalid');
- };
- });
- return {"date parsing": theVows};
-}
-
-vows
- .describe('Date')
- .addBatch(dateVows({
- "Wed, 09 Jun 2021 10:18:14 GMT": true,
- "Wed, 09 Jun 2021 22:18:14 GMT": true,
- "Tue, 18 Oct 2011 07:42:42.123 GMT": true,
- "18 Oct 2011 07:42:42 GMT": true,
- "8 Oct 2011 7:42:42 GMT": true,
- "8 Oct 2011 7:2:42 GMT": true,
- "Oct 18 2011 07:42:42 GMT": true,
- "Tue Oct 18 2011 07:05:03 GMT+0000 (GMT)": true,
- "09 Jun 2021 10:18:14 GMT": true,
- "99 Jix 3038 48:86:72 ZMT": false,
- '01 Jan 1970 00:00:00 GMT': true,
- '01 Jan 1600 00:00:00 GMT': false, // before 1601
- '01 Jan 1601 00:00:00 GMT': true,
- '10 Feb 81 13:00:00 GMT': true, // implicit year
- 'Thu, 17-Apr-2014 02:12:29 GMT': true, // dashes
- 'Thu, 17-Apr-2014 02:12:29 UTC': true // dashes and UTC
- }))
- .addBatch({
- "strict date parse of Thu, 01 Jan 1970 00:00:010 GMT": {
- topic: function () {
- return tough.parseDate('Thu, 01 Jan 1970 00:00:010 GMT', true) ? true : false;
- },
- "invalid": function (date) {
- assert.equal(date, false);
- }
- }
- })
- .export(module);
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/domain_and_path_test.js b/scripts/node_modules/request/node_modules/tough-cookie/test/domain_and_path_test.js
deleted file mode 100644
index 36b85b9b..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/domain_and_path_test.js
+++ /dev/null
@@ -1,201 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-
-function matchVows(func, table) {
- var theVows = {};
- table.forEach(function (item) {
- var str = item[0];
- var dom = item[1];
- var expect = item[2];
- var label = str + (expect ? " matches " : " doesn't match ") + dom;
- theVows[label] = function () {
- assert.equal(func(str, dom), expect);
- };
- });
- return theVows;
-}
-
-function defaultPathVows(table) {
- var theVows = {};
- table.forEach(function (item) {
- var str = item[0];
- var expect = item[1];
- var label = str + " gives " + expect;
- theVows[label] = function () {
- assert.equal(tough.defaultPath(str), expect);
- };
- });
- return theVows;
-}
-
-vows
- .describe('Domain and Path')
- .addBatch({
- "domain normalization": {
- "simple": function () {
- var c = new Cookie();
- c.domain = "EXAMPLE.com";
- assert.equal(c.canonicalizedDomain(), "example.com");
- },
- "extra dots": function () {
- var c = new Cookie();
- c.domain = ".EXAMPLE.com";
- assert.equal(c.cdomain(), "example.com");
- },
- "weird trailing dot": function () {
- var c = new Cookie();
- c.domain = "EXAMPLE.ca.";
- assert.equal(c.canonicalizedDomain(), "example.ca.");
- },
- "weird internal dots": function () {
- var c = new Cookie();
- c.domain = "EXAMPLE...ca.";
- assert.equal(c.canonicalizedDomain(), "example...ca.");
- },
- "IDN": function () {
- var c = new Cookie();
- c.domain = "δοκιμή.δοκιμή"; // "test.test" in greek
- assert.equal(c.canonicalizedDomain(), "xn--jxalpdlp.xn--jxalpdlp");
- }
- }
- })
- .addBatch({
- "Domain Match": matchVows(tough.domainMatch, [
- // str, dom, expect
- ["example.com", "example.com", true],
- ["eXaMpLe.cOm", "ExAmPlE.CoM", true],
- ["no.ca", "yes.ca", false],
- ["wwwexample.com", "example.com", false],
- ["www.example.com", "example.com", true],
- ["example.com", "www.example.com", false],
- ["www.subdom.example.com", "example.com", true],
- ["www.subdom.example.com", "subdom.example.com", true],
- ["example.com", "example.com.", false], // RFC6265 S4.1.2.3
- ["192.168.0.1", "168.0.1", false], // S5.1.3 "The string is a host name"
- [null, "example.com", null],
- ["example.com", null, null],
- [null, null, null],
- [undefined, undefined, null],
- ])
- })
-
- .addBatch({
- "default-path": defaultPathVows([
- [null, "/"],
- ["/", "/"],
- ["/file", "/"],
- ["/dir/file", "/dir"],
- ["noslash", "/"],
- ])
- })
- .addBatch({
- "Path-Match": matchVows(tough.pathMatch, [
- // request, cookie, match
- ["/", "/", true],
- ["/dir", "/", true],
- ["/", "/dir", false],
- ["/dir/", "/dir/", true],
- ["/dir/file", "/dir/", true],
- ["/dir/file", "/dir", true],
- ["/directory", "/dir", false],
- ])
- })
- .addBatch({
- "permuteDomain": {
- "base case": {
- topic: tough.permuteDomain.bind(null, 'example.com'),
- "got the domain": function (list) {
- assert.deepEqual(list, ['example.com']);
- }
- },
- "two levels": {
- topic: tough.permuteDomain.bind(null, 'foo.bar.example.com'),
- "got three things": function (list) {
- assert.deepEqual(list, ['example.com', 'bar.example.com', 'foo.bar.example.com']);
- }
- },
- "local domain": {
- topic: tough.permuteDomain.bind(null, 'foo.bar.example.localduhmain'),
- "got three things": function (list) {
- assert.deepEqual(list, ['example.localduhmain', 'bar.example.localduhmain', 'foo.bar.example.localduhmain']);
- }
- }
- },
- "permutePath": {
- "base case": {
- topic: tough.permutePath.bind(null, '/'),
- "just slash": function (list) {
- assert.deepEqual(list, ['/']);
- }
- },
- "single case": {
- topic: tough.permutePath.bind(null, '/foo'),
- "two things": function (list) {
- assert.deepEqual(list, ['/foo', '/']);
- },
- "path matching": function (list) {
- list.forEach(function (e) {
- assert.ok(tough.pathMatch('/foo', e));
- });
- }
- },
- "double case": {
- topic: tough.permutePath.bind(null, '/foo/bar'),
- "four things": function (list) {
- assert.deepEqual(list, ['/foo/bar', '/foo', '/']);
- },
- "path matching": function (list) {
- list.forEach(function (e) {
- assert.ok(tough.pathMatch('/foo/bar', e));
- });
- }
- },
- "trailing slash": {
- topic: tough.permutePath.bind(null, '/foo/bar/'),
- "three things": function (list) {
- assert.deepEqual(list, ['/foo/bar', '/foo', '/']);
- },
- "path matching": function (list) {
- list.forEach(function (e) {
- assert.ok(tough.pathMatch('/foo/bar/', e));
- });
- }
- }
- }
- })
- .export(module);
-
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/bsd-examples.json b/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/bsd-examples.json
deleted file mode 100644
index bc43160d..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/bsd-examples.json
+++ /dev/null
@@ -1,168 +0,0 @@
-[
- {
- "test": "Sat, 15-Apr-17 21:01:22 GMT",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Thu, 19-Apr-2007 16:00:00 GMT",
- "expected": "Thu, 19 Apr 2007 16:00:00 GMT"
- }, {
- "test": "Wed, 25 Apr 2007 21:02:13 GMT",
- "expected": "Wed, 25 Apr 2007 21:02:13 GMT"
- }, {
- "test": "Thu, 19/Apr\\2007 16:00:00 GMT",
- "expected": "Thu, 19 Apr 2007 16:00:00 GMT"
- }, {
- "test": "Fri, 1 Jan 2010 01:01:50 GMT",
- "expected": "Fri, 01 Jan 2010 01:01:50 GMT"
- }, {
- "test": "Wednesday, 1-Jan-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": ", 1-Jan-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": " 1-Jan-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": "1-Jan-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": "Wed,18-Apr-07 22:50:12 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "WillyWonka , 18-Apr-07 22:50:12 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "WillyWonka , 18-Apr-07 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "WillyWonka , 18-apr-07 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Mon, 18-Apr-1977 22:50:13 GMT",
- "expected": "Mon, 18 Apr 1977 22:50:13 GMT"
- }, {
- "test": "Mon, 18-Apr-77 22:50:13 GMT",
- "expected": "Mon, 18 Apr 1977 22:50:13 GMT"
- }, {
- "test": "\"Sat, 15-Apr-17\\\"21:01:22\\\"GMT\"",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Partyday, 18- April-07 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Partyday, 18 - Apri-07 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Wednes, 1-Januar-2003 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2003 00:00:00 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT-2",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT BLAH",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT-0400",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT-0400 (EDT)",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 DST",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 -0400",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 (hello there)",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 11:22:33",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 ::00 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 boink:z 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Sat, 15-Apr-17 91:22:33 21:01:22",
- "expected": null
- }, {
- "test": "Thu Apr 18 22:50:12 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "22:50:12 Thu Apr 18 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu 22:50:12 Apr 18 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu Apr 22:50:12 18 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu Apr 18 22:50:12 2007 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu Apr 18 2007 22:50:12 GMT",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Thu Apr 18 2007 GMT 22:50:12",
- "expected": "Wed, 18 Apr 2007 22:50:12 GMT"
- }, {
- "test": "Sat, 15-Apr-17 21:01:22 GMT",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15-Sat, Apr-17 21:01:22 GMT",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15-Sat, Apr 21:01:22 GMT 17",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15-Sat, Apr 21:01:22 GMT 2017",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15 Apr 21:01:22 2017",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15 17 Apr 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Apr 15 17 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "Apr 15 21:01:22 17",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "2017 April 15 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "15 April 2017 21:01:22",
- "expected": "Sat, 15 Apr 2017 21:01:22 GMT"
- }, {
- "test": "98 April 17 21:01:22",
- "expected": null
- }, {
- "test": "Thu, 012-Aug-2008 20:49:07 GMT",
- "expected": null
- }, {
- "test": "Thu, 12-Aug-31841 20:49:07 GMT",
- "expected": null
- }, {
- "test": "Thu, 12-Aug-9999999999 20:49:07 GMT",
- "expected": null
- }, {
- "test": "Thu, 999999999999-Aug-2007 20:49:07 GMT",
- "expected": null
- }, {
- "test": "Thu, 12-Aug-2007 20:61:99999999999 GMT",
- "expected": null
- }, {
- "test": "IAintNoDateFool",
- "expected": null
- }
-]
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/examples.json b/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/examples.json
deleted file mode 100644
index 61e674d4..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_data/dates/examples.json
+++ /dev/null
@@ -1,48 +0,0 @@
-[
- {
- "test": "Mon, 10-Dec-2007 17:02:24 GMT",
- "expected": "Mon, 10 Dec 2007 17:02:24 GMT"
- }, {
- "test": "Wed, 09 Dec 2009 16:27:23 GMT",
- "expected": "Wed, 09 Dec 2009 16:27:23 GMT"
- }, {
- "test": "Thursday, 01-Jan-1970 00:00:00 GMT",
- "expected": "Thu, 01 Jan 1970 00:00:00 GMT"
- }, {
- "test": "Mon Dec 10 16:32:30 2007 GMT",
- "expected": "Mon, 10 Dec 2007 16:32:30 GMT"
- }, {
- "test": "Wednesday, 01-Jan-10 00:00:00 GMT",
- "expected": "Fri, 01 Jan 2010 00:00:00 GMT"
- }, {
- "test": "Mon, 10-Dec-07 20:35:03 GMT",
- "expected": "Mon, 10 Dec 2007 20:35:03 GMT"
- }, {
- "test": "Wed, 1 Jan 2020 00:00:00 GMT",
- "expected": "Wed, 01 Jan 2020 00:00:00 GMT"
- }, {
- "test": "Saturday, 8-Dec-2012 21:24:09 GMT",
- "expected": "Sat, 08 Dec 2012 21:24:09 GMT"
- }, {
- "test": "Thu, 31 Dec 23:55:55 2037 GMT",
- "expected": "Thu, 31 Dec 2037 23:55:55 GMT"
- }, {
- "test": "Sun, 9 Dec 2012 13:42:05 GMT",
- "expected": "Sun, 09 Dec 2012 13:42:05 GMT"
- }, {
- "test": "Wed Dec 12 2007 08:44:07 GMT-0500 (EST)",
- "expected": "Wed, 12 Dec 2007 08:44:07 GMT"
- }, {
- "test": "Mon, 01-Jan-2011 00: 00:00 GMT",
- "expected": null
- }, {
- "test": "Sun, 1-Jan-1995 00:00:00 GMT",
- "expected": "Sun, 01 Jan 1995 00:00:00 GMT"
- }, {
- "test": "Wednesday, 01-Jan-10 0:0:00 GMT",
- "expected": "Fri, 01 Jan 2010 00:00:00 GMT"
- }, {
- "test": "Thu, 10 Dec 2009 13:57:2 GMT",
- "expected": "Thu, 10 Dec 2009 13:57:02 GMT"
- }
-]
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_data/parser.json b/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_data/parser.json
deleted file mode 100644
index 783f660b..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_data/parser.json
+++ /dev/null
@@ -1,1959 +0,0 @@
-[
- {
- "test": "0001",
- "received": [
- "foo=bar"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0002",
- "received": [
- "foo=bar; Expires=Fri, 07 Aug 2019 08:04:19 GMT"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0003",
- "received": [
- "foo=bar; Expires=Fri, 07 Aug 2007 08:04:19 GMT",
- "foo2=bar2; Expires=Fri, 07 Aug 2017 08:04:19 GMT"
- ],
- "sent": [
- { "name": "foo2", "value": "bar2" }
- ]
- },
- {
- "test": "0004",
- "received": [
- "foo"
- ],
- "sent": []
- },
- {
- "test": "0005",
- "received": [
- "foo=bar; max-age=10000;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0006",
- "received": [
- "foo=bar; max-age=0;"
- ],
- "sent": []
- },
- {
- "test": "0007",
- "received": [
- "foo=bar; version=1;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0008",
- "received": [
- "foo=bar; version=1000;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0009",
- "received": [
- "foo=bar; customvalue=1000;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0010",
- "received": [
- "foo=bar; secure;"
- ],
- "sent": []
- },
- {
- "test": "0011",
- "received": [
- "foo=bar; customvalue=\"1000 or more\";"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0012",
- "received": [
- "foo=bar; customvalue=\"no trailing semicolon\""
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "0013",
- "received": [
- "foo=bar",
- "foo=qux"
- ],
- "sent": [
- { "name": "foo", "value": "qux" }
- ]
- },
- {
- "test": "0014",
- "received": [
- "foo1=bar",
- "foo2=qux"
- ],
- "sent": [
- { "name": "foo1", "value": "bar" },
- { "name": "foo2", "value": "qux" }
- ]
- },
- {
- "test": "0015",
- "received": [
- "a=b",
- "z=y"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "z", "value": "y" }
- ]
- },
- {
- "test": "0016",
- "received": [
- "z=y",
- "a=b"
- ],
- "sent": [
- { "name": "z", "value": "y" },
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "0017",
- "received": [
- "z=y, a=b"
- ],
- "sent": [
- { "name": "z", "value": "y, a=b" }
- ]
- },
- {
- "test": "0018",
- "received": [
- "z=y; foo=bar, a=b"
- ],
- "sent": [
- { "name": "z", "value": "y" }
- ]
- },
- {
- "test": "0019",
- "received": [
- "foo=b;max-age=3600, c=d;path=/"
- ],
- "sent": [
- { "name": "foo", "value": "b" }
- ]
- },
- {
- "test": "0020",
- "received": [
- "a=b",
- "=",
- "c=d"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "c", "value": "d" }
- ]
- },
- {
- "test": "0021",
- "received": [
- "a=b",
- "=x",
- "c=d"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "c", "value": "d" }
- ]
- },
- {
- "test": "0022",
- "received": [
- "a=b",
- "x=",
- "c=d"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "x", "value": "" },
- { "name": "c", "value": "d" }
- ]
- },
- {
- "test": "0023",
- "received": [
- "foo",
- ""
- ],
- "sent": []
- },
- {
- "test": "0024",
- "received": [
- "foo",
- "="
- ],
- "sent": []
- },
- {
- "test": "0025",
- "received": [
- "foo",
- "; bar"
- ],
- "sent": []
- },
- {
- "test": "0026",
- "received": [
- "foo",
- " "
- ],
- "sent": []
- },
- {
- "test": "0027",
- "received": [
- "foo",
- "bar"
- ],
- "sent": []
- },
- {
- "test": "0028",
- "received": [
- "foo",
- "\t"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0001",
- "received": [
- "foo=bar; Secure"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0002",
- "received": [
- "foo=bar; seCURe"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0003",
- "received": [
- "foo=bar; \"Secure\""
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0004",
- "received": [
- "foo=bar; Secure="
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0005",
- "received": [
- "foo=bar; Secure=aaaa"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0006",
- "received": [
- "foo=bar; Secure qux"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0007",
- "received": [
- "foo=bar; Secure =aaaaa"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0008",
- "received": [
- "foo=bar; Secure= aaaaa"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0009",
- "received": [
- "foo=bar; Secure; qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0010",
- "received": [
- "foo=bar; Secure;qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0011",
- "received": [
- "foo=bar; Secure ; qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0012",
- "received": [
- "foo=bar; Secure"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0013",
- "received": [
- "foo=bar; Secure ;"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0014",
- "received": [
- "foo=bar; Path"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0015",
- "received": [
- "foo=bar; Path="
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0016",
- "received": [
- "foo=bar; Path=/"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0017",
- "received": [
- "foo=bar; Path=/qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0018",
- "received": [
- "foo=bar; Path =/qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0019",
- "received": [
- "foo=bar; Path= /qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0020",
- "received": [
- "foo=bar; Path=/qux ; taz"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0021",
- "received": [
- "foo=bar; Path=/qux; Path=/"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0022",
- "received": [
- "foo=bar; Path=/; Path=/qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0023",
- "received": [
- "foo=bar; Path=/qux; Path=/cookie-parser-result"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "ATTRIBUTE0024",
- "received": [
- "foo=bar; Path=/cookie-parser-result; Path=/qux"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0025",
- "received": [
- "foo=bar; qux; Secure"
- ],
- "sent": []
- },
- {
- "test": "ATTRIBUTE0026",
- "received": [
- "foo=bar; qux=\"aaa;bbb\"; Secure"
- ],
- "sent": []
- },
- {
- "test": "CHARSET0001",
- "received": [
- "foo=\u6625\u8282\u56de\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c"
- ],
- "sent": [
- { "name": "foo", "value": "\u6625\u8282\u56de\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c" }
- ]
- },
- {
- "test": "CHARSET0002",
- "received": [
- "\u6625\u8282\u56de=\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c"
- ],
- "sent": [
- { "name": "\u6625\u8282\u56de", "value": "\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c" }
- ]
- },
- {
- "test": "CHARSET0003",
- "received": [
- "\u6625\u8282\u56de=\u5bb6\u8def\u00b7\u6625\u8fd0; \u5b8c\u5168\u624b\u518c"
- ],
- "sent": [
- { "name": "\u6625\u8282\u56de", "value": "\u5bb6\u8def\u00b7\u6625\u8fd0" }
- ]
- },
- {
- "test": "CHARSET0004",
- "received": [
- "foo=\"\u6625\u8282\u56de\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c\""
- ],
- "sent": [
- { "name": "foo", "value": "\"\u6625\u8282\u56de\u5bb6\u8def\u00b7\u6625\u8fd0\u5b8c\u5168\u624b\u518c\"" }
- ]
- },
- {
- "test": "CHROMIUM0001",
- "received": [
- "a=b"
- ],
- "sent": [
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "CHROMIUM0002",
- "received": [
- "aBc=\"zzz \" ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zzz \"" }
- ]
- },
- {
- "test": "CHROMIUM0003",
- "received": [
- "aBc=\"zzz \" ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zzz \"" }
- ]
- },
- {
- "test": "CHROMIUM0004",
- "received": [
- "aBc=\"zz;pp\" ; ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zz" }
- ]
- },
- {
- "test": "CHROMIUM0005",
- "received": [
- "aBc=\"zz ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zz" }
- ]
- },
- {
- "test": "CHROMIUM0006",
- "received": [
- "aBc=\"zzz \" \"ppp\" ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zzz \" \"ppp\"" }
- ]
- },
- {
- "test": "CHROMIUM0007",
- "received": [
- "aBc=\"zzz \" \"ppp\" ;"
- ],
- "sent": [
- { "name": "aBc", "value": "\"zzz \" \"ppp\"" }
- ]
- },
- {
- "test": "CHROMIUM0008",
- "received": [
- "aBc=A\"B ;"
- ],
- "sent": [
- { "name": "aBc", "value": "A\"B" }
- ]
- },
- {
- "test": "CHROMIUM0009",
- "received": [
- "BLAHHH; path=/;"
- ],
- "sent": []
- },
- {
- "test": "CHROMIUM0010",
- "received": [
- "\"BLA\\\"HHH\"; path=/;"
- ],
- "sent": []
- },
- {
- "test": "CHROMIUM0011",
- "received": [
- "a=\"B"
- ],
- "sent": [
- { "name": "a", "value": "\"B" }
- ]
- },
- {
- "test": "CHROMIUM0012",
- "received": [
- "=ABC"
- ],
- "sent": []
- },
- {
- "test": "CHROMIUM0013",
- "received": [
- "ABC=; path = /"
- ],
- "sent": [
- { "name": "ABC", "value": "" }
- ]
- },
- {
- "test": "CHROMIUM0014",
- "received": [
- " A = BC ;foo;;; bar"
- ],
- "sent": [
- { "name": "A", "value": "BC" }
- ]
- },
- {
- "test": "CHROMIUM0015",
- "received": [
- " A=== BC ;foo;;; bar"
- ],
- "sent": [
- { "name": "A", "value": "== BC" }
- ]
- },
- {
- "test": "CHROMIUM0016",
- "received": [
- "foo=\"zohNumRKgI0oxyhSsV3Z7D\" ; expires=Sun, 18-Apr-2027 21:06:29 GMT ; path=/ ; "
- ],
- "sent": [
- { "name": "foo", "value": "\"zohNumRKgI0oxyhSsV3Z7D\"" }
- ]
- },
- {
- "test": "CHROMIUM0017",
- "received": [
- "foo=zohNumRKgI0oxyhSsV3Z7D ; expires=Sun, 18-Apr-2027 21:06:29 GMT ; path=/ ; "
- ],
- "sent": [
- { "name": "foo", "value": "zohNumRKgI0oxyhSsV3Z7D" }
- ]
- },
- {
- "test": "CHROMIUM0018",
- "received": [
- " "
- ],
- "sent": []
- },
- {
- "test": "CHROMIUM0019",
- "received": [
- "a=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- ],
- "sent": [
- { "name": "a", "value": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }
- ]
- },
- {
- "test": "CHROMIUM0021",
- "received": [
- ""
- ],
- "sent": []
- },
- {
- "test": "COMMA0001",
- "received": [
- "foo=bar, baz=qux"
- ],
- "sent": [
- { "name": "foo", "value": "bar, baz=qux" }
- ]
- },
- {
- "test": "COMMA0002",
- "received": [
- "foo=\"bar, baz=qux\""
- ],
- "sent": [
- { "name": "foo", "value": "\"bar, baz=qux\"" }
- ]
- },
- {
- "test": "COMMA0003",
- "received": [
- "foo=bar; b,az=qux"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "COMMA0004",
- "received": [
- "foo=bar; baz=q,ux"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "COMMA0005",
- "received": [
- "foo=bar; Max-Age=50,399"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "COMMA0006",
- "received": [
- "foo=bar; Expires=Fri, 07 Aug 2019 08:04:19 GMT"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "COMMA0007",
- "received": [
- "foo=bar; Expires=Fri 07 Aug 2019 08:04:19 GMT, baz=qux"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DISABLED_CHROMIUM0020",
- "received": [
- "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- ],
- "sent": []
- },
- {
- "test": "DISABLED_CHROMIUM0022",
- "received": [
- "AAA=BB\u0000ZYX"
- ],
- "sent": [
- { "name": "AAA", "value": "BB" }
- ]
- },
- {
- "test": "DISABLED_CHROMIUM0023",
- "received": [
- "AAA=BB\rZYX"
- ],
- "sent": [
- { "name": "AAA", "value": "BB" }
- ]
- },
- {
- "test": "DISABLED_PATH0029",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/bar"
- ],
- "sent-to": "/cookie-parser-result/f%6Fo/bar?disabled-path0029",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0001",
- "received": [
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0001",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0002",
- "received": [
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0002",
- "sent": []
- },
- {
- "test": "DOMAIN0003",
- "received": [
- "foo=bar; domain=.home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0003",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0004",
- "received": [
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?domain0004",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0005",
- "received": [
- "foo=bar; domain=.home.example.org"
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?domain0005",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0006",
- "received": [
- "foo=bar; domain=.home.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0006",
- "sent": []
- },
- {
- "test": "DOMAIN0007",
- "received": [
- "foo=bar; domain=sibling.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0007",
- "sent": []
- },
- {
- "test": "DOMAIN0008",
- "received": [
- "foo=bar; domain=.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0008",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0009",
- "received": [
- "foo=bar; domain=example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0009",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0010",
- "received": [
- "foo=bar; domain=..home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0010",
- "sent": []
- },
- {
- "test": "DOMAIN0011",
- "received": [
- "foo=bar; domain=home..example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0011",
- "sent": []
- },
- {
- "test": "DOMAIN0012",
- "received": [
- "foo=bar; domain= .home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0012",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0013",
- "received": [
- "foo=bar; domain= . home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0013",
- "sent": []
- },
- {
- "test": "DOMAIN0014",
- "received": [
- "foo=bar; domain=home.example.org."
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0014",
- "sent": []
- },
- {
- "test": "DOMAIN0015",
- "received": [
- "foo=bar; domain=home.example.org.."
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0015",
- "sent": []
- },
- {
- "test": "DOMAIN0016",
- "received": [
- "foo=bar; domain=home.example.org ."
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0016",
- "sent": []
- },
- {
- "test": "DOMAIN0017",
- "received": [
- "foo=bar; domain=.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0017",
- "sent": []
- },
- {
- "test": "DOMAIN0018",
- "received": [
- "foo=bar; domain=.org."
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0018",
- "sent": []
- },
- {
- "test": "DOMAIN0019",
- "received": [
- "foo=bar; domain=home.example.org",
- "foo2=bar2; domain=.home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0019",
- "sent": [
- { "name": "foo", "value": "bar" },
- { "name": "foo2", "value": "bar2" }
- ]
- },
- {
- "test": "DOMAIN0020",
- "received": [
- "foo2=bar2; domain=.home.example.org",
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0020",
- "sent": [
- { "name": "foo2", "value": "bar2" },
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0021",
- "received": [
- "foo=bar; domain=\"home.example.org\""
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0021",
- "sent": []
- },
- {
- "test": "DOMAIN0022",
- "received": [
- "foo=bar; domain=home.example.org",
- "foo2=bar2; domain=.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0022",
- "sent": [
- { "name": "foo", "value": "bar" },
- { "name": "foo2", "value": "bar2" }
- ]
- },
- {
- "test": "DOMAIN0023",
- "received": [
- "foo2=bar2; domain=.example.org",
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0023",
- "sent": [
- { "name": "foo2", "value": "bar2" },
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0024",
- "received": [
- "foo=bar; domain=.example.org; domain=home.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0024",
- "sent": []
- },
- {
- "test": "DOMAIN0025",
- "received": [
- "foo=bar; domain=home.example.org; domain=.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0025",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0026",
- "received": [
- "foo=bar; domain=home.eXaMpLe.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0026",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0027",
- "received": [
- "foo=bar; domain=home.example.org:8888"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0027",
- "sent": []
- },
- {
- "test": "DOMAIN0028",
- "received": [
- "foo=bar; domain=subdomain.home.example.org"
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?domain0028",
- "sent": []
- },
- {
- "test": "DOMAIN0029",
- "received": [
- "foo=bar"
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?domain0029",
- "sent": []
- },
- {
- "test": "DOMAIN0031",
- "received": [
- "foo=bar; domain=home.example.org; domain=.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0031",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0033",
- "received": [
- "foo=bar; domain=home.example.org"
- ],
- "sent-to": "http://hoMe.eXaMplE.org:8888/cookie-parser-result?domain0033",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0034",
- "received": [
- "foo=bar; domain=home.example.org; domain=home.example.com"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0034",
- "sent": []
- },
- {
- "test": "DOMAIN0035",
- "received": [
- "foo=bar; domain=home.example.com; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0035",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0036",
- "received": [
- "foo=bar; domain=home.example.org; domain=home.example.com; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0036",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0037",
- "received": [
- "foo=bar; domain=home.example.com; domain=home.example.org; domain=home.example.com"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0037",
- "sent": []
- },
- {
- "test": "DOMAIN0038",
- "received": [
- "foo=bar; domain=home.example.org; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0038",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0039",
- "received": [
- "foo=bar; domain=home.example.org; domain=example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0039",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0040",
- "received": [
- "foo=bar; domain=example.org; domain=home.example.org"
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?domain0040",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "DOMAIN0041",
- "received": [
- "foo=bar; domain=.sibling.example.org"
- ],
- "sent-to": "http://sibling.example.org:8888/cookie-parser-result?domain0041",
- "sent": []
- },
- {
- "test": "DOMAIN0042",
- "received": [
- "foo=bar; domain=.sibling.home.example.org"
- ],
- "sent-to": "http://sibling.home.example.org:8888/cookie-parser-result?domain0042",
- "sent": []
- },
- {
- "test": "MOZILLA0001",
- "received": [
- "foo=bar; max-age=-1"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0002",
- "received": [
- "foo=bar; max-age=0"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0003",
- "received": [
- "foo=bar; expires=Thu, 10 Apr 1980 16:33:12 GMT"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0004",
- "received": [
- "foo=bar; max-age=60"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0005",
- "received": [
- "foo=bar; max-age=-20"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0006",
- "received": [
- "foo=bar; max-age=60"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0007",
- "received": [
- "foo=bar; expires=Thu, 10 Apr 1980 16:33:12 GMT"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0008",
- "received": [
- "foo=bar; max-age=60",
- "foo1=bar; max-age=60"
- ],
- "sent": [
- { "name": "foo", "value": "bar" },
- { "name": "foo1", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0009",
- "received": [
- "foo=bar; max-age=60",
- "foo1=bar; max-age=60",
- "foo=differentvalue; max-age=0"
- ],
- "sent": [
- { "name": "foo1", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0010",
- "received": [
- "foo=bar; max-age=60",
- "foo1=bar; max-age=60",
- "foo=differentvalue; max-age=0",
- "foo2=evendifferentvalue; max-age=0"
- ],
- "sent": [
- { "name": "foo1", "value": "bar" }
- ]
- },
- {
- "test": "MOZILLA0011",
- "received": [
- "test=parser; domain=.parser.test; ;; ;=; ,,, ===,abc,=; abracadabra! max-age=20;=;;"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0012",
- "received": [
- "test=\"fubar! = foo;bar\\\";\" parser; max-age=6",
- "five; max-age=2.63,"
- ],
- "sent": [
- { "name": "test", "value": "\"fubar! = foo" }
- ]
- },
- {
- "test": "MOZILLA0013",
- "received": [
- "test=kill; max-age=0",
- "five; max-age=0"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0014",
- "received": [
- "six"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0015",
- "received": [
- "six",
- "seven"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0016",
- "received": [
- "six",
- "seven",
- " =eight"
- ],
- "sent": []
- },
- {
- "test": "MOZILLA0017",
- "received": [
- "six",
- "seven",
- " =eight",
- "test=six"
- ],
- "sent": [
- { "name": "test", "value": "six" }
- ]
- },
- {
- "test": "NAME0001",
- "received": [
- "a=bar"
- ],
- "sent": [
- { "name": "a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0002",
- "received": [
- "1=bar"
- ],
- "sent": [
- { "name": "1", "value": "bar" }
- ]
- },
- {
- "test": "NAME0003",
- "received": [
- "$=bar"
- ],
- "sent": [
- { "name": "$", "value": "bar" }
- ]
- },
- {
- "test": "NAME0004",
- "received": [
- "!a=bar"
- ],
- "sent": [
- { "name": "!a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0005",
- "received": [
- "@a=bar"
- ],
- "sent": [
- { "name": "@a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0006",
- "received": [
- "#a=bar"
- ],
- "sent": [
- { "name": "#a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0007",
- "received": [
- "$a=bar"
- ],
- "sent": [
- { "name": "$a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0008",
- "received": [
- "%a=bar"
- ],
- "sent": [
- { "name": "%a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0009",
- "received": [
- "^a=bar"
- ],
- "sent": [
- { "name": "^a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0010",
- "received": [
- "&a=bar"
- ],
- "sent": [
- { "name": "&a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0011",
- "received": [
- "*a=bar"
- ],
- "sent": [
- { "name": "*a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0012",
- "received": [
- "(a=bar"
- ],
- "sent": [
- { "name": "(a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0013",
- "received": [
- ")a=bar"
- ],
- "sent": [
- { "name": ")a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0014",
- "received": [
- "-a=bar"
- ],
- "sent": [
- { "name": "-a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0015",
- "received": [
- "_a=bar"
- ],
- "sent": [
- { "name": "_a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0016",
- "received": [
- "+=bar"
- ],
- "sent": [
- { "name": "+", "value": "bar" }
- ]
- },
- {
- "test": "NAME0017",
- "received": [
- "=a=bar"
- ],
- "sent": []
- },
- {
- "test": "NAME0018",
- "received": [
- "a =bar"
- ],
- "sent": [
- { "name": "a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0019",
- "received": [
- "\"a=bar"
- ],
- "sent": [
- { "name": "\"a", "value": "bar" }
- ]
- },
- {
- "test": "NAME0020",
- "received": [
- "\"a=b\"=bar"
- ],
- "sent": [
- { "name": "\"a", "value": "b\"=bar" }
- ]
- },
- {
- "test": "NAME0021",
- "received": [
- "\"a=b\"=bar",
- "\"a=qux"
- ],
- "sent": [
- { "name": "\"a", "value": "qux" }
- ]
- },
- {
- "test": "NAME0022",
- "received": [
- " foo=bar"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "NAME0023",
- "received": [
- "foo;bar=baz"
- ],
- "sent": []
- },
- {
- "test": "NAME0024",
- "received": [
- "$Version=1; foo=bar"
- ],
- "sent": [
- { "name": "$Version", "value": "1" }
- ]
- },
- {
- "test": "NAME0025",
- "received": [
- "===a=bar"
- ],
- "sent": []
- },
- {
- "test": "NAME0026",
- "received": [
- "foo=bar "
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "NAME0027",
- "received": [
- "foo=bar ;"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "NAME0028",
- "received": [
- "=a"
- ],
- "sent": []
- },
- {
- "test": "NAME0029",
- "received": [
- "="
- ],
- "sent": []
- },
- {
- "test": "NAME0030",
- "received": [
- "foo bar=baz"
- ],
- "sent": [
- { "name": "foo bar", "value": "baz" }
- ]
- },
- {
- "test": "NAME0031",
- "received": [
- "\"foo;bar\"=baz"
- ],
- "sent": []
- },
- {
- "test": "NAME0032",
- "received": [
- "\"foo\\\"bar;baz\"=qux"
- ],
- "sent": []
- },
- {
- "test": "NAME0033",
- "received": [
- "=foo=bar",
- "aaa"
- ],
- "sent": []
- },
- {
- "test": "OPTIONAL_DOMAIN0030",
- "received": [
- "foo=bar; domain="
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?optional-domain0030",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "OPTIONAL_DOMAIN0041",
- "received": [
- "foo=bar; domain=example.org; domain="
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?optional-domain0041",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "OPTIONAL_DOMAIN0042",
- "received": [
- "foo=bar; domain=foo.example.org; domain="
- ],
- "sent-to": "http://home.example.org:8888/cookie-parser-result?optional-domain0042",
- "sent": []
- },
- {
- "test": "OPTIONAL_DOMAIN0043",
- "received": [
- "foo=bar; domain=foo.example.org; domain="
- ],
- "sent-to": "http://subdomain.home.example.org:8888/cookie-parser-result?optional-domain0043",
- "sent": []
- },
- {
- "test": "ORDERING0001",
- "received": [
- "key=val0;",
- "key=val1; path=/cookie-parser-result",
- "key=val2; path=/",
- "key=val3; path=/bar",
- "key=val4; domain=.example.org",
- "key=val5; domain=.example.org; path=/cookie-parser-result/foo"
- ],
- "sent-to": "/cookie-parser-result/foo/baz?ordering0001",
- "sent": [
- { "name": "key", "value": "val5" },
- { "name": "key", "value": "val1" },
- { "name": "key", "value": "val2" },
- { "name": "key", "value": "val4" }
- ]
- },
- {
- "test": "PATH0001",
- "received": [
- "a=b; path=/",
- "x=y; path=/cookie-parser-result"
- ],
- "sent": [
- { "name": "x", "value": "y" },
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "PATH0002",
- "received": [
- "a=b; path=/cookie-parser-result",
- "x=y; path=/"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "x", "value": "y" }
- ]
- },
- {
- "test": "PATH0003",
- "received": [
- "x=y; path=/",
- "a=b; path=/cookie-parser-result"
- ],
- "sent": [
- { "name": "a", "value": "b" },
- { "name": "x", "value": "y" }
- ]
- },
- {
- "test": "PATH0004",
- "received": [
- "x=y; path=/cookie-parser-result",
- "a=b; path=/"
- ],
- "sent": [
- { "name": "x", "value": "y" },
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "PATH0005",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo"
- ],
- "sent": []
- },
- {
- "test": "PATH0006",
- "received": [
- "foo=bar",
- "foo=qux; path=/cookie-parser-result/foo"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0007",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo"
- ],
- "sent-to": "/cookie-parser-result/foo?path0007",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0008",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo"
- ],
- "sent-to": "/cookie-parser-result/bar?path0008",
- "sent": []
- },
- {
- "test": "PATH0009",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux"
- ],
- "sent-to": "/cookie-parser-result/foo?path0009",
- "sent": []
- },
- {
- "test": "PATH0010",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0010",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0011",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux"
- ],
- "sent-to": "/cookie-parser-result/bar/qux?path0011",
- "sent": []
- },
- {
- "test": "PATH0012",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux"
- ],
- "sent-to": "/cookie-parser-result/foo/baz?path0012",
- "sent": []
- },
- {
- "test": "PATH0013",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux/"
- ],
- "sent-to": "/cookie-parser-result/foo/baz?path0013",
- "sent": []
- },
- {
- "test": "PATH0014",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux/"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0014",
- "sent": []
- },
- {
- "test": "PATH0015",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux/"
- ],
- "sent-to": "/cookie-parser-result/foo/qux/?path0015",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0016",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0016",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0017",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/"
- ],
- "sent-to": "/cookie-parser-result/foo//qux?path0017",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0018",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/"
- ],
- "sent-to": "/cookie-parser-result/fooqux?path0018",
- "sent": []
- },
- {
- "test": "PATH0019",
- "received": [
- "foo=bar; path"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0020",
- "received": [
- "foo=bar; path="
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0021",
- "received": [
- "foo=bar; path=/"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0022",
- "received": [
- "foo=bar; path= /"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0023",
- "received": [
- "foo=bar; Path=/cookie-PARSER-result"
- ],
- "sent": []
- },
- {
- "test": "PATH0024",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux?"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0024",
- "sent": []
- },
- {
- "test": "PATH0025",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux#"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0025",
- "sent": []
- },
- {
- "test": "PATH0026",
- "received": [
- "foo=bar; path=/cookie-parser-result/foo/qux;"
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0026",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0027",
- "received": [
- "foo=bar; path=\"/cookie-parser-result/foo/qux;\""
- ],
- "sent-to": "/cookie-parser-result/foo/qux?path0027",
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0028",
- "received": [
- "foo=bar; path=/cookie-parser-result/f%6Fo/bar"
- ],
- "sent-to": "/cookie-parser-result/foo/bar?path0028",
- "sent": []
- },
- {
- "test": "PATH0029",
- "received": [
- "a=b; \tpath\t=\t/cookie-parser-result\t",
- "x=y; \tpath\t=\t/book\t"
- ],
- "sent": [
- { "name": "a", "value": "b" }
- ]
- },
- {
- "test": "PATH0030",
- "received": [
- "foo=bar; path=/dog; path="
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "PATH0031",
- "received": [
- "foo=bar; path=; path=/dog"
- ],
- "sent": []
- },
- {
- "test": "PATH0032",
- "received": [
- "foo=bar; path=/cookie-parser-result",
- "foo=qux; path=/cookie-parser-result/"
- ],
- "sent-to": "/cookie-parser-result/dog?path0032",
- "sent": [
- { "name": "foo", "value": "qux" },
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "VALUE0001",
- "received": [
- "foo= bar"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- },
- {
- "test": "VALUE0002",
- "received": [
- "foo=\"bar\""
- ],
- "sent": [
- { "name": "foo", "value": "\"bar\"" }
- ]
- },
- {
- "test": "VALUE0003",
- "received": [
- "foo=\" bar \""
- ],
- "sent": [
- { "name": "foo", "value": "\" bar \"" }
- ]
- },
- {
- "test": "VALUE0004",
- "received": [
- "foo=\"bar;baz\""
- ],
- "sent": [
- { "name": "foo", "value": "\"bar" }
- ]
- },
- {
- "test": "VALUE0005",
- "received": [
- "foo=\"bar=baz\""
- ],
- "sent": [
- { "name": "foo", "value": "\"bar=baz\"" }
- ]
- },
- {
- "test": "VALUE0006",
- "received": [
- "\tfoo\t=\tbar\t \t;\tttt"
- ],
- "sent": [
- { "name": "foo", "value": "bar" }
- ]
- }
-]
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_test.js b/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_test.js
deleted file mode 100644
index 8bd41dd6..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/ietf_test.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var fs = require('fs');
-var path = require('path');
-var url = require('url');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-
-function readJson(filePath) {
- filePath = path.join(__dirname, filePath);
- return JSON.parse(fs.readFileSync(filePath).toString());
-}
-
-function setGetCookieVows() {
- var theVows = {};
- var data = readJson('./ietf_data/parser.json');
-
- data.forEach(function (testCase) {
- theVows[testCase.test] = function () {
- var jar = new CookieJar();
- var expected = testCase['sent']
- var sentFrom = 'http://home.example.org/cookie-parser?' + testCase.test;
- var sentTo = testCase['sent-to'] ?
- url.resolve('http://home.example.org', testCase['sent-to']) :
- 'http://home.example.org/cookie-parser-result?' + testCase.test;
-
- testCase['received'].forEach(function (cookieStr) {
- jar.setCookieSync(cookieStr, sentFrom, {ignoreError: true});
- });
-
- var actual = jar.getCookiesSync(sentTo,{sort:true});
-
- assert.strictEqual(actual.length, expected.length);
-
- actual.forEach(function (actualCookie, idx) {
- var expectedCookie = expected[idx];
- assert.strictEqual(actualCookie.key, expectedCookie.name);
- assert.strictEqual(actualCookie.value, expectedCookie.value);
- });
- };
- });
-
- return {'Set/get cookie tests': theVows};
-}
-
-function dateVows() {
- var theVows = {};
-
- [
- './ietf_data/dates/bsd-examples.json',
- './ietf_data/dates/examples.json'
- ].forEach(function (filePath) {
- var data = readJson(filePath);
- var fileName = path.basename(filePath);
-
- data.forEach(function (testCase) {
- theVows[fileName + ' : ' + testCase.test] = function () {
- var actual = tough.parseDate(testCase.test);
- actual = actual ? actual.toUTCString() : null;
- assert.strictEqual(actual, testCase.expected);
- };
- });
- });
-
- return {'Date': theVows};
-}
-
-vows
- .describe('IETF http state tests')
- .addBatch(setGetCookieVows())
- .addBatch(dateVows())
- .export(module);
diff --git a/scripts/node_modules/request/node_modules/tough-cookie/test/jar_serialization_test.js b/scripts/node_modules/request/node_modules/tough-cookie/test/jar_serialization_test.js
deleted file mode 100644
index 277c90c8..00000000
--- a/scripts/node_modules/request/node_modules/tough-cookie/test/jar_serialization_test.js
+++ /dev/null
@@ -1,348 +0,0 @@
-/*!
- * Copyright (c) 2015, Salesforce.com, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of Salesforce.com nor the names of its contributors may
- * be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-'use strict';
-var vows = require('vows');
-var assert = require('assert');
-var tough = require('../lib/cookie');
-var Cookie = tough.Cookie;
-var CookieJar = tough.CookieJar;
-var Store = tough.Store;
-var MemoryCookieStore = tough.MemoryCookieStore;
-var VERSION = require('../package.json').version;
-
-var domains = ['example.com','www.example.com','example.net'];
-var paths = ['/','/foo','/foo/bar'];
-
-var isInteger = Number.isInteger || function(value) {
- // Node 0.10 (still supported) doesn't have Number.isInteger
- // from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
- return typeof value === "number" &&
- isFinite(value) &&
- Math.floor(value) === value;
-};
-
-function setUp(context) {
- context.now = new Date();
- context.nowISO = context.now.toISOString();
- context.expires = new Date(context.now.getTime() + 86400000);
-
- var c, domain;
- context.jar = new CookieJar();
-
- context.totalCookies = 0;
-
- // Do paths first since the MemoryCookieStore index is domain at the top
- // level. This should cause the preservation of creation order in
- // getAllCookies to be exercised.
- for (var i = 0; i= this.maxSockets) {
- // We are over limit so we'll add it to the queue.
- self.requests.push({host: options.host, port: options.port, request: req})
- return
- }
-
- // If we are under maxSockets create a new one.
- self.createConnection({host: options.host, port: options.port, request: req})
-}
-
-TunnelingAgent.prototype.createConnection = function createConnection(pending) {
- var self = this
-
- self.createSocket(pending, function(socket) {
- socket.on('free', onFree)
- socket.on('close', onCloseOrRemove)
- socket.on('agentRemove', onCloseOrRemove)
- pending.request.onSocket(socket)
-
- function onFree() {
- self.emit('free', socket, pending.host, pending.port)
- }
-
- function onCloseOrRemove(err) {
- self.removeSocket(socket)
- socket.removeListener('free', onFree)
- socket.removeListener('close', onCloseOrRemove)
- socket.removeListener('agentRemove', onCloseOrRemove)
- }
- })
-}
-
-TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
- var self = this
- var placeholder = {}
- self.sockets.push(placeholder)
-
- var connectOptions = mergeOptions({}, self.proxyOptions,
- { method: 'CONNECT'
- , path: options.host + ':' + options.port
- , agent: false
- }
- )
- if (connectOptions.proxyAuth) {
- connectOptions.headers = connectOptions.headers || {}
- connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
- new Buffer(connectOptions.proxyAuth).toString('base64')
- }
-
- debug('making CONNECT request')
- var connectReq = self.request(connectOptions)
- connectReq.useChunkedEncodingByDefault = false // for v0.6
- connectReq.once('response', onResponse) // for v0.6
- connectReq.once('upgrade', onUpgrade) // for v0.6
- connectReq.once('connect', onConnect) // for v0.7 or later
- connectReq.once('error', onError)
- connectReq.end()
-
- function onResponse(res) {
- // Very hacky. This is necessary to avoid http-parser leaks.
- res.upgrade = true
- }
-
- function onUpgrade(res, socket, head) {
- // Hacky.
- process.nextTick(function() {
- onConnect(res, socket, head)
- })
- }
-
- function onConnect(res, socket, head) {
- connectReq.removeAllListeners()
- socket.removeAllListeners()
-
- if (res.statusCode === 200) {
- assert.equal(head.length, 0)
- debug('tunneling connection has established')
- self.sockets[self.sockets.indexOf(placeholder)] = socket
- cb(socket)
- } else {
- debug('tunneling socket could not be established, statusCode=%d', res.statusCode)
- var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode)
- error.code = 'ECONNRESET'
- options.request.emit('error', error)
- self.removeSocket(placeholder)
- }
- }
-
- function onError(cause) {
- connectReq.removeAllListeners()
-
- debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack)
- var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message)
- error.code = 'ECONNRESET'
- options.request.emit('error', error)
- self.removeSocket(placeholder)
- }
-}
-
-TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
- var pos = this.sockets.indexOf(socket)
- if (pos === -1) return
-
- this.sockets.splice(pos, 1)
-
- var pending = this.requests.shift()
- if (pending) {
- // If we have pending requests and a socket gets closed a new one
- // needs to be created to take over in the pool for the one that closed.
- this.createConnection(pending)
- }
-}
-
-function createSecureSocket(options, cb) {
- var self = this
- TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
- // 0 is dummy port for v0.6
- var secureSocket = tls.connect(0, mergeOptions({}, self.options,
- { servername: options.host
- , socket: socket
- }
- ))
- self.sockets[self.sockets.indexOf(socket)] = secureSocket
- cb(secureSocket)
- })
-}
-
-
-function mergeOptions(target) {
- for (var i = 1, len = arguments.length; i < len; ++i) {
- var overrides = arguments[i]
- if (typeof overrides === 'object') {
- var keys = Object.keys(overrides)
- for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
- var k = keys[j]
- if (overrides[k] !== undefined) {
- target[k] = overrides[k]
- }
- }
- }
- }
- return target
-}
-
-
-var debug
-if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
- debug = function() {
- var args = Array.prototype.slice.call(arguments)
- if (typeof args[0] === 'string') {
- args[0] = 'TUNNEL: ' + args[0]
- } else {
- args.unshift('TUNNEL:')
- }
- console.error.apply(console, args)
- }
-} else {
- debug = function() {}
-}
-exports.debug = debug // for test
diff --git a/scripts/node_modules/request/node_modules/tunnel-agent/package.json b/scripts/node_modules/request/node_modules/tunnel-agent/package.json
deleted file mode 100644
index 77c19da8..00000000
--- a/scripts/node_modules/request/node_modules/tunnel-agent/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com",
- "url": "http://www.futurealoof.com"
- },
- "name": "tunnel-agent",
- "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.",
- "version": "0.4.1",
- "repository": {
- "url": "git+https://github.com/mikeal/tunnel-agent.git"
- },
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {},
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "gitHead": "912a7a6d00e10ec76baf9c9369de280fa5badef3",
- "bugs": {
- "url": "https://github.com/mikeal/tunnel-agent/issues"
- },
- "homepage": "https://github.com/mikeal/tunnel-agent#readme",
- "_id": "tunnel-agent@0.4.1",
- "scripts": {},
- "_shasum": "bbeecff4d679ce753db9462761a88dfcec3c5ab3",
- "_from": "tunnel-agent@>=0.4.0 <0.5.0",
- "_npmVersion": "2.11.2",
- "_nodeVersion": "0.12.5",
- "_npmUser": {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- },
- "dist": {
- "shasum": "bbeecff4d679ce753db9462761a88dfcec3c5ab3",
- "tarball": "http://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz"
- },
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- {
- "name": "nylen",
- "email": "jnylen@gmail.com"
- },
- {
- "name": "fredkschott",
- "email": "fkschott@gmail.com"
- },
- {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/request/package.json b/scripts/node_modules/request/package.json
deleted file mode 100644
index 3cca1cef..00000000
--- a/scripts/node_modules/request/package.json
+++ /dev/null
@@ -1,111 +0,0 @@
-{
- "name": "request",
- "description": "Simplified HTTP request client.",
- "tags": [
- "http",
- "simple",
- "util",
- "utility"
- ],
- "version": "2.61.0",
- "author": {
- "name": "Mikeal Rogers",
- "email": "mikeal.rogers@gmail.com"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/request/request.git"
- },
- "bugs": {
- "url": "http://github.com/request/request/issues"
- },
- "license": "Apache-2.0",
- "engines": {
- "node": ">=0.8.0"
- },
- "main": "index.js",
- "dependencies": {
- "bl": "~1.0.0",
- "caseless": "~0.11.0",
- "extend": "~3.0.0",
- "forever-agent": "~0.6.0",
- "form-data": "~1.0.0-rc1",
- "json-stringify-safe": "~5.0.0",
- "mime-types": "~2.1.2",
- "node-uuid": "~1.4.0",
- "qs": "~4.0.0",
- "tunnel-agent": "~0.4.0",
- "tough-cookie": ">=0.12.0",
- "http-signature": "~0.11.0",
- "oauth-sign": "~0.8.0",
- "hawk": "~3.1.0",
- "aws-sign2": "~0.5.0",
- "stringstream": "~0.0.4",
- "combined-stream": "~1.0.1",
- "isstream": "~0.1.1",
- "har-validator": "^1.6.1"
- },
- "scripts": {
- "test": "npm run lint && npm run test-ci && npm run test-browser",
- "test-ci": "taper tests/test-*.js",
- "test-cov": "istanbul cover tape tests/test-*.js",
- "test-browser": "node tests/browser/start.js",
- "lint": "eslint lib/ *.js tests/ && echo Lint passed."
- },
- "devDependencies": {
- "browserify": "~5.9.1",
- "browserify-istanbul": "~0.1.3",
- "buffer-equal": "0.0.1",
- "codecov.io": "~0.1.2",
- "coveralls": "~2.11.2",
- "eslint": "0.18.0",
- "function-bind": "~1.0.0",
- "istanbul": "~0.3.2",
- "karma": "~0.12.21",
- "karma-browserify": "~3.0.1",
- "karma-cli": "0.0.4",
- "karma-coverage": "0.2.6",
- "karma-phantomjs-launcher": "~0.1.4",
- "karma-tap": "~1.0.1",
- "rimraf": "~2.2.8",
- "server-destroy": "~1.0.0",
- "tape": "~3.0.0",
- "taper": "~0.4.0",
- "bluebird": "~2.9.21"
- },
- "gitHead": "8492d18add93af1214943ee12e25371f9f9adad3",
- "homepage": "https://github.com/request/request#readme",
- "_id": "request@2.61.0",
- "_shasum": "6973cb2ac94885f02693f554eec64481d6013f9f",
- "_from": "request@*",
- "_npmVersion": "2.11.2",
- "_nodeVersion": "0.12.6",
- "_npmUser": {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- },
- "dist": {
- "shasum": "6973cb2ac94885f02693f554eec64481d6013f9f",
- "tarball": "http://registry.npmjs.org/request/-/request-2.61.0.tgz"
- },
- "maintainers": [
- {
- "name": "mikeal",
- "email": "mikeal.rogers@gmail.com"
- },
- {
- "name": "nylen",
- "email": "jnylen@gmail.com"
- },
- {
- "name": "fredkschott",
- "email": "fkschott@gmail.com"
- },
- {
- "name": "simov",
- "email": "simeonvelichkov@gmail.com"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/request/-/request-2.61.0.tgz"
-}
diff --git a/scripts/node_modules/request/release.sh b/scripts/node_modules/request/release.sh
deleted file mode 100755
index 7678bf8d..00000000
--- a/scripts/node_modules/request/release.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-
-if [ -z "`which github-changes`" ]; then
- # specify version because github-changes "is under heavy development. Things
- # may break between releases" until 0.1.0
- echo "First, do: [sudo] npm install -g github-changes@0.0.14"
- exit 1
-fi
-
-if [ -d .git/refs/remotes/upstream ]; then
- remote=upstream
-else
- remote=origin
-fi
-
-# Increment v2.x.y -> v2.x+1.0
-npm version minor || exit 1
-
-# Generate changelog from pull requests
-github-changes -o request -r request \
- --auth --verbose \
- --file CHANGELOG.md \
- --only-pulls --use-commit-body \
- --date-format '(YYYY/MM/DD)' \
- || exit 1
-
-# Since the tag for the new version hasn't been pushed yet, any changes in it
-# will be marked as "upcoming"
-version="$(grep '"version"' package.json | cut -d'"' -f4)"
-sed -i -e "s/^### upcoming/### v$version/" CHANGELOG.md
-
-# This may fail if no changelog updates
-# TODO: would this ever actually happen? handle it better?
-git add CHANGELOG.md; git commit -m 'Update changelog'
-
-# Publish the new version to npm
-npm publish || exit 1
-
-# Increment v2.x.0 -> v2.x.1
-# For rationale, see:
-# https://github.com/request/oauth-sign/issues/10#issuecomment-58917018
-npm version patch || exit 1
-
-# Push back to the main repo
-git push $remote master --tags || exit 1
diff --git a/scripts/node_modules/request/request.js b/scripts/node_modules/request/request.js
deleted file mode 100644
index 700b9e0a..00000000
--- a/scripts/node_modules/request/request.js
+++ /dev/null
@@ -1,1424 +0,0 @@
-'use strict'
-
-var http = require('http')
- , https = require('https')
- , url = require('url')
- , util = require('util')
- , stream = require('stream')
- , zlib = require('zlib')
- , bl = require('bl')
- , hawk = require('hawk')
- , aws = require('aws-sign2')
- , httpSignature = require('http-signature')
- , mime = require('mime-types')
- , stringstream = require('stringstream')
- , caseless = require('caseless')
- , ForeverAgent = require('forever-agent')
- , FormData = require('form-data')
- , helpers = require('./lib/helpers')
- , cookies = require('./lib/cookies')
- , getProxyFromURI = require('./lib/getProxyFromURI')
- , Querystring = require('./lib/querystring').Querystring
- , Har = require('./lib/har').Har
- , Auth = require('./lib/auth').Auth
- , OAuth = require('./lib/oauth').OAuth
- , Multipart = require('./lib/multipart').Multipart
- , Redirect = require('./lib/redirect').Redirect
- , Tunnel = require('./lib/tunnel').Tunnel
-
-var safeStringify = helpers.safeStringify
- , isReadStream = helpers.isReadStream
- , toBase64 = helpers.toBase64
- , defer = helpers.defer
- , copy = helpers.copy
- , version = helpers.version
- , globalCookieJar = cookies.jar()
-
-
-var globalPool = {}
-
-function filterForNonReserved(reserved, options) {
- // Filter out properties that are not reserved.
- // Reserved values are passed in at call site.
-
- var object = {}
- for (var i in options) {
- var notReserved = (reserved.indexOf(i) === -1)
- if (notReserved) {
- object[i] = options[i]
- }
- }
- return object
-}
-
-function filterOutReservedFunctions(reserved, options) {
- // Filter out properties that are functions and are reserved.
- // Reserved values are passed in at call site.
-
- var object = {}
- for (var i in options) {
- var isReserved = !(reserved.indexOf(i) === -1)
- var isFunction = (typeof options[i] === 'function')
- if (!(isReserved && isFunction)) {
- object[i] = options[i]
- }
- }
- return object
-
-}
-
-// Function for properly handling a connection error
-function connectionErrorHandler(error) {
- var socket = this
- if (socket.res) {
- if (socket.res.request) {
- socket.res.request.emit('error', error)
- } else {
- socket.res.emit('error', error)
- }
- } else {
- socket._httpMessage.emit('error', error)
- }
-}
-
-// Return a simpler request object to allow serialization
-function requestToJSON() {
- var self = this
- return {
- uri: self.uri,
- method: self.method,
- headers: self.headers
- }
-}
-
-// Return a simpler response object to allow serialization
-function responseToJSON() {
- var self = this
- return {
- statusCode: self.statusCode,
- body: self.body,
- headers: self.headers,
- request: requestToJSON.call(self.request)
- }
-}
-
-function Request (options) {
- // if given the method property in options, set property explicitMethod to true
-
- // extend the Request instance with any non-reserved properties
- // remove any reserved functions from the options object
- // set Request instance to be readable and writable
- // call init
-
- var self = this
-
- // start with HAR, then override with additional options
- if (options.har) {
- self._har = new Har(self)
- options = self._har.options(options)
- }
-
- stream.Stream.call(self)
- var reserved = Object.keys(Request.prototype)
- var nonReserved = filterForNonReserved(reserved, options)
-
- stream.Stream.call(self)
- util._extend(self, nonReserved)
- options = filterOutReservedFunctions(reserved, options)
-
- self.readable = true
- self.writable = true
- if (options.method) {
- self.explicitMethod = true
- }
- self._qs = new Querystring(self)
- self._auth = new Auth(self)
- self._oauth = new OAuth(self)
- self._multipart = new Multipart(self)
- self._redirect = new Redirect(self)
- self._tunnel = new Tunnel(self)
- self.init(options)
-}
-
-util.inherits(Request, stream.Stream)
-
-// Debugging
-Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG)
-function debug() {
- if (Request.debug) {
- console.error('REQUEST %s', util.format.apply(util, arguments))
- }
-}
-Request.prototype.debug = debug
-
-Request.prototype.init = function (options) {
- // init() contains all the code to setup the request object.
- // the actual outgoing request is not started until start() is called
- // this function is called from both the constructor and on redirect.
- var self = this
- if (!options) {
- options = {}
- }
- self.headers = self.headers ? copy(self.headers) : {}
-
- // Delete headers with value undefined since they break
- // ClientRequest.OutgoingMessage.setHeader in node 0.12
- for (var headerName in self.headers) {
- if (typeof self.headers[headerName] === 'undefined') {
- delete self.headers[headerName]
- }
- }
-
- caseless.httpify(self, self.headers)
-
- if (!self.method) {
- self.method = options.method || 'GET'
- }
- if (!self.localAddress) {
- self.localAddress = options.localAddress
- }
-
- self._qs.init(options)
-
- debug(options)
- if (!self.pool && self.pool !== false) {
- self.pool = globalPool
- }
- self.dests = self.dests || []
- self.__isRequestRequest = true
-
- // Protect against double callback
- if (!self._callback && self.callback) {
- self._callback = self.callback
- self.callback = function () {
- if (self._callbackCalled) {
- return // Print a warning maybe?
- }
- self._callbackCalled = true
- self._callback.apply(self, arguments)
- }
- self.on('error', self.callback.bind())
- self.on('complete', self.callback.bind(self, null))
- }
-
- // People use this property instead all the time, so support it
- if (!self.uri && self.url) {
- self.uri = self.url
- delete self.url
- }
-
- // If there's a baseUrl, then use it as the base URL (i.e. uri must be
- // specified as a relative path and is appended to baseUrl).
- if (self.baseUrl) {
- if (typeof self.baseUrl !== 'string') {
- return self.emit('error', new Error('options.baseUrl must be a string'))
- }
-
- if (typeof self.uri !== 'string') {
- return self.emit('error', new Error('options.uri must be a string when using options.baseUrl'))
- }
-
- if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) {
- return self.emit('error', new Error('options.uri must be a path when using options.baseUrl'))
- }
-
- // Handle all cases to make sure that there's only one slash between
- // baseUrl and uri.
- var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1
- var uriStartsWithSlash = self.uri.indexOf('/') === 0
-
- if (baseUrlEndsWithSlash && uriStartsWithSlash) {
- self.uri = self.baseUrl + self.uri.slice(1)
- } else if (baseUrlEndsWithSlash || uriStartsWithSlash) {
- self.uri = self.baseUrl + self.uri
- } else if (self.uri === '') {
- self.uri = self.baseUrl
- } else {
- self.uri = self.baseUrl + '/' + self.uri
- }
- delete self.baseUrl
- }
-
- // A URI is needed by this point, emit error if we haven't been able to get one
- if (!self.uri) {
- return self.emit('error', new Error('options.uri is a required argument'))
- }
-
- // If a string URI/URL was given, parse it into a URL object
- if (typeof self.uri === 'string') {
- self.uri = url.parse(self.uri)
- }
-
- // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme
- if (self.uri.protocol === 'unix:') {
- return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`'))
- }
-
- // Support Unix Sockets
- if (self.uri.host === 'unix') {
- // Get the socket & request paths from the URL
- var unixParts = self.uri.path.split(':')
- , host = unixParts[0]
- , path = unixParts[1]
- // Apply unix properties to request
- self.socketPath = host
- self.uri.pathname = path
- self.uri.path = path
- self.uri.host = host
- self.uri.hostname = host
- self.uri.isUnix = true
- }
-
- if (self.strictSSL === false) {
- self.rejectUnauthorized = false
- }
-
- if (!self.uri.pathname) {self.uri.pathname = '/'}
-
- if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) {
- // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar
- // Detect and reject it as soon as possible
- var faultyUri = url.format(self.uri)
- var message = 'Invalid URI "' + faultyUri + '"'
- if (Object.keys(options).length === 0) {
- // No option ? This can be the sign of a redirect
- // As this is a case where the user cannot do anything (they didn't call request directly with this URL)
- // they should be warned that it can be caused by a redirection (can save some hair)
- message += '. This can be caused by a crappy redirection.'
- }
- // This error was fatal
- return self.emit('error', new Error(message))
- }
-
- if (!self.hasOwnProperty('proxy')) {
- self.proxy = getProxyFromURI(self.uri)
- }
-
- self.tunnel = self._tunnel.isEnabled(options)
- if (self.proxy) {
- self._tunnel.setup(options)
- }
-
- self._redirect.onRequest(options)
-
- self.setHost = false
- if (!self.hasHeader('host')) {
- var hostHeaderName = self.originalHostHeaderName || 'host'
- self.setHeader(hostHeaderName, self.uri.hostname)
- if (self.uri.port) {
- if ( !(self.uri.port === 80 && self.uri.protocol === 'http:') &&
- !(self.uri.port === 443 && self.uri.protocol === 'https:') ) {
- self.setHeader(hostHeaderName, self.getHeader('host') + (':' + self.uri.port) )
- }
- }
- self.setHost = true
- }
-
- self.jar(self._jar || options.jar)
-
- if (!self.uri.port) {
- if (self.uri.protocol === 'http:') {self.uri.port = 80}
- else if (self.uri.protocol === 'https:') {self.uri.port = 443}
- }
-
- if (self.proxy && !self.tunnel) {
- self.port = self.proxy.port
- self.host = self.proxy.hostname
- } else {
- self.port = self.uri.port
- self.host = self.uri.hostname
- }
-
- if (options.form) {
- self.form(options.form)
- }
-
- if (options.formData) {
- var formData = options.formData
- var requestForm = self.form()
- var appendFormValue = function (key, value) {
- if (value.hasOwnProperty('value') && value.hasOwnProperty('options')) {
- requestForm.append(key, value.value, value.options)
- } else {
- requestForm.append(key, value)
- }
- }
- for (var formKey in formData) {
- if (formData.hasOwnProperty(formKey)) {
- var formValue = formData[formKey]
- if (formValue instanceof Array) {
- for (var j = 0; j < formValue.length; j++) {
- appendFormValue(formKey, formValue[j])
- }
- } else {
- appendFormValue(formKey, formValue)
- }
- }
- }
- }
-
- if (options.qs) {
- self.qs(options.qs)
- }
-
- if (self.uri.path) {
- self.path = self.uri.path
- } else {
- self.path = self.uri.pathname + (self.uri.search || '')
- }
-
- if (self.path.length === 0) {
- self.path = '/'
- }
-
- // Auth must happen last in case signing is dependent on other headers
- if (options.aws) {
- self.aws(options.aws)
- }
-
- if (options.hawk) {
- self.hawk(options.hawk)
- }
-
- if (options.httpSignature) {
- self.httpSignature(options.httpSignature)
- }
-
- if (options.auth) {
- if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) {
- options.auth.user = options.auth.username
- }
- if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) {
- options.auth.pass = options.auth.password
- }
-
- self.auth(
- options.auth.user,
- options.auth.pass,
- options.auth.sendImmediately,
- options.auth.bearer
- )
- }
-
- if (self.gzip && !self.hasHeader('accept-encoding')) {
- self.setHeader('accept-encoding', 'gzip')
- }
-
- if (self.uri.auth && !self.hasHeader('authorization')) {
- var uriAuthPieces = self.uri.auth.split(':').map(function(item) {return self._qs.unescape(item)})
- self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true)
- }
-
- if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) {
- var proxyAuthPieces = self.proxy.auth.split(':').map(function(item) {return self._qs.unescape(item)})
- var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':'))
- self.setHeader('proxy-authorization', authHeader)
- }
-
- if (self.proxy && !self.tunnel) {
- self.path = (self.uri.protocol + '//' + self.uri.host + self.path)
- }
-
- if (options.json) {
- self.json(options.json)
- }
- if (options.multipart) {
- self.multipart(options.multipart)
- }
-
- if (options.time) {
- self.timing = true
- self.elapsedTime = self.elapsedTime || 0
- }
-
- function setContentLength () {
- if (!self.hasHeader('content-length')) {
- var length
- if (typeof self.body === 'string') {
- length = Buffer.byteLength(self.body)
- }
- else if (Array.isArray(self.body)) {
- length = self.body.reduce(function (a, b) {return a + b.length}, 0)
- }
- else {
- length = self.body.length
- }
-
- if (length) {
- self.setHeader('content-length', length)
- } else {
- self.emit('error', new Error('Argument error, options.body.'))
- }
- }
- }
- if (self.body) {
- setContentLength()
- }
-
- if (options.oauth) {
- self.oauth(options.oauth)
- } else if (self._oauth.params && self.hasHeader('authorization')) {
- self.oauth(self._oauth.params)
- }
-
- var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol
- , defaultModules = {'http:':http, 'https:':https}
- , httpModules = self.httpModules || {}
-
- self.httpModule = httpModules[protocol] || defaultModules[protocol]
-
- if (!self.httpModule) {
- return self.emit('error', new Error('Invalid protocol: ' + protocol))
- }
-
- if (options.ca) {
- self.ca = options.ca
- }
-
- if (!self.agent) {
- if (options.agentOptions) {
- self.agentOptions = options.agentOptions
- }
-
- if (options.agentClass) {
- self.agentClass = options.agentClass
- } else if (options.forever) {
- var v = version()
- // use ForeverAgent in node 0.10- only
- if (v.major === 0 && v.minor <= 10) {
- self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL
- } else {
- self.agentClass = self.httpModule.Agent
- self.agentOptions = self.agentOptions || {}
- self.agentOptions.keepAlive = true
- }
- } else {
- self.agentClass = self.httpModule.Agent
- }
- }
-
- if (self.pool === false) {
- self.agent = false
- } else {
- self.agent = self.agent || self.getNewAgent()
- }
-
- self.on('pipe', function (src) {
- if (self.ntick && self._started) {
- self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.'))
- }
- self.src = src
- if (isReadStream(src)) {
- if (!self.hasHeader('content-type')) {
- self.setHeader('content-type', mime.lookup(src.path))
- }
- } else {
- if (src.headers) {
- for (var i in src.headers) {
- if (!self.hasHeader(i)) {
- self.setHeader(i, src.headers[i])
- }
- }
- }
- if (self._json && !self.hasHeader('content-type')) {
- self.setHeader('content-type', 'application/json')
- }
- if (src.method && !self.explicitMethod) {
- self.method = src.method
- }
- }
-
- // self.on('pipe', function () {
- // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.')
- // })
- })
-
- defer(function () {
- if (self._aborted) {
- return
- }
-
- var end = function () {
- if (self._form) {
- if (!self._auth.hasAuth) {
- self._form.pipe(self)
- }
- else if (self._auth.hasAuth && self._auth.sentAuth) {
- self._form.pipe(self)
- }
- }
- if (self._multipart && self._multipart.chunked) {
- self._multipart.body.pipe(self)
- }
- if (self.body) {
- setContentLength()
- if (Array.isArray(self.body)) {
- self.body.forEach(function (part) {
- self.write(part)
- })
- } else {
- self.write(self.body)
- }
- self.end()
- } else if (self.requestBodyStream) {
- console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.')
- self.requestBodyStream.pipe(self)
- } else if (!self.src) {
- if (self._auth.hasAuth && !self._auth.sentAuth) {
- self.end()
- return
- }
- if (self.method !== 'GET' && typeof self.method !== 'undefined') {
- self.setHeader('content-length', 0)
- }
- self.end()
- }
- }
-
- if (self._form && !self.hasHeader('content-length')) {
- // Before ending the request, we had to compute the length of the whole form, asyncly
- self.setHeader(self._form.getHeaders(), true)
- self._form.getLength(function (err, length) {
- if (!err) {
- self.setHeader('content-length', length)
- }
- end()
- })
- } else {
- end()
- }
-
- self.ntick = true
- })
-
-}
-
-// Must call this when following a redirect from https to http or vice versa
-// Attempts to keep everything as identical as possible, but update the
-// httpModule, Tunneling agent, and/or Forever Agent in use.
-Request.prototype._updateProtocol = function () {
- var self = this
- var protocol = self.uri.protocol
-
- if (protocol === 'https:' || self.tunnel) {
- // previously was doing http, now doing https
- // if it's https, then we might need to tunnel now.
- if (self.proxy) {
- if (self._tunnel.setup()) {
- return
- }
- }
-
- self.httpModule = https
- switch (self.agentClass) {
- case ForeverAgent:
- self.agentClass = ForeverAgent.SSL
- break
- case http.Agent:
- self.agentClass = https.Agent
- break
- default:
- // nothing we can do. Just hope for the best.
- return
- }
-
- // if there's an agent, we need to get a new one.
- if (self.agent) {
- self.agent = self.getNewAgent()
- }
-
- } else {
- // previously was doing https, now doing http
- self.httpModule = http
- switch (self.agentClass) {
- case ForeverAgent.SSL:
- self.agentClass = ForeverAgent
- break
- case https.Agent:
- self.agentClass = http.Agent
- break
- default:
- // nothing we can do. just hope for the best
- return
- }
-
- // if there's an agent, then get a new one.
- if (self.agent) {
- self.agent = null
- self.agent = self.getNewAgent()
- }
- }
-}
-
-Request.prototype.getNewAgent = function () {
- var self = this
- var Agent = self.agentClass
- var options = {}
- if (self.agentOptions) {
- for (var i in self.agentOptions) {
- options[i] = self.agentOptions[i]
- }
- }
- if (self.ca) {
- options.ca = self.ca
- }
- if (self.ciphers) {
- options.ciphers = self.ciphers
- }
- if (self.secureProtocol) {
- options.secureProtocol = self.secureProtocol
- }
- if (self.secureOptions) {
- options.secureOptions = self.secureOptions
- }
- if (typeof self.rejectUnauthorized !== 'undefined') {
- options.rejectUnauthorized = self.rejectUnauthorized
- }
-
- if (self.cert && self.key) {
- options.key = self.key
- options.cert = self.cert
- }
-
- if (self.pfx) {
- options.pfx = self.pfx
- }
-
- if (self.passphrase) {
- options.passphrase = self.passphrase
- }
-
- var poolKey = ''
-
- // different types of agents are in different pools
- if (Agent !== self.httpModule.Agent) {
- poolKey += Agent.name
- }
-
- // ca option is only relevant if proxy or destination are https
- var proxy = self.proxy
- if (typeof proxy === 'string') {
- proxy = url.parse(proxy)
- }
- var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:'
-
- if (isHttps) {
- if (options.ca) {
- if (poolKey) {
- poolKey += ':'
- }
- poolKey += options.ca
- }
-
- if (typeof options.rejectUnauthorized !== 'undefined') {
- if (poolKey) {
- poolKey += ':'
- }
- poolKey += options.rejectUnauthorized
- }
-
- if (options.cert) {
- if (poolKey) {
- poolKey += ':'
- }
- poolKey += options.cert.toString('ascii') + options.key.toString('ascii')
- }
-
- if (options.pfx) {
- if (poolKey) {
- poolKey += ':'
- }
- poolKey += options.pfx.toString('ascii')
- }
-
- if (options.ciphers) {
- if (poolKey) {
- poolKey += ':'
- }
- poolKey += options.ciphers
- }
-
- if (options.secureProtocol) {
- if (poolKey) {
- poolKey += ':'
- }
- poolKey += options.secureProtocol
- }
-
- if (options.secureOptions) {
- if (poolKey) {
- poolKey += ':'
- }
- poolKey += options.secureOptions
- }
- }
-
- if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) {
- // not doing anything special. Use the globalAgent
- return self.httpModule.globalAgent
- }
-
- // we're using a stored agent. Make sure it's protocol-specific
- poolKey = self.uri.protocol + poolKey
-
- // generate a new agent for this setting if none yet exists
- if (!self.pool[poolKey]) {
- self.pool[poolKey] = new Agent(options)
- // properly set maxSockets on new agents
- if (self.pool.maxSockets) {
- self.pool[poolKey].maxSockets = self.pool.maxSockets
- }
- }
-
- return self.pool[poolKey]
-}
-
-Request.prototype.start = function () {
- // start() is called once we are ready to send the outgoing HTTP request.
- // this is usually called on the first write(), end() or on nextTick()
- var self = this
-
- if (self._aborted) {
- return
- }
-
- self._started = true
- self.method = self.method || 'GET'
- self.href = self.uri.href
-
- if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) {
- self.setHeader('content-length', self.src.stat.size)
- }
- if (self._aws) {
- self.aws(self._aws, true)
- }
-
- // We have a method named auth, which is completely different from the http.request
- // auth option. If we don't remove it, we're gonna have a bad time.
- var reqOptions = copy(self)
- delete reqOptions.auth
-
- debug('make request', self.uri.href)
-
- self.req = self.httpModule.request(reqOptions)
-
- if (self.timing) {
- self.startTime = new Date().getTime()
- }
-
- if (self.timeout && !self.timeoutTimer) {
- var timeout = self.timeout < 0 ? 0 : self.timeout
- // Set a timeout in memory - this block will throw if the server takes more
- // than `timeout` to write the HTTP status and headers (corresponding to
- // the on('response') event on the client). NB: this measures wall-clock
- // time, not the time between bytes sent by the server.
- self.timeoutTimer = setTimeout(function () {
- var connectTimeout = self.req.socket && self.req.socket.readable === false
- self.abort()
- var e = new Error('ETIMEDOUT')
- e.code = 'ETIMEDOUT'
- e.connect = connectTimeout
- self.emit('error', e)
- }, timeout)
-
- if (self.req.setTimeout) { // only works on node 0.6+
- // Set an additional timeout on the socket, via the `setsockopt` syscall.
- // This timeout sets the amount of time to wait *between* bytes sent
- // from the server, and may or may not correspond to the wall-clock time
- // elapsed from the start of the request.
- //
- // In particular, it's useful for erroring if the server fails to send
- // data halfway through streaming a response.
- self.req.setTimeout(timeout, function () {
- if (self.req) {
- self.req.abort()
- var e = new Error('ESOCKETTIMEDOUT')
- e.code = 'ESOCKETTIMEDOUT'
- e.connect = false
- self.emit('error', e)
- }
- })
- }
- }
-
- self.req.on('response', self.onRequestResponse.bind(self))
- self.req.on('error', self.onRequestError.bind(self))
- self.req.on('drain', function() {
- self.emit('drain')
- })
- self.req.on('socket', function(socket) {
- self.emit('socket', socket)
- })
-
- self.on('end', function() {
- if ( self.req.connection ) {
- self.req.connection.removeListener('error', connectionErrorHandler)
- }
- })
- self.emit('request', self.req)
-}
-
-Request.prototype.onRequestError = function (error) {
- var self = this
- if (self._aborted) {
- return
- }
- if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET'
- && self.agent.addRequestNoreuse) {
- self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) }
- self.start()
- self.req.end()
- return
- }
- if (self.timeout && self.timeoutTimer) {
- clearTimeout(self.timeoutTimer)
- self.timeoutTimer = null
- }
- self.emit('error', error)
-}
-
-Request.prototype.onRequestResponse = function (response) {
- var self = this
- debug('onRequestResponse', self.uri.href, response.statusCode, response.headers)
- response.on('end', function() {
- if (self.timing) {
- self.elapsedTime += (new Date().getTime() - self.startTime)
- debug('elapsed time', self.elapsedTime)
- response.elapsedTime = self.elapsedTime
- }
- debug('response end', self.uri.href, response.statusCode, response.headers)
- })
-
- // The check on response.connection is a workaround for browserify.
- if (response.connection && response.connection.listeners('error').indexOf(connectionErrorHandler) === -1) {
- response.connection.setMaxListeners(0)
- response.connection.once('error', connectionErrorHandler)
- }
- if (self._aborted) {
- debug('aborted', self.uri.href)
- response.resume()
- return
- }
-
- self.response = response
- response.request = self
- response.toJSON = responseToJSON
-
- // XXX This is different on 0.10, because SSL is strict by default
- if (self.httpModule === https &&
- self.strictSSL && (!response.hasOwnProperty('socket') ||
- !response.socket.authorized)) {
- debug('strict ssl error', self.uri.href)
- var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL'
- self.emit('error', new Error('SSL Error: ' + sslErr))
- return
- }
-
- // Save the original host before any redirect (if it changes, we need to
- // remove any authorization headers). Also remember the case of the header
- // name because lots of broken servers expect Host instead of host and we
- // want the caller to be able to specify this.
- self.originalHost = self.getHeader('host')
- if (!self.originalHostHeaderName) {
- self.originalHostHeaderName = self.hasHeader('host')
- }
- if (self.setHost) {
- self.removeHeader('host')
- }
- if (self.timeout && self.timeoutTimer) {
- clearTimeout(self.timeoutTimer)
- self.timeoutTimer = null
- }
-
- var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar
- var addCookie = function (cookie) {
- //set the cookie if it's domain in the href's domain.
- try {
- targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true})
- } catch (e) {
- self.emit('error', e)
- }
- }
-
- response.caseless = caseless(response.headers)
-
- if (response.caseless.has('set-cookie') && (!self._disableCookies)) {
- var headerName = response.caseless.has('set-cookie')
- if (Array.isArray(response.headers[headerName])) {
- response.headers[headerName].forEach(addCookie)
- } else {
- addCookie(response.headers[headerName])
- }
- }
-
- if (self._redirect.onResponse(response)) {
- return // Ignore the rest of the response
- } else {
- // Be a good stream and emit end when the response is finished.
- // Hack to emit end on close because of a core bug that never fires end
- response.on('close', function () {
- if (!self._ended) {
- self.response.emit('end')
- }
- })
-
- response.on('end', function () {
- self._ended = true
- })
-
- var responseContent
- if (self.gzip) {
- var contentEncoding = response.headers['content-encoding'] || 'identity'
- contentEncoding = contentEncoding.trim().toLowerCase()
-
- if (contentEncoding === 'gzip') {
- responseContent = zlib.createGunzip()
- response.pipe(responseContent)
- } else {
- // Since previous versions didn't check for Content-Encoding header,
- // ignore any invalid values to preserve backwards-compatibility
- if (contentEncoding !== 'identity') {
- debug('ignoring unrecognized Content-Encoding ' + contentEncoding)
- }
- responseContent = response
- }
- } else {
- responseContent = response
- }
-
- if (self.encoding) {
- if (self.dests.length !== 0) {
- console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.')
- } else if (responseContent.setEncoding) {
- responseContent.setEncoding(self.encoding)
- } else {
- // Should only occur on node pre-v0.9.4 (joyent/node@9b5abe5) with
- // zlib streams.
- // If/When support for 0.9.4 is dropped, this should be unnecessary.
- responseContent = responseContent.pipe(stringstream(self.encoding))
- }
- }
-
- if (self._paused) {
- responseContent.pause()
- }
-
- self.responseContent = responseContent
-
- self.emit('response', response)
-
- self.dests.forEach(function (dest) {
- self.pipeDest(dest)
- })
-
- responseContent.on('data', function (chunk) {
- self._destdata = true
- self.emit('data', chunk)
- })
- responseContent.on('end', function (chunk) {
- self.emit('end', chunk)
- })
- responseContent.on('error', function (error) {
- self.emit('error', error)
- })
- responseContent.on('close', function () {self.emit('close')})
-
- if (self.callback) {
- var buffer = bl()
- , strings = []
-
- self.on('data', function (chunk) {
- if (Buffer.isBuffer(chunk)) {
- buffer.append(chunk)
- } else {
- strings.push(chunk)
- }
- })
- self.on('end', function () {
- debug('end event', self.uri.href)
- if (self._aborted) {
- debug('aborted', self.uri.href)
- return
- }
-
- if (buffer.length) {
- debug('has body', self.uri.href, buffer.length)
- if (self.encoding === null) {
- // response.body = buffer
- // can't move to this until https://github.com/rvagg/bl/issues/13
- response.body = buffer.slice()
- } else {
- response.body = buffer.toString(self.encoding)
- }
- } else if (strings.length) {
- // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation.
- // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse().
- if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') {
- strings[0] = strings[0].substring(1)
- }
- response.body = strings.join('')
- }
-
- if (self._json) {
- try {
- response.body = JSON.parse(response.body, self._jsonReviver)
- } catch (e) {
- debug('invalid JSON received', self.uri.href)
- }
- }
- debug('emitting complete', self.uri.href)
- if (typeof response.body === 'undefined' && !self._json) {
- response.body = self.encoding === null ? new Buffer(0) : ''
- }
- self.emit('complete', response, response.body)
- })
- }
- //if no callback
- else {
- self.on('end', function () {
- if (self._aborted) {
- debug('aborted', self.uri.href)
- return
- }
- self.emit('complete', response)
- })
- }
- }
- debug('finish init function', self.uri.href)
-}
-
-Request.prototype.abort = function () {
- var self = this
- self._aborted = true
-
- if (self.req) {
- self.req.abort()
- }
- else if (self.response) {
- self.response.abort()
- }
-
- self.emit('abort')
-}
-
-Request.prototype.pipeDest = function (dest) {
- var self = this
- var response = self.response
- // Called after the response is received
- if (dest.headers && !dest.headersSent) {
- if (response.caseless.has('content-type')) {
- var ctname = response.caseless.has('content-type')
- if (dest.setHeader) {
- dest.setHeader(ctname, response.headers[ctname])
- }
- else {
- dest.headers[ctname] = response.headers[ctname]
- }
- }
-
- if (response.caseless.has('content-length')) {
- var clname = response.caseless.has('content-length')
- if (dest.setHeader) {
- dest.setHeader(clname, response.headers[clname])
- } else {
- dest.headers[clname] = response.headers[clname]
- }
- }
- }
- if (dest.setHeader && !dest.headersSent) {
- for (var i in response.headers) {
- // If the response content is being decoded, the Content-Encoding header
- // of the response doesn't represent the piped content, so don't pass it.
- if (!self.gzip || i !== 'content-encoding') {
- dest.setHeader(i, response.headers[i])
- }
- }
- dest.statusCode = response.statusCode
- }
- if (self.pipefilter) {
- self.pipefilter(response, dest)
- }
-}
-
-Request.prototype.qs = function (q, clobber) {
- var self = this
- var base
- if (!clobber && self.uri.query) {
- base = self._qs.parse(self.uri.query)
- } else {
- base = {}
- }
-
- for (var i in q) {
- base[i] = q[i]
- }
-
- if (self._qs.stringify(base) === '') {
- return self
- }
-
- var qs = self._qs.stringify(base)
-
- self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs)
- self.url = self.uri
- self.path = self.uri.path
-
- return self
-}
-Request.prototype.form = function (form) {
- var self = this
- if (form) {
- if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) {
- self.setHeader('content-type', 'application/x-www-form-urlencoded')
- }
- self.body = (typeof form === 'string')
- ? self._qs.rfc3986(form.toString('utf8'))
- : self._qs.stringify(form).toString('utf8')
- return self
- }
- // create form-data object
- self._form = new FormData()
- self._form.on('error', function(err) {
- err.message = 'form-data: ' + err.message
- self.emit('error', err)
- self.abort()
- })
- return self._form
-}
-Request.prototype.multipart = function (multipart) {
- var self = this
-
- self._multipart.onRequest(multipart)
-
- if (!self._multipart.chunked) {
- self.body = self._multipart.body
- }
-
- return self
-}
-Request.prototype.json = function (val) {
- var self = this
-
- if (!self.hasHeader('accept')) {
- self.setHeader('accept', 'application/json')
- }
-
- self._json = true
- if (typeof val === 'boolean') {
- if (self.body !== undefined) {
- if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) {
- self.body = safeStringify(self.body)
- } else {
- self.body = self._qs.rfc3986(self.body)
- }
- if (!self.hasHeader('content-type')) {
- self.setHeader('content-type', 'application/json')
- }
- }
- } else {
- self.body = safeStringify(val)
- if (!self.hasHeader('content-type')) {
- self.setHeader('content-type', 'application/json')
- }
- }
-
- if (typeof self.jsonReviver === 'function') {
- self._jsonReviver = self.jsonReviver
- }
-
- return self
-}
-Request.prototype.getHeader = function (name, headers) {
- var self = this
- var result, re, match
- if (!headers) {
- headers = self.headers
- }
- Object.keys(headers).forEach(function (key) {
- if (key.length !== name.length) {
- return
- }
- re = new RegExp(name, 'i')
- match = key.match(re)
- if (match) {
- result = headers[key]
- }
- })
- return result
-}
-
-Request.prototype.auth = function (user, pass, sendImmediately, bearer) {
- var self = this
-
- self._auth.onRequest(user, pass, sendImmediately, bearer)
-
- return self
-}
-Request.prototype.aws = function (opts, now) {
- var self = this
-
- if (!now) {
- self._aws = opts
- return self
- }
- var date = new Date()
- self.setHeader('date', date.toUTCString())
- var auth =
- { key: opts.key
- , secret: opts.secret
- , verb: self.method.toUpperCase()
- , date: date
- , contentType: self.getHeader('content-type') || ''
- , md5: self.getHeader('content-md5') || ''
- , amazonHeaders: aws.canonicalizeHeaders(self.headers)
- }
- var path = self.uri.path
- if (opts.bucket && path) {
- auth.resource = '/' + opts.bucket + path
- } else if (opts.bucket && !path) {
- auth.resource = '/' + opts.bucket
- } else if (!opts.bucket && path) {
- auth.resource = path
- } else if (!opts.bucket && !path) {
- auth.resource = '/'
- }
- auth.resource = aws.canonicalizeResource(auth.resource)
- self.setHeader('authorization', aws.authorization(auth))
-
- return self
-}
-Request.prototype.httpSignature = function (opts) {
- var self = this
- httpSignature.signRequest({
- getHeader: function(header) {
- return self.getHeader(header, self.headers)
- },
- setHeader: function(header, value) {
- self.setHeader(header, value)
- },
- method: self.method,
- path: self.path
- }, opts)
- debug('httpSignature authorization', self.getHeader('authorization'))
-
- return self
-}
-Request.prototype.hawk = function (opts) {
- var self = this
- self.setHeader('Authorization', hawk.client.header(self.uri, self.method, opts).field)
-}
-Request.prototype.oauth = function (_oauth) {
- var self = this
-
- self._oauth.onRequest(_oauth)
-
- return self
-}
-
-Request.prototype.jar = function (jar) {
- var self = this
- var cookies
-
- if (self._redirect.redirectsFollowed === 0) {
- self.originalCookieHeader = self.getHeader('cookie')
- }
-
- if (!jar) {
- // disable cookies
- cookies = false
- self._disableCookies = true
- } else {
- var targetCookieJar = (jar && jar.getCookieString) ? jar : globalCookieJar
- var urihref = self.uri.href
- //fetch cookie in the Specified host
- if (targetCookieJar) {
- cookies = targetCookieJar.getCookieString(urihref)
- }
- }
-
- //if need cookie and cookie is not empty
- if (cookies && cookies.length) {
- if (self.originalCookieHeader) {
- // Don't overwrite existing Cookie header
- self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies)
- } else {
- self.setHeader('cookie', cookies)
- }
- }
- self._jar = jar
- return self
-}
-
-
-// Stream API
-Request.prototype.pipe = function (dest, opts) {
- var self = this
-
- if (self.response) {
- if (self._destdata) {
- self.emit('error', new Error('You cannot pipe after data has been emitted from the response.'))
- } else if (self._ended) {
- self.emit('error', new Error('You cannot pipe after the response has been ended.'))
- } else {
- stream.Stream.prototype.pipe.call(self, dest, opts)
- self.pipeDest(dest)
- return dest
- }
- } else {
- self.dests.push(dest)
- stream.Stream.prototype.pipe.call(self, dest, opts)
- return dest
- }
-}
-Request.prototype.write = function () {
- var self = this
- if (!self._started) {
- self.start()
- }
- return self.req.write.apply(self.req, arguments)
-}
-Request.prototype.end = function (chunk) {
- var self = this
- if (chunk) {
- self.write(chunk)
- }
- if (!self._started) {
- self.start()
- }
- self.req.end()
-}
-Request.prototype.pause = function () {
- var self = this
- if (!self.responseContent) {
- self._paused = true
- } else {
- self.responseContent.pause.apply(self.responseContent, arguments)
- }
-}
-Request.prototype.resume = function () {
- var self = this
- if (!self.responseContent) {
- self._paused = false
- } else {
- self.responseContent.resume.apply(self.responseContent, arguments)
- }
-}
-Request.prototype.destroy = function () {
- var self = this
- if (!self._ended) {
- self.end()
- } else if (self.response) {
- self.response.destroy()
- }
-}
-
-Request.defaultProxyHeaderWhiteList =
- Tunnel.defaultProxyHeaderWhiteList.slice()
-
-Request.defaultProxyHeaderExclusiveList =
- Tunnel.defaultProxyHeaderExclusiveList.slice()
-
-// Exports
-
-Request.prototype.toJSON = requestToJSON
-module.exports = Request
diff --git a/scripts/node_modules/unzip/.npmignore b/scripts/node_modules/unzip/.npmignore
deleted file mode 100644
index e0b850e0..00000000
--- a/scripts/node_modules/unzip/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/.idea
-/node_modules
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/.travis.yml b/scripts/node_modules/unzip/.travis.yml
deleted file mode 100644
index 5f6edf04..00000000
--- a/scripts/node_modules/unzip/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-node_js:
- - "0.11"
- - "0.10"
- - "0.8"
-
diff --git a/scripts/node_modules/unzip/LICENSE b/scripts/node_modules/unzip/LICENSE
deleted file mode 100644
index ccfbbcdc..00000000
--- a/scripts/node_modules/unzip/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2012 - 2013 Near Infinity Corporation
-
-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/scripts/node_modules/unzip/README.md b/scripts/node_modules/unzip/README.md
deleted file mode 100644
index 9a3f7f88..00000000
--- a/scripts/node_modules/unzip/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# unzip [![Build Status](https://travis-ci.org/EvanOxfeld/node-unzip.png)](https://travis-ci.org/EvanOxfeld/node-unzip)
-
-Streaming cross-platform unzip tool written in node.js.
-
-Unzip provides simple APIs similar to [node-tar](https://github.com/isaacs/node-tar) for parsing and extracting zip files.
-There are no added compiled dependencies - inflation is handled by node.js's built in zlib support. Unzip is also an
-example use case of [node-pullstream](https://github.com/EvanOxfeld/node-pullstream).
-
-## Installation
-
-```bash
-$ npm install unzip
-```
-
-## Quick Examples
-
-### Extract to a directory
-```javascript
-fs.createReadStream('path/to/archive.zip').pipe(unzip.Extract({ path: 'output/path' }));
-```
-
-Extract emits the 'close' event once the zip's contents have been fully extracted to disk.
-
-### Parse zip file contents
-
-Process each zip file entry or pipe entries to another stream.
-
-__Important__: If you do not intend to consume an entry stream's raw data, call autodrain() to dispose of the entry's
-contents. Otherwise you risk running out of memory.
-
-```javascript
-fs.createReadStream('path/to/archive.zip')
- .pipe(unzip.Parse())
- .on('entry', function (entry) {
- var fileName = entry.path;
- var type = entry.type; // 'Directory' or 'File'
- var size = entry.size;
- if (fileName === "this IS the file I'm looking for") {
- entry.pipe(fs.createWriteStream('output/path'));
- } else {
- entry.autodrain();
- }
- });
-```
-
-Or pipe the output of unzip.Parse() to fstream
-
-```javascript
-var readStream = fs.createReadStream('path/to/archive.zip');
-var writeStream = fstream.Writer('output/path');
-
-readStream
- .pipe(unzip.Parse())
- .pipe(writeStream)
-```
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2012 - 2013 Near Infinity Corporation
-
-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/scripts/node_modules/unzip/lib/entry.js b/scripts/node_modules/unzip/lib/entry.js
deleted file mode 100644
index 43535a81..00000000
--- a/scripts/node_modules/unzip/lib/entry.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict';
-
-module.exports = Entry;
-
-var PassThrough = require('readable-stream/passthrough');
-var inherits = require('util').inherits;
-
-inherits(Entry, PassThrough);
-
-function Entry () {
- PassThrough.call(this);
- this.props = {};
-}
-
-Entry.prototype.autodrain = function () {
- this.on('readable', this.read.bind(this));
-};
diff --git a/scripts/node_modules/unzip/lib/extract.js b/scripts/node_modules/unzip/lib/extract.js
deleted file mode 100644
index fd031813..00000000
--- a/scripts/node_modules/unzip/lib/extract.js
+++ /dev/null
@@ -1,56 +0,0 @@
-'use strict';
-
-module.exports = Extract;
-
-var Parse = require("../unzip").Parse;
-var Writer = require("fstream").Writer;
-var Writable = require('readable-stream/writable');
-var path = require('path');
-var inherits = require('util').inherits;
-
-inherits(Extract, Writable);
-
-function Extract (opts) {
- var self = this;
- if (!(this instanceof Extract)) {
- return new Extract(opts);
- }
-
- Writable.apply(this);
- this._opts = opts || { verbose: false };
-
- this._parser = Parse(this._opts);
- this._parser.on('error', function(err) {
- self.emit('error', err);
- });
- this.on('finish', function() {
- self._parser.end();
- });
-
- var writer = Writer({
- type: 'Directory',
- path: opts.path
- });
- writer.on('error', function(err) {
- self.emit('error', err);
- });
- writer.on('close', function() {
- self.emit('close')
- });
-
- this.on('pipe', function(source) {
- if (opts.verbose && source.path) {
- console.log('Archive: ', source.path);
- }
- });
-
- this._parser.pipe(writer);
-}
-
-Extract.prototype._write = function (chunk, encoding, callback) {
- if (this._parser.write(chunk)) {
- return callback();
- }
-
- return this._parser.once('drain', callback);
-};
diff --git a/scripts/node_modules/unzip/lib/parse.js b/scripts/node_modules/unzip/lib/parse.js
deleted file mode 100644
index 69fc2c40..00000000
--- a/scripts/node_modules/unzip/lib/parse.js
+++ /dev/null
@@ -1,314 +0,0 @@
-'use strict';
-
-module.exports = Parse.create = Parse;
-
-require("setimmediate");
-var Transform = require('readable-stream/transform');
-var inherits = require('util').inherits;
-var zlib = require('zlib');
-var binary = require('binary');
-var PullStream = require('pullstream');
-var MatchStream = require('match-stream');
-var Entry = require('./entry');
-
-inherits(Parse, Transform);
-
-function Parse(opts) {
- var self = this;
- if (!(this instanceof Parse)) {
- return new Parse(opts);
- }
-
- Transform.call(this, { lowWaterMark: 0 });
- this._opts = opts || { verbose: false };
- this._hasEntryListener = false;
-
- this._pullStream = new PullStream();
- this._pullStream.on("error", function (e) {
- self.emit('error', e);
- });
- this._pullStream.once("end", function () {
- self._streamEnd = true;
- });
- this._pullStream.once("finish", function () {
- self._streamFinish = true;
- });
-
- this._readRecord();
-}
-
-Parse.prototype._readRecord = function () {
- var self = this;
- this._pullStream.pull(4, function (err, data) {
- if (err) {
- return self.emit('error', err);
- }
-
- if (data.length === 0) {
- return;
- }
-
- var signature = data.readUInt32LE(0);
- if (signature === 0x04034b50) {
- self._readFile();
- } else if (signature === 0x02014b50) {
- self._readCentralDirectoryFileHeader();
- } else if (signature === 0x06054b50) {
- self._readEndOfCentralDirectoryRecord();
- } else {
- err = new Error('invalid signature: 0x' + signature.toString(16));
- self.emit('error', err);
- }
- });
-};
-
-Parse.prototype._readFile = function () {
- var self = this;
- this._pullStream.pull(26, function (err, data) {
- if (err) {
- return self.emit('error', err);
- }
-
- var vars = binary.parse(data)
- .word16lu('versionsNeededToExtract')
- .word16lu('flags')
- .word16lu('compressionMethod')
- .word16lu('lastModifiedTime')
- .word16lu('lastModifiedDate')
- .word32lu('crc32')
- .word32lu('compressedSize')
- .word32lu('uncompressedSize')
- .word16lu('fileNameLength')
- .word16lu('extraFieldLength')
- .vars;
-
- return self._pullStream.pull(vars.fileNameLength, function (err, fileName) {
- if (err) {
- return self.emit('error', err);
- }
- fileName = fileName.toString('utf8');
- var entry = new Entry();
- entry.path = fileName;
- entry.props.path = fileName;
- entry.type = (vars.compressedSize === 0 && /[\/\\]$/.test(fileName)) ? 'Directory' : 'File';
-
- if (self._opts.verbose) {
- if (entry.type === 'Directory') {
- console.log(' creating:', fileName);
- } else if (entry.type === 'File') {
- if (vars.compressionMethod === 0) {
- console.log(' extracting:', fileName);
- } else {
- console.log(' inflating:', fileName);
- }
- }
- }
-
- var hasEntryListener = self._hasEntryListener;
- if (hasEntryListener) {
- self.emit('entry', entry);
- }
-
- self._pullStream.pull(vars.extraFieldLength, function (err, extraField) {
- if (err) {
- return self.emit('error', err);
- }
- if (vars.compressionMethod === 0) {
- self._pullStream.pull(vars.compressedSize, function (err, compressedData) {
- if (err) {
- return self.emit('error', err);
- }
-
- if (hasEntryListener) {
- entry.write(compressedData);
- entry.end();
- }
-
- return self._readRecord();
- });
- } else {
- var fileSizeKnown = !(vars.flags & 0x08);
-
- var inflater = zlib.createInflateRaw();
- inflater.on('error', function (err) {
- self.emit('error', err);
- });
-
- if (fileSizeKnown) {
- entry.size = vars.uncompressedSize;
- if (hasEntryListener) {
- entry.on('finish', self._readRecord.bind(self));
- self._pullStream.pipe(vars.compressedSize, inflater).pipe(entry);
- } else {
- self._pullStream.drain(vars.compressedSize, function (err) {
- if (err) {
- return self.emit('error', err);
- }
- self._readRecord();
- });
- }
- } else {
- var descriptorSig = new Buffer(4);
- descriptorSig.writeUInt32LE(0x08074b50, 0);
-
- var matchStream = new MatchStream({ pattern: descriptorSig }, function (buf, matched, extra) {
- if (hasEntryListener) {
- if (!matched) {
- return this.push(buf);
- }
- this.push(buf);
- }
- setImmediate(function() {
- self._pullStream.unpipe();
- self._pullStream.prepend(extra);
- self._processDataDescriptor(entry);
- });
- return this.push(null);
- });
-
- self._pullStream.pipe(matchStream);
- if (hasEntryListener) {
- matchStream.pipe(inflater).pipe(entry);
- }
- }
- }
- });
- });
- });
-};
-
-Parse.prototype._processDataDescriptor = function (entry) {
- var self = this;
- this._pullStream.pull(16, function (err, data) {
- if (err) {
- return self.emit('error', err);
- }
-
- var vars = binary.parse(data)
- .word32lu('dataDescriptorSignature')
- .word32lu('crc32')
- .word32lu('compressedSize')
- .word32lu('uncompressedSize')
- .vars;
-
- entry.size = vars.uncompressedSize;
- self._readRecord();
- });
-};
-
-Parse.prototype._readCentralDirectoryFileHeader = function () {
- var self = this;
- this._pullStream.pull(42, function (err, data) {
- if (err) {
- return self.emit('error', err);
- }
-
- var vars = binary.parse(data)
- .word16lu('versionMadeBy')
- .word16lu('versionsNeededToExtract')
- .word16lu('flags')
- .word16lu('compressionMethod')
- .word16lu('lastModifiedTime')
- .word16lu('lastModifiedDate')
- .word32lu('crc32')
- .word32lu('compressedSize')
- .word32lu('uncompressedSize')
- .word16lu('fileNameLength')
- .word16lu('extraFieldLength')
- .word16lu('fileCommentLength')
- .word16lu('diskNumber')
- .word16lu('internalFileAttributes')
- .word32lu('externalFileAttributes')
- .word32lu('offsetToLocalFileHeader')
- .vars;
-
- return self._pullStream.pull(vars.fileNameLength, function (err, fileName) {
- if (err) {
- return self.emit('error', err);
- }
- fileName = fileName.toString('utf8');
-
- self._pullStream.pull(vars.extraFieldLength, function (err, extraField) {
- if (err) {
- return self.emit('error', err);
- }
- self._pullStream.pull(vars.fileCommentLength, function (err, fileComment) {
- if (err) {
- return self.emit('error', err);
- }
- return self._readRecord();
- });
- });
- });
- });
-};
-
-Parse.prototype._readEndOfCentralDirectoryRecord = function () {
- var self = this;
- this._pullStream.pull(18, function (err, data) {
- if (err) {
- return self.emit('error', err);
- }
-
- var vars = binary.parse(data)
- .word16lu('diskNumber')
- .word16lu('diskStart')
- .word16lu('numberOfRecordsOnDisk')
- .word16lu('numberOfRecords')
- .word32lu('sizeOfCentralDirectory')
- .word32lu('offsetToStartOfCentralDirectory')
- .word16lu('commentLength')
- .vars;
-
- if (vars.commentLength) {
- setImmediate(function() {
- self._pullStream.pull(vars.commentLength, function (err, comment) {
- if (err) {
- return self.emit('error', err);
- }
- comment = comment.toString('utf8');
- return self._pullStream.end();
- });
- });
-
- } else {
- self._pullStream.end();
- }
- });
-};
-
-Parse.prototype._transform = function (chunk, encoding, callback) {
- if (this._pullStream.write(chunk)) {
- return callback();
- }
-
- this._pullStream.once('drain', callback);
-};
-
-Parse.prototype.pipe = function (dest, opts) {
- var self = this;
- if (typeof dest.add === "function") {
- self.on("entry", function (entry) {
- dest.add(entry);
- })
- }
- return Transform.prototype.pipe.apply(this, arguments);
-};
-
-Parse.prototype._flush = function (callback) {
- if (!this._streamEnd || !this._streamFinish) {
- return setImmediate(this._flush.bind(this, callback));
- }
-
- this.emit('close');
- return callback();
-};
-
-Parse.prototype.addListener = function(type, listener) {
- if ('entry' === type) {
- this._hasEntryListener = true;
- }
- return Transform.prototype.addListener.call(this, type, listener);
-};
-
-Parse.prototype.on = Parse.prototype.addListener;
diff --git a/scripts/node_modules/unzip/node_modules/binary/.npmignore b/scripts/node_modules/unzip/node_modules/binary/.npmignore
deleted file mode 100644
index 3c3629e6..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/scripts/node_modules/unzip/node_modules/binary/.travis.yml b/scripts/node_modules/unzip/node_modules/binary/.travis.yml
deleted file mode 100644
index f1d0f13c..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - 0.4
- - 0.6
diff --git a/scripts/node_modules/unzip/node_modules/binary/README.markdown b/scripts/node_modules/unzip/node_modules/binary/README.markdown
deleted file mode 100644
index bbeac2e5..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/README.markdown
+++ /dev/null
@@ -1,177 +0,0 @@
-binary
-======
-
-Unpack multibyte binary values from buffers and streams.
-You can specify the endianness and signedness of the fields to be unpacked too.
-
-This module is a cleaner and more complete version of
-[bufferlist](https://github.com/substack/node-bufferlist)'s binary module that
-runs on pre-allocated buffers instead of a linked list.
-
-[![build status](https://secure.travis-ci.org/substack/node-binary.png)](http://travis-ci.org/substack/node-binary)
-
-examples
-========
-
-stream.js
----------
-
-``` js
-var binary = require('binary');
-
-var ws = binary()
- .word32lu('x')
- .word16bs('y')
- .word16bu('z')
- .tap(function (vars) {
- console.dir(vars);
- })
-;
-process.stdin.pipe(ws);
-process.stdin.resume();
-```
-
-output:
-
-```
-$ node examples/stream.js
-abcdefgh
-{ x: 1684234849, y: 25958, z: 26472 }
-^D
-```
-
-parse.js
---------
-
-``` js
-var buf = new Buffer([ 97, 98, 99, 100, 101, 102, 0 ]);
-
-var binary = require('binary');
-var vars = binary.parse(buf)
- .word16ls('ab')
- .word32bu('cf')
- .word8('x')
- .vars
-;
-console.dir(vars);
-```
-
-output:
-
-```
-{ ab: 25185, cf: 1667523942, x: 0 }
-```
-
-methods
-=======
-
-`var binary = require('binary')`
-
-var b = binary()
-----------------
-
-Return a new writable stream `b` that has the chainable methods documented below
-for buffering binary input.
-
-binary.parse(buf)
------------------
-
-Parse a static buffer in one pass. Returns a chainable interface with the
-methods below plus a `vars` field to get at the variable stash as the last item
-in a chain.
-
-In parse mode, methods will set their keys to `null` if the buffer isn't big
-enough except `buffer()` and `scan()` which read up up to the end of the buffer
-and stop.
-
-b.word{8,16,32,64}{l,b}{e,u,s}(key)
------------------------------------
-
-Parse bytes in the buffer or stream given:
-
-* number of bits
-* endianness ( l : little, b : big ),
-* signedness ( u and e : unsigned, s : signed )
-
-These functions won't start parsing until all previous parser functions have run
-and the data is available.
-
-The result of the parse goes into the variable stash at `key`.
-If `key` has dots (`.`s), it refers to a nested address. If parent container
-values don't exist they will be created automatically, so for instance you can
-assign into `dst.addr` and `dst.port` and the `dst` key in the variable stash
-will be `{ addr : x, port : y }` afterwards.
-
-b.buffer(key, size)
--------------------
-
-Take `size` bytes directly off the buffer stream, putting the resulting buffer
-slice in the variable stash at `key`. If `size` is a string, use the value at
-`vars[size]`. The key follows the same dotted address rules as the word
-functions.
-
-b.scan(key, buffer)
--------------------
-
-Search for `buffer` in the stream and store all the intervening data in the
-stash at at `key`, excluding the search buffer. If `buffer` passed as a string,
-it will be converted into a Buffer internally.
-
-For example, to read in a line you can just do:
-
-``` js
-var b = binary()
- .scan('line', new Buffer('\r\n'))
- .tap(function (vars) {
- console.log(vars.line)
- })
-;
-stream.pipe(b);
-```
-
-b.tap(cb)
----------
-
-The callback `cb` is provided with the variable stash from all the previous
-actions once they've all finished.
-
-You can nest additional actions onto `this` inside the callback.
-
-b.into(key, cb)
----------------
-
-Like `.tap()`, except all nested actions will assign into a `key` in the `vars`
-stash.
-
-b.loop(cb)
-----------
-
-Loop, each time calling `cb(end, vars)` for function `end` and the variable
-stash with `this` set to a new chain for nested parsing. The loop terminates
-once `end` is called.
-
-b.flush()
----------
-
-Clear the variable stash entirely.
-
-installation
-============
-
-To install with [npm](http://github.com/isaacs/npm):
-
-```
-npm install binary
-```
-
-notes
-=====
-
-The word64 functions will only return approximations since javascript uses ieee
-floating point for all number types. Mind the loss of precision.
-
-license
-=======
-
-MIT
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/example/buf.js b/scripts/node_modules/unzip/node_modules/binary/example/buf.js
deleted file mode 100644
index 7f5d30b8..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/example/buf.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var buf = new Buffer([ 97, 98, 99, 100, 101, 102, 0 ]);
-
-var binary = require('binary');
-binary(buf)
- .word16ls('ab')
- .word32bu('cf')
- .word8('x')
- .tap(function (vars) {
- console.dir(vars);
- })
-;
diff --git a/scripts/node_modules/unzip/node_modules/binary/example/parse.js b/scripts/node_modules/unzip/node_modules/binary/example/parse.js
deleted file mode 100644
index b3268838..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/example/parse.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var buf = new Buffer([ 97, 98, 99, 100, 101, 102, 0 ]);
-
-var binary = require('binary');
-var vars = binary.parse(buf)
- .word16ls('ab')
- .word32bu('cf')
- .word8('x')
- .vars
-;
-console.dir(vars);
diff --git a/scripts/node_modules/unzip/node_modules/binary/example/stream.js b/scripts/node_modules/unzip/node_modules/binary/example/stream.js
deleted file mode 100644
index 28a6f969..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/example/stream.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var binary = require('binary');
-
-var ws = binary()
- .word32lu('x')
- .word16bs('y')
- .word16bu('z')
- .tap(function (vars) {
- console.dir(vars);
- })
-;
-process.stdin.pipe(ws);
-process.stdin.resume();
diff --git a/scripts/node_modules/unzip/node_modules/binary/index.js b/scripts/node_modules/unzip/node_modules/binary/index.js
deleted file mode 100644
index bf2ba4b6..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/index.js
+++ /dev/null
@@ -1,397 +0,0 @@
-var Chainsaw = require('chainsaw');
-var EventEmitter = require('events').EventEmitter;
-var Buffers = require('buffers');
-var Vars = require('./lib/vars.js');
-var Stream = require('stream').Stream;
-
-exports = module.exports = function (bufOrEm, eventName) {
- if (Buffer.isBuffer(bufOrEm)) {
- return exports.parse(bufOrEm);
- }
-
- var s = exports.stream();
- if (bufOrEm && bufOrEm.pipe) {
- bufOrEm.pipe(s);
- }
- else if (bufOrEm) {
- bufOrEm.on(eventName || 'data', function (buf) {
- s.write(buf);
- });
-
- bufOrEm.on('end', function () {
- s.end();
- });
- }
- return s;
-};
-
-exports.stream = function (input) {
- if (input) return exports.apply(null, arguments);
-
- var pending = null;
- function getBytes (bytes, cb, skip) {
- pending = {
- bytes : bytes,
- skip : skip,
- cb : function (buf) {
- pending = null;
- cb(buf);
- },
- };
- dispatch();
- }
-
- var offset = null;
- function dispatch () {
- if (!pending) {
- if (caughtEnd) done = true;
- return;
- }
- if (typeof pending === 'function') {
- pending();
- }
- else {
- var bytes = offset + pending.bytes;
-
- if (buffers.length >= bytes) {
- var buf;
- if (offset == null) {
- buf = buffers.splice(0, bytes);
- if (!pending.skip) {
- buf = buf.slice();
- }
- }
- else {
- if (!pending.skip) {
- buf = buffers.slice(offset, bytes);
- }
- offset = bytes;
- }
-
- if (pending.skip) {
- pending.cb();
- }
- else {
- pending.cb(buf);
- }
- }
- }
- }
-
- function builder (saw) {
- function next () { if (!done) saw.next() }
-
- var self = words(function (bytes, cb) {
- return function (name) {
- getBytes(bytes, function (buf) {
- vars.set(name, cb(buf));
- next();
- });
- };
- });
-
- self.tap = function (cb) {
- saw.nest(cb, vars.store);
- };
-
- self.into = function (key, cb) {
- if (!vars.get(key)) vars.set(key, {});
- var parent = vars;
- vars = Vars(parent.get(key));
-
- saw.nest(function () {
- cb.apply(this, arguments);
- this.tap(function () {
- vars = parent;
- });
- }, vars.store);
- };
-
- self.flush = function () {
- vars.store = {};
- next();
- };
-
- self.loop = function (cb) {
- var end = false;
-
- saw.nest(false, function loop () {
- this.vars = vars.store;
- cb.call(this, function () {
- end = true;
- next();
- }, vars.store);
- this.tap(function () {
- if (end) saw.next()
- else loop.call(this)
- }.bind(this));
- }, vars.store);
- };
-
- self.buffer = function (name, bytes) {
- if (typeof bytes === 'string') {
- bytes = vars.get(bytes);
- }
-
- getBytes(bytes, function (buf) {
- vars.set(name, buf);
- next();
- });
- };
-
- self.skip = function (bytes) {
- if (typeof bytes === 'string') {
- bytes = vars.get(bytes);
- }
-
- getBytes(bytes, function () {
- next();
- });
- };
-
- self.scan = function find (name, search) {
- if (typeof search === 'string') {
- search = new Buffer(search);
- }
- else if (!Buffer.isBuffer(search)) {
- throw new Error('search must be a Buffer or a string');
- }
-
- var taken = 0;
- pending = function () {
- var pos = buffers.indexOf(search, offset + taken);
- var i = pos-offset-taken;
- if (pos !== -1) {
- pending = null;
- if (offset != null) {
- vars.set(
- name,
- buffers.slice(offset, offset + taken + i)
- );
- offset += taken + i + search.length;
- }
- else {
- vars.set(
- name,
- buffers.slice(0, taken + i)
- );
- buffers.splice(0, taken + i + search.length);
- }
- next();
- dispatch();
- } else {
- i = Math.max(buffers.length - search.length - offset - taken, 0);
- }
- taken += i;
- };
- dispatch();
- };
-
- self.peek = function (cb) {
- offset = 0;
- saw.nest(function () {
- cb.call(this, vars.store);
- this.tap(function () {
- offset = null;
- });
- });
- };
-
- return self;
- };
-
- var stream = Chainsaw.light(builder);
- stream.writable = true;
-
- var buffers = Buffers();
-
- stream.write = function (buf) {
- buffers.push(buf);
- dispatch();
- };
-
- var vars = Vars();
-
- var done = false, caughtEnd = false;
- stream.end = function () {
- caughtEnd = true;
- };
-
- stream.pipe = Stream.prototype.pipe;
- Object.getOwnPropertyNames(EventEmitter.prototype).forEach(function (name) {
- stream[name] = EventEmitter.prototype[name];
- });
-
- return stream;
-};
-
-exports.parse = function parse (buffer) {
- var self = words(function (bytes, cb) {
- return function (name) {
- if (offset + bytes <= buffer.length) {
- var buf = buffer.slice(offset, offset + bytes);
- offset += bytes;
- vars.set(name, cb(buf));
- }
- else {
- vars.set(name, null);
- }
- return self;
- };
- });
-
- var offset = 0;
- var vars = Vars();
- self.vars = vars.store;
-
- self.tap = function (cb) {
- cb.call(self, vars.store);
- return self;
- };
-
- self.into = function (key, cb) {
- if (!vars.get(key)) {
- vars.set(key, {});
- }
- var parent = vars;
- vars = Vars(parent.get(key));
- cb.call(self, vars.store);
- vars = parent;
- return self;
- };
-
- self.loop = function (cb) {
- var end = false;
- var ender = function () { end = true };
- while (end === false) {
- cb.call(self, ender, vars.store);
- }
- return self;
- };
-
- self.buffer = function (name, size) {
- if (typeof size === 'string') {
- size = vars.get(size);
- }
- var buf = buffer.slice(offset, Math.min(buffer.length, offset + size));
- offset += size;
- vars.set(name, buf);
-
- return self;
- };
-
- self.skip = function (bytes) {
- if (typeof bytes === 'string') {
- bytes = vars.get(bytes);
- }
- offset += bytes;
-
- return self;
- };
-
- self.scan = function (name, search) {
- if (typeof search === 'string') {
- search = new Buffer(search);
- }
- else if (!Buffer.isBuffer(search)) {
- throw new Error('search must be a Buffer or a string');
- }
- vars.set(name, null);
-
- // simple but slow string search
- for (var i = 0; i + offset <= buffer.length - search.length + 1; i++) {
- for (
- var j = 0;
- j < search.length && buffer[offset+i+j] === search[j];
- j++
- );
- if (j === search.length) break;
- }
-
- vars.set(name, buffer.slice(offset, offset + i));
- offset += i + search.length;
- return self;
- };
-
- self.peek = function (cb) {
- var was = offset;
- cb.call(self, vars.store);
- offset = was;
- return self;
- };
-
- self.flush = function () {
- vars.store = {};
- return self;
- };
-
- self.eof = function () {
- return offset >= buffer.length;
- };
-
- return self;
-};
-
-// convert byte strings to unsigned little endian numbers
-function decodeLEu (bytes) {
- var acc = 0;
- for (var i = 0; i < bytes.length; i++) {
- acc += Math.pow(256,i) * bytes[i];
- }
- return acc;
-}
-
-// convert byte strings to unsigned big endian numbers
-function decodeBEu (bytes) {
- var acc = 0;
- for (var i = 0; i < bytes.length; i++) {
- acc += Math.pow(256, bytes.length - i - 1) * bytes[i];
- }
- return acc;
-}
-
-// convert byte strings to signed big endian numbers
-function decodeBEs (bytes) {
- var val = decodeBEu(bytes);
- if ((bytes[0] & 0x80) == 0x80) {
- val -= Math.pow(256, bytes.length);
- }
- return val;
-}
-
-// convert byte strings to signed little endian numbers
-function decodeLEs (bytes) {
- var val = decodeLEu(bytes);
- if ((bytes[bytes.length - 1] & 0x80) == 0x80) {
- val -= Math.pow(256, bytes.length);
- }
- return val;
-}
-
-function words (decode) {
- var self = {};
-
- [ 1, 2, 4, 8 ].forEach(function (bytes) {
- var bits = bytes * 8;
-
- self['word' + bits + 'le']
- = self['word' + bits + 'lu']
- = decode(bytes, decodeLEu);
-
- self['word' + bits + 'ls']
- = decode(bytes, decodeLEs);
-
- self['word' + bits + 'be']
- = self['word' + bits + 'bu']
- = decode(bytes, decodeBEu);
-
- self['word' + bits + 'bs']
- = decode(bytes, decodeBEs);
- });
-
- // word8be(n) == word8le(n) for all n
- self.word8 = self.word8u = self.word8be;
- self.word8s = self.word8bs;
-
- return self;
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/lib/vars.js b/scripts/node_modules/unzip/node_modules/binary/lib/vars.js
deleted file mode 100644
index 00d6df67..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/lib/vars.js
+++ /dev/null
@@ -1,28 +0,0 @@
-module.exports = function (store) {
- function getset (name, value) {
- var node = vars.store;
- var keys = name.split('.');
- keys.slice(0,-1).forEach(function (k) {
- if (node[k] === undefined) node[k] = {};
- node = node[k]
- });
- var key = keys[keys.length - 1];
- if (arguments.length == 1) {
- return node[key];
- }
- else {
- return node[key] = value;
- }
- }
-
- var vars = {
- get : function (name) {
- return getset(name);
- },
- set : function (name, value) {
- return getset(name, value);
- },
- store : store || {},
- };
- return vars;
-};
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/README.markdown b/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/README.markdown
deleted file mode 100644
index 73a18a41..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/README.markdown
+++ /dev/null
@@ -1,122 +0,0 @@
-buffers
-=======
-
-Treat a collection of Buffers as a single contiguous partially mutable Buffer.
-
-Where possible, operations execute without creating a new Buffer and copying
-everything over.
-
-This is a cleaner more Buffery rehash of
-[bufferlist](http://github.com/substack/node-bufferlist).
-
-example
-=======
-
-slice
------
-
- var Buffers = require('buffers');
- var bufs = Buffers();
- bufs.push(new Buffer([1,2,3]));
- bufs.push(new Buffer([4,5,6,7]));
- bufs.push(new Buffer([8,9,10]));
-
- console.dir(bufs.slice(2,8))
-
-output:
-
- $ node examples/slice.js
-
-
-splice
-------
-
- var Buffers = require('buffers');
- var bufs = Buffers([
- new Buffer([1,2,3]),
- new Buffer([4,5,6,7]),
- new Buffer([8,9,10]),
- ]);
-
- var removed = bufs.splice(2, 4);
- console.dir({
- removed : removed.slice(),
- bufs : bufs.slice(),
- });
-
-output:
-
- $ node examples/splice.js
- { removed: ,
- bufs: }
-
-methods
-=======
-
-Buffers(buffers)
-----------------
-
-Create a Buffers with an array of `Buffer`s if specified, else `[]`.
-
-.push(buf1, buf2...)
---------------------
-
-Push buffers onto the end. Just like `Array.prototype.push`.
-
-.unshift(buf1, buf2...)
------------------------
-
-Unshift buffers onto the head. Just like `Array.prototype.unshift`.
-
-.slice(i, j)
-------------
-
-Slice a range out of the buffer collection as if it were contiguous.
-Works just like the `Array.prototype.slice` version.
-
-.splice(i, howMany, replacements)
----------------------------------
-
-Splice the buffer collection as if it were contiguous.
-Works just like `Array.prototype.splice`, even the replacement part!
-
-.copy(dst, dstStart, start, end)
---------------------------------
-
-Copy the buffer collection as if it were contiguous to the `dst` Buffer with the
-specified bounds.
-Works just like `Buffer.prototype.copy`.
-
-.get(i)
--------
-
-Get a single element at index `i`.
-
-.set(i, x)
-----------
-
-Set a single element's value at index `i`.
-
-.indexOf(needle, offset)
-----------
-
-Find a string or buffer `needle` inside the buffer collection. Returns
-the position of the search string or -1 if the search string was not
-found.
-
-Provide an `offset` to skip that number of characters at the beginning
-of the search. This can be used to find additional matches.
-
-This function will return the correct result even if the search string
-is spread out over multiple internal buffers.
-
-.toBuffer()
------------
-
-Convert the buffer collection to a single buffer, equivalent with `.slice(0, buffers.length)`;
-
-.toString(encoding, start, end)
------------
-
-Decodes and returns a string from the buffer collection.
-Works just like `Buffer.prototype.toString`
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/examples/slice.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/examples/slice.js
deleted file mode 100644
index 0bea38c9..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/examples/slice.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var Buffers = require('buffers');
-var bufs = Buffers();
-bufs.push(new Buffer([1,2,3]));
-bufs.push(new Buffer([4,5,6,7]));
-bufs.push(new Buffer([8,9,10]));
-
-console.dir(bufs.slice(2,8))
-
-// Output:
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/examples/splice.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/examples/splice.js
deleted file mode 100644
index 56a17518..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/examples/splice.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var Buffers = require('buffers');
-var bufs = Buffers([
- new Buffer([1,2,3]),
- new Buffer([4,5,6,7]),
- new Buffer([8,9,10]),
-]);
-
-var removed = bufs.splice(2, 4, new Buffer('ab'), new Buffer('cd'));
-console.dir({
- removed : removed.slice(),
- bufs : bufs.slice(),
-});
-
-/* Output:
-{ removed: ,
- bufs: }
-*/
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/index.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/index.js
deleted file mode 100644
index 86a96968..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/index.js
+++ /dev/null
@@ -1,269 +0,0 @@
-module.exports = Buffers;
-
-function Buffers (bufs) {
- if (!(this instanceof Buffers)) return new Buffers(bufs);
- this.buffers = bufs || [];
- this.length = this.buffers.reduce(function (size, buf) {
- return size + buf.length
- }, 0);
-}
-
-Buffers.prototype.push = function () {
- for (var i = 0; i < arguments.length; i++) {
- if (!Buffer.isBuffer(arguments[i])) {
- throw new TypeError('Tried to push a non-buffer');
- }
- }
-
- for (var i = 0; i < arguments.length; i++) {
- var buf = arguments[i];
- this.buffers.push(buf);
- this.length += buf.length;
- }
- return this.length;
-};
-
-Buffers.prototype.unshift = function () {
- for (var i = 0; i < arguments.length; i++) {
- if (!Buffer.isBuffer(arguments[i])) {
- throw new TypeError('Tried to unshift a non-buffer');
- }
- }
-
- for (var i = 0; i < arguments.length; i++) {
- var buf = arguments[i];
- this.buffers.unshift(buf);
- this.length += buf.length;
- }
- return this.length;
-};
-
-Buffers.prototype.copy = function (dst, dStart, start, end) {
- return this.slice(start, end).copy(dst, dStart, 0, end - start);
-};
-
-Buffers.prototype.splice = function (i, howMany) {
- var buffers = this.buffers;
- var index = i >= 0 ? i : this.length - i;
- var reps = [].slice.call(arguments, 2);
-
- if (howMany === undefined) {
- howMany = this.length - index;
- }
- else if (howMany > this.length - index) {
- howMany = this.length - index;
- }
-
- for (var i = 0; i < reps.length; i++) {
- this.length += reps[i].length;
- }
-
- var removed = new Buffers();
- var bytes = 0;
-
- var startBytes = 0;
- for (
- var ii = 0;
- ii < buffers.length && startBytes + buffers[ii].length < index;
- ii ++
- ) { startBytes += buffers[ii].length }
-
- if (index - startBytes > 0) {
- var start = index - startBytes;
-
- if (start + howMany < buffers[ii].length) {
- removed.push(buffers[ii].slice(start, start + howMany));
-
- var orig = buffers[ii];
- //var buf = new Buffer(orig.length - howMany);
- var buf0 = new Buffer(start);
- for (var i = 0; i < start; i++) {
- buf0[i] = orig[i];
- }
-
- var buf1 = new Buffer(orig.length - start - howMany);
- for (var i = start + howMany; i < orig.length; i++) {
- buf1[ i - howMany - start ] = orig[i]
- }
-
- if (reps.length > 0) {
- var reps_ = reps.slice();
- reps_.unshift(buf0);
- reps_.push(buf1);
- buffers.splice.apply(buffers, [ ii, 1 ].concat(reps_));
- ii += reps_.length;
- reps = [];
- }
- else {
- buffers.splice(ii, 1, buf0, buf1);
- //buffers[ii] = buf;
- ii += 2;
- }
- }
- else {
- removed.push(buffers[ii].slice(start));
- buffers[ii] = buffers[ii].slice(0, start);
- ii ++;
- }
- }
-
- if (reps.length > 0) {
- buffers.splice.apply(buffers, [ ii, 0 ].concat(reps));
- ii += reps.length;
- }
-
- while (removed.length < howMany) {
- var buf = buffers[ii];
- var len = buf.length;
- var take = Math.min(len, howMany - removed.length);
-
- if (take === len) {
- removed.push(buf);
- buffers.splice(ii, 1);
- }
- else {
- removed.push(buf.slice(0, take));
- buffers[ii] = buffers[ii].slice(take);
- }
- }
-
- this.length -= removed.length;
-
- return removed;
-};
-
-Buffers.prototype.slice = function (i, j) {
- var buffers = this.buffers;
- if (j === undefined) j = this.length;
- if (i === undefined) i = 0;
-
- if (j > this.length) j = this.length;
-
- var startBytes = 0;
- for (
- var si = 0;
- si < buffers.length && startBytes + buffers[si].length <= i;
- si ++
- ) { startBytes += buffers[si].length }
-
- var target = new Buffer(j - i);
-
- var ti = 0;
- for (var ii = si; ti < j - i && ii < buffers.length; ii++) {
- var len = buffers[ii].length;
-
- var start = ti === 0 ? i - startBytes : 0;
- var end = ti + len >= j - i
- ? Math.min(start + (j - i) - ti, len)
- : len
- ;
-
- buffers[ii].copy(target, ti, start, end);
- ti += end - start;
- }
-
- return target;
-};
-
-Buffers.prototype.pos = function (i) {
- if (i < 0 || i >= this.length) throw new Error('oob');
- var l = i, bi = 0, bu = null;
- for (;;) {
- bu = this.buffers[bi];
- if (l < bu.length) {
- return {buf: bi, offset: l};
- } else {
- l -= bu.length;
- }
- bi++;
- }
-};
-
-Buffers.prototype.get = function get (i) {
- var pos = this.pos(i);
-
- return this.buffers[pos.buf].get(pos.offset);
-};
-
-Buffers.prototype.set = function set (i, b) {
- var pos = this.pos(i);
-
- return this.buffers[pos.buf].set(pos.offset, b);
-};
-
-Buffers.prototype.indexOf = function (needle, offset) {
- if ("string" === typeof needle) {
- needle = new Buffer(needle);
- } else if (needle instanceof Buffer) {
- // already a buffer
- } else {
- throw new Error('Invalid type for a search string');
- }
-
- if (!needle.length) {
- return 0;
- }
-
- if (!this.length) {
- return -1;
- }
-
- var i = 0, j = 0, match = 0, mstart, pos = 0;
-
- // start search from a particular point in the virtual buffer
- if (offset) {
- var p = this.pos(offset);
- i = p.buf;
- j = p.offset;
- pos = offset;
- }
-
- // for each character in virtual buffer
- for (;;) {
- while (j >= this.buffers[i].length) {
- j = 0;
- i++;
-
- if (i >= this.buffers.length) {
- // search string not found
- return -1;
- }
- }
-
- var char = this.buffers[i][j];
-
- if (char == needle[match]) {
- // keep track where match started
- if (match == 0) {
- mstart = {
- i: i,
- j: j,
- pos: pos
- };
- }
- match++;
- if (match == needle.length) {
- // full match
- return mstart.pos;
- }
- } else if (match != 0) {
- // a partial match ended, go back to match starting position
- // this will continue the search at the next character
- i = mstart.i;
- j = mstart.j;
- pos = mstart.pos;
- match = 0;
- }
-
- j++;
- pos++;
- }
-};
-
-Buffers.prototype.toBuffer = function() {
- return this.slice();
-}
-
-Buffers.prototype.toString = function(encoding, start, end) {
- return this.slice(start, end).toString(encoding);
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/package.json b/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/package.json
deleted file mode 100644
index 7e906b0a..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "buffers",
- "description": "Treat a collection of Buffers as a single contiguous partially mutable Buffer.",
- "version": "0.1.1",
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/node-buffers.git"
- },
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "main": "./index",
- "scripts": {
- "test": "expresso"
- },
- "engines": {
- "node": ">=0.2.0"
- },
- "_npmJsonOpts": {
- "file": "/home/substack/.npm/buffers/0.1.1/package/package.json",
- "wscript": false,
- "contributors": false,
- "serverjs": false
- },
- "_id": "buffers@0.1.1",
- "dependencies": {},
- "devDependencies": {},
- "_engineSupported": true,
- "_npmVersion": "1.0.30",
- "_nodeVersion": "v0.4.12",
- "_defaultsLoaded": true,
- "dist": {
- "shasum": "b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb",
- "tarball": "http://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz"
- },
- "maintainers": [
- {
- "name": "substack",
- "email": "mail@substack.net"
- }
- ],
- "directories": {},
- "_shasum": "b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb",
- "_resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "_from": "buffers@>=0.1.1 <0.2.0"
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/test/buffers.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/test/buffers.js
deleted file mode 100644
index 0c240661..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/buffers/test/buffers.js
+++ /dev/null
@@ -1,209 +0,0 @@
-var assert = require('assert');
-var Buffers = require('../');
-
-function create (xs, split) {
- var bufs = Buffers();
- var offset = 0;
- split.forEach(function (i) {
- bufs.push(new Buffer(xs.slice(offset, offset + i)));
- offset += i;
- });
- return bufs;
-}
-
-exports.slice = function () {
- var xs = [0,1,2,3,4,5,6,7,8,9];
- var splits = [ [4,2,3,1], [2,2,2,2,2], [1,6,3,1], [9,2], [10], [5,5] ];
-
- splits.forEach(function (split) {
- var bufs = create(xs, split);
- assert.eql(new Buffer(xs), bufs.slice(),
- '[' + xs.join(',') + ']'
- + ' != ' +
- '[' + [].join.call(bufs.slice(), ',') + ']'
- );
-
- for (var i = 0; i < xs.length; i++) {
- for (var j = i; j < xs.length; j++) {
- var a = bufs.slice(i,j);
- var b = new Buffer(xs.slice(i,j));
-
- assert.eql(a, b,
- '[' + [].join.call(a, ',') + ']'
- + ' != ' +
- '[' + [].join.call(b, ',') + ']'
- );
- }
- }
- });
-};
-
-exports.splice = function () {
- var xs = [0,1,2,3,4,5,6,7,8,9];
- var splits = [ [4,2,3,1], [2,2,2,2,2], [1,6,3,1], [9,2], [10], [5,5] ];
-
- splits.forEach(function (split) {
- for (var i = 0; i < xs.length; i++) {
- for (var j = i; j < xs.length; j++) {
- var bufs = create(xs, split);
- var xs_ = xs.slice();
-
- var a_ = bufs.splice(i,j);
- var a = [].slice.call(a_.slice());
- var b = xs_.splice(i,j);
- assert.eql(a, b,
- '[' + a.join(',') + ']'
- + ' != ' +
- '[' + b.join(',') + ']'
- );
-
- assert.eql(bufs.slice(), new Buffer(xs_),
- '[' + [].join.call(bufs.slice(), ',') + ']'
- + ' != ' +
- '[' + [].join.call(xs_, ',') + ']'
- );
- }
- }
- });
-};
-
-exports.spliceRep = function () {
- var xs = [0,1,2,3,4,5,6,7,8,9];
- var splits = [ [4,2,3,1], [2,2,2,2,2], [1,6,3,1], [9,2], [10], [5,5] ];
- var reps = [ [], [1], [5,6], [3,1,3,3,7], [9,8,7,6,5,4,3,2,1,2,3,4,5] ];
-
- splits.forEach(function (split) {
- reps.forEach(function (rep) {
- for (var i = 0; i < xs.length; i++) {
- for (var j = i; j < xs.length; j++) {
- var bufs = create(xs, split);
- var xs_ = xs.slice();
-
- var a_ = bufs.splice.apply(
- bufs, [ i, j ].concat(new Buffer(rep))
- );
- var a = [].slice.call(a_.slice());
- var b = xs_.splice.apply(xs_, [ i, j ].concat(rep));
-
- assert.eql(a, b,
- '[' + a.join(',') + ']'
- + ' != ' +
- '[' + b.join(',') + ']'
- );
-
- assert.eql(bufs.slice(), new Buffer(xs_),
- '[' + [].join.call(bufs.slice(), ',') + ']'
- + ' != ' +
- '[' + [].join.call(xs_, ',') + ']'
- );
- }
- }
- });
- });
-};
-
-exports.copy = function () {
- var xs = [0,1,2,3,4,5,6,7,8,9];
- var splits = [ [4,2,3,1], [2,2,2,2,2], [1,6,3,1], [9,2], [10], [5,5] ];
-
- splits.forEach(function (split) {
- var bufs = create(xs, split);
- var buf = new Buffer(xs);
-
- for (var i = 0; i < xs.length; i++) {
- for (var j = i; j < xs.length; j++) {
- var t0 = new Buffer(j - i);
- var t1 = new Buffer(j - i);
-
- assert.eql(
- bufs.copy(t0, 0, i, j),
- buf.copy(t1, 0, i, j)
- );
-
- assert.eql(
- [].slice.call(t0),
- [].slice.call(t1)
- );
- }
- }
- });
-};
-
-exports.push = function () {
- var bufs = Buffers();
- bufs.push(new Buffer([0]));
- bufs.push(new Buffer([1,2,3]));
- bufs.push(new Buffer([4,5]));
- bufs.push(new Buffer([6,7,8,9]));
- assert.eql(
- [].slice.call(bufs.slice()),
- [0,1,2,3,4,5,6,7,8,9]
- );
-
- assert.throws(function () {
- bufs.push(new Buffer([11,12]), 'moo');
- });
- assert.eql(bufs.buffers.length, 4);
-};
-
-exports.unshift = function () {
- var bufs = Buffers();
- bufs.unshift(new Buffer([6,7,8,9]));
- bufs.unshift(new Buffer([4,5]));
- bufs.unshift(new Buffer([1,2,3]));
- bufs.unshift(new Buffer([0]));
- assert.eql(
- [].slice.call(bufs.slice()),
- [0,1,2,3,4,5,6,7,8,9]
- );
- assert.throws(function () {
- bufs.unshift(new Buffer([-2,-1]), 'moo');
- });
- assert.eql(bufs.buffers.length, 4);
-};
-
-exports.get = function () {
- var bufs = Buffers();
- bufs.unshift(new Buffer([6,7,8,9]));
- bufs.unshift(new Buffer([4,5]));
- bufs.unshift(new Buffer([1,2,3]));
- bufs.unshift(new Buffer([0]));
- assert.eql( bufs.get(0), 0 );
- assert.eql( bufs.get(1), 1 );
- assert.eql( bufs.get(2), 2 );
- assert.eql( bufs.get(3), 3 );
- assert.eql( bufs.get(4), 4 );
- assert.eql( bufs.get(5), 5 );
- assert.eql( bufs.get(6), 6 );
- assert.eql( bufs.get(7), 7 );
- assert.eql( bufs.get(8), 8 );
- assert.eql( bufs.get(9), 9 );
-};
-
-exports.set = function () {
- var bufs = Buffers();
- bufs.push(new Buffer("Hel"));
- bufs.push(new Buffer("lo"));
- bufs.push(new Buffer("!"));
- bufs.set(0, 'h'.charCodeAt(0) );
- bufs.set(3, 'L'.charCodeAt(0) );
- bufs.set(5, '.'.charCodeAt(0) );
- assert.eql( bufs.slice(0).toString(), 'helLo.' );
-};
-
-exports.indexOf = function () {
- var bufs = Buffers();
- bufs.push(new Buffer("Hel"));
- bufs.push(new Buffer("lo,"));
- bufs.push(new Buffer(" how are "));
- bufs.push(new Buffer("you"));
- bufs.push(new Buffer("?"));
- assert.eql( bufs.indexOf("Hello"), 0 );
- assert.eql( bufs.indexOf("Hello", 1), -1 );
- assert.eql( bufs.indexOf("ello"), 1 );
- assert.eql( bufs.indexOf("ello", 1), 1 );
- assert.eql( bufs.indexOf("ello", 2), -1 );
- assert.eql( bufs.indexOf("e"), 1 );
- assert.eql( bufs.indexOf("e", 2), 13 );
- assert.eql( bufs.indexOf(new Buffer([0x65]), 2), 13 );
-};
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/.npmignore b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/.npmignore
deleted file mode 100644
index 3c3629e6..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/README.markdown b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/README.markdown
deleted file mode 100644
index 4721f782..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/README.markdown
+++ /dev/null
@@ -1,157 +0,0 @@
-Chainsaw
-========
-
-Build chainable fluent interfaces the easy way in node.js.
-
-With this meta-module you can write modules with chainable interfaces.
-Chainsaw takes care of all of the boring details and makes nested flow control
-super simple too.
-
-Just call `Chainsaw` with a constructor function like in the examples below.
-In your methods, just do `saw.next()` to move along to the next event and
-`saw.nest()` to create a nested chain.
-
-Examples
-========
-
-add_do.js
----------
-
-This silly example adds values with a chainsaw.
-
- var Chainsaw = require('chainsaw');
-
- function AddDo (sum) {
- return Chainsaw(function (saw) {
- this.add = function (n) {
- sum += n;
- saw.next();
- };
-
- this.do = function (cb) {
- saw.nest(cb, sum);
- };
- });
- }
-
- AddDo(0)
- .add(5)
- .add(10)
- .do(function (sum) {
- if (sum > 12) this.add(-10);
- })
- .do(function (sum) {
- console.log('Sum: ' + sum);
- })
- ;
-
-Output:
- Sum: 5
-
-prompt.js
----------
-
-This example provides a wrapper on top of stdin with the help of
-[node-lazy](https://github.com/pkrumins/node-lazy) for line-processing.
-
- var Chainsaw = require('chainsaw');
- var Lazy = require('lazy');
-
- module.exports = Prompt;
- function Prompt (stream) {
- var waiting = [];
- var lines = [];
- var lazy = Lazy(stream).lines.map(String)
- .forEach(function (line) {
- if (waiting.length) {
- var w = waiting.shift();
- w(line);
- }
- else lines.push(line);
- })
- ;
-
- var vars = {};
- return Chainsaw(function (saw) {
- this.getline = function (f) {
- var g = function (line) {
- saw.nest(f, line, vars);
- };
-
- if (lines.length) g(lines.shift());
- else waiting.push(g);
- };
-
- this.do = function (cb) {
- saw.nest(cb, vars);
- };
- });
- }
-
-And now for the new Prompt() module in action:
-
- var util = require('util');
- var stdin = process.openStdin();
-
- Prompt(stdin)
- .do(function () {
- util.print('x = ');
- })
- .getline(function (line, vars) {
- vars.x = parseInt(line, 10);
- })
- .do(function () {
- util.print('y = ');
- })
- .getline(function (line, vars) {
- vars.y = parseInt(line, 10);
- })
- .do(function (vars) {
- if (vars.x + vars.y < 10) {
- util.print('z = ');
- this.getline(function (line) {
- vars.z = parseInt(line, 10);
- })
- }
- else {
- vars.z = 0;
- }
- })
- .do(function (vars) {
- console.log('x + y + z = ' + (vars.x + vars.y + vars.z));
- process.exit();
- })
- ;
-
-Installation
-============
-
-With [npm](http://github.com/isaacs/npm), just do:
- npm install chainsaw
-
-or clone this project on github:
-
- git clone http://github.com/substack/node-chainsaw.git
-
-To run the tests with [expresso](http://github.com/visionmedia/expresso),
-just do:
-
- expresso
-
-
-Light Mode vs Full Mode
-=======================
-
-`node-chainsaw` supports two different modes. In full mode, every
-action is recorded, which allows you to replay actions using the
-`jump()`, `trap()` and `down()` methods.
-
-However, if your chainsaws are long-lived, recording every action can
-consume a tremendous amount of memory, so we also offer a "light" mode
-where actions are not recorded and the aforementioned methods are
-disabled.
-
-To enable light mode simply use `Chainsaw.light()` to construct your
-saw, instead of `Chainsaw()`.
-
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/examples/add_do.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/examples/add_do.js
deleted file mode 100644
index 378705df..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/examples/add_do.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var Chainsaw = require('chainsaw');
-
-function AddDo (sum) {
- return Chainsaw(function (saw) {
- this.add = function (n) {
- sum += n;
- saw.next();
- };
-
- this.do = function (cb) {
- saw.nest(cb, sum);
- };
- });
-}
-
-AddDo(0)
- .add(5)
- .add(10)
- .do(function (sum) {
- if (sum > 12) this.add(-10);
- })
- .do(function (sum) {
- console.log('Sum: ' + sum);
- })
-;
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/examples/prompt.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/examples/prompt.js
deleted file mode 100644
index 0a06d71c..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/examples/prompt.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var Chainsaw = require('chainsaw');
-var Lazy = require('lazy');
-
-module.exports = Prompt;
-function Prompt (stream) {
- var waiting = [];
- var lines = [];
- var lazy = Lazy(stream).lines.map(String)
- .forEach(function (line) {
- if (waiting.length) {
- var w = waiting.shift();
- w(line);
- }
- else lines.push(line);
- })
- ;
-
- var vars = {};
- return Chainsaw(function (saw) {
- this.getline = function (f) {
- var g = function (line) {
- saw.nest(f, line, vars);
- };
-
- if (lines.length) g(lines.shift());
- else waiting.push(g);
- };
-
- this.do = function (cb) {
- saw.nest(cb, vars);
- };
- });
-}
-
-var util = require('util');
-if (__filename === process.argv[1]) {
- var stdin = process.openStdin();
- Prompt(stdin)
- .do(function () {
- util.print('x = ');
- })
- .getline(function (line, vars) {
- vars.x = parseInt(line, 10);
- })
- .do(function () {
- util.print('y = ');
- })
- .getline(function (line, vars) {
- vars.y = parseInt(line, 10);
- })
- .do(function (vars) {
- if (vars.x + vars.y < 10) {
- util.print('z = ');
- this.getline(function (line) {
- vars.z = parseInt(line, 10);
- })
- }
- else {
- vars.z = 0;
- }
- })
- .do(function (vars) {
- console.log('x + y + z = ' + (vars.x + vars.y + vars.z));
- process.exit();
- })
- ;
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/index.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/index.js
deleted file mode 100755
index 39f8c078..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/index.js
+++ /dev/null
@@ -1,145 +0,0 @@
-var Traverse = require('traverse');
-var EventEmitter = require('events').EventEmitter;
-
-module.exports = Chainsaw;
-function Chainsaw (builder) {
- var saw = Chainsaw.saw(builder, {});
- var r = builder.call(saw.handlers, saw);
- if (r !== undefined) saw.handlers = r;
- saw.record();
- return saw.chain();
-};
-
-Chainsaw.light = function ChainsawLight (builder) {
- var saw = Chainsaw.saw(builder, {});
- var r = builder.call(saw.handlers, saw);
- if (r !== undefined) saw.handlers = r;
- return saw.chain();
-};
-
-Chainsaw.saw = function (builder, handlers) {
- var saw = new EventEmitter;
- saw.handlers = handlers;
- saw.actions = [];
-
- saw.chain = function () {
- var ch = Traverse(saw.handlers).map(function (node) {
- if (this.isRoot) return node;
- var ps = this.path;
-
- if (typeof node === 'function') {
- this.update(function () {
- saw.actions.push({
- path : ps,
- args : [].slice.call(arguments)
- });
- return ch;
- });
- }
- });
-
- process.nextTick(function () {
- saw.emit('begin');
- saw.next();
- });
-
- return ch;
- };
-
- saw.pop = function () {
- return saw.actions.shift();
- };
-
- saw.next = function () {
- var action = saw.pop();
-
- if (!action) {
- saw.emit('end');
- }
- else if (!action.trap) {
- var node = saw.handlers;
- action.path.forEach(function (key) { node = node[key] });
- node.apply(saw.handlers, action.args);
- }
- };
-
- saw.nest = function (cb) {
- var args = [].slice.call(arguments, 1);
- var autonext = true;
-
- if (typeof cb === 'boolean') {
- var autonext = cb;
- cb = args.shift();
- }
-
- var s = Chainsaw.saw(builder, {});
- var r = builder.call(s.handlers, s);
-
- if (r !== undefined) s.handlers = r;
-
- // If we are recording...
- if ("undefined" !== typeof saw.step) {
- // ... our children should, too
- s.record();
- }
-
- cb.apply(s.chain(), args);
- if (autonext !== false) s.on('end', saw.next);
- };
-
- saw.record = function () {
- upgradeChainsaw(saw);
- };
-
- ['trap', 'down', 'jump'].forEach(function (method) {
- saw[method] = function () {
- throw new Error("To use the trap, down and jump features, please "+
- "call record() first to start recording actions.");
- };
- });
-
- return saw;
-};
-
-function upgradeChainsaw(saw) {
- saw.step = 0;
-
- // override pop
- saw.pop = function () {
- return saw.actions[saw.step++];
- };
-
- saw.trap = function (name, cb) {
- var ps = Array.isArray(name) ? name : [name];
- saw.actions.push({
- path : ps,
- step : saw.step,
- cb : cb,
- trap : true
- });
- };
-
- saw.down = function (name) {
- var ps = (Array.isArray(name) ? name : [name]).join('/');
- var i = saw.actions.slice(saw.step).map(function (x) {
- if (x.trap && x.step <= saw.step) return false;
- return x.path.join('/') == ps;
- }).indexOf(true);
-
- if (i >= 0) saw.step += i;
- else saw.step = saw.actions.length;
-
- var act = saw.actions[saw.step - 1];
- if (act && act.trap) {
- // It's a trap!
- saw.step = act.step;
- act.cb();
- }
- else saw.next();
- };
-
- saw.jump = function (step) {
- saw.step = step;
- saw.next();
- };
-};
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/.npmignore b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/.npmignore
deleted file mode 100644
index 3c3629e6..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/LICENSE b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/LICENSE
deleted file mode 100644
index 7b75500c..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-Copyright 2010 James Halliday (mail@substack.net)
-
-This project is free software released under the MIT/X11 license:
-http://www.opensource.org/licenses/mit-license.php
-
-Copyright 2010 James Halliday (mail@substack.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/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/README.markdown b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/README.markdown
deleted file mode 100644
index 5728639a..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/README.markdown
+++ /dev/null
@@ -1,247 +0,0 @@
-traverse
-========
-
-Traverse and transform objects by visiting every node on a recursive walk.
-
-examples
-========
-
-transform negative numbers in-place
------------------------------------
-
-negative.js
-
-````javascript
-var traverse = require('traverse');
-var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
-
-traverse(obj).forEach(function (x) {
- if (x < 0) this.update(x + 128);
-});
-
-console.dir(obj);
-````
-
-Output:
-
- [ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ]
-
-collect leaf nodes
-------------------
-
-leaves.js
-
-````javascript
-var traverse = require('traverse');
-
-var obj = {
- a : [1,2,3],
- b : 4,
- c : [5,6],
- d : { e : [7,8], f : 9 },
-};
-
-var leaves = traverse(obj).reduce(function (acc, x) {
- if (this.isLeaf) acc.push(x);
- return acc;
-}, []);
-
-console.dir(leaves);
-````
-
-Output:
-
- [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
-
-context
-=======
-
-Each method that takes a callback has a context (its `this` object) with these
-attributes:
-
-this.node
----------
-
-The present node on the recursive walk
-
-this.path
----------
-
-An array of string keys from the root to the present node
-
-this.parent
------------
-
-The context of the node's parent.
-This is `undefined` for the root node.
-
-this.key
---------
-
-The name of the key of the present node in its parent.
-This is `undefined` for the root node.
-
-this.isRoot, this.notRoot
--------------------------
-
-Whether the present node is the root node
-
-this.isLeaf, this.notLeaf
--------------------------
-
-Whether or not the present node is a leaf node (has no children)
-
-this.level
-----------
-
-Depth of the node within the traversal
-
-this.circular
--------------
-
-If the node equals one of its parents, the `circular` attribute is set to the
-context of that parent and the traversal progresses no deeper.
-
-this.update(value)
-------------------
-
-Set a new value for the present node.
-
-this.remove()
--------------
-
-Remove the current element from the output. If the node is in an Array it will
-be spliced off. Otherwise it will be deleted from its parent.
-
-this.delete()
--------------
-
-Delete the current element from its parent in the output. Calls `delete` even on
-Arrays.
-
-this.before(fn)
----------------
-
-Call this function before any of the children are traversed.
-
-this.after(fn)
---------------
-
-Call this function after any of the children are traversed.
-
-this.pre(fn)
-------------
-
-Call this function before each of the children are traversed.
-
-this.post(fn)
--------------
-
-Call this function after each of the children are traversed.
-
-methods
-=======
-
-.map(fn)
---------
-
-Execute `fn` for each node in the object and return a new object with the
-results of the walk. To update nodes in the result use `this.update(value)`.
-
-.forEach(fn)
-------------
-
-Execute `fn` for each node in the object but unlike `.map()`, when
-`this.update()` is called it updates the object in-place.
-
-.reduce(fn, acc)
-----------------
-
-For each node in the object, perform a
-[left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function))
-with the return value of `fn(acc, node)`.
-
-If `acc` isn't specified, `acc` is set to the root object for the first step
-and the root element is skipped.
-
-.deepEqual(obj)
----------------
-
-Returns a boolean, whether the instance value is equal to the supplied object
-along a deep traversal using some opinionated choices.
-
-Some notes:
-
-* RegExps are equal if their .toString()s match, but not functions since
-functions can close over different variables.
-
-* Date instances are compared using `.getTime()` just like `assert.deepEqual()`.
-
-* Circular references must refer to the same paths within the data structure for
-both objects. For instance, in this snippet:
-
-````javascript
-var a = [1];
-a.push(a); // a = [ 1, *a ]
-
-var b = [1];
-b.push(a); // b = [ 1, [ 1, *a ] ]
-````
-
-`a` is not the same as `b` since even though the expansion is the same, the
-circular references in each refer to different paths into the data structure.
-
-However, in:
-
-````javascript
-var c = [1];
-c.push(c); // c = [ 1, *c ];
-````
-
-`c` is equal to `a` in a `deepEqual()` because they have the same terminal node
-structure.
-
-* Arguments objects are not arrays and neither are they the same as regular
-objects.
-
-* Instances created with `new` of String, Boolean, and Number types are never
-equal to the native versions.
-
-.paths()
---------
-
-Return an `Array` of every possible non-cyclic path in the object.
-Paths are `Array`s of string keys.
-
-.nodes()
---------
-
-Return an `Array` of every node in the object.
-
-.clone()
---------
-
-Create a deep clone of the object.
-
-installation
-============
-
-Using npm:
- npm install traverse
-
-Or check out the repository and link your development copy:
- git clone http://github.com/substack/js-traverse.git
- cd js-traverse
- npm link .
-
-You can test traverse with "expresso":http://github.com/visionmedia/expresso
-(`npm install expresso`):
- js-traverse $ expresso
-
- 100% wahoo, your stuff is not broken!
-
-hash transforms
-===============
-
-This library formerly had a hash transformation component. It has been
-[moved to the hashish package](https://github.com/substack/node-hashish).
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/json.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/json.js
deleted file mode 100755
index f3bd9893..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/json.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var Traverse = require('traverse');
-
-var id = 54;
-var callbacks = {};
-var obj = { moo : function () {}, foo : [2,3,4, function () {}] };
-
-var scrubbed = Traverse(obj).map(function (x) {
- if (typeof x === 'function') {
- callbacks[id] = { id : id, f : x, path : this.path };
- this.update('[Function]');
- id++;
- }
-});
-
-console.dir(scrubbed);
-console.dir(callbacks);
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/leaves.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/leaves.js
deleted file mode 100755
index ef5325fb..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/leaves.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var Traverse = require('traverse');
-
-var obj = {
- a : [1,2,3],
- b : 4,
- c : [5,6],
- d : { e : [7,8], f : 9 },
-};
-
-var leaves = Traverse(obj).reduce(function (acc, x) {
- if (this.isLeaf) acc.push(x);
- return acc;
-}, []);
-
-console.dir(leaves);
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/negative.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/negative.js
deleted file mode 100755
index a3996c55..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/negative.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var Traverse = require('traverse');
-var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
-
-Traverse(obj).forEach(function (x) {
- if (x < 0) this.update(x + 128);
-});
-
-console.dir(obj);
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/stringify.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/stringify.js
deleted file mode 100755
index 0cef7ece..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/examples/stringify.js
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env node
-var Traverse = require('traverse');
-
-var obj = [ 'five', 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
-
-var s = '';
-Traverse(obj).forEach(function to_s (node) {
- if (Array.isArray(node)) {
- this.before(function () { s += '[' });
- this.post(function (child) {
- if (!child.isLast) s += ',';
- });
- this.after(function () { s += ']' });
- }
- else if (typeof node == 'object') {
- this.before(function () { s += '{' });
- this.pre(function (x, key) {
- to_s(key);
- s += ':';
- });
- this.post(function (child) {
- if (!child.isLast) s += ',';
- });
- this.after(function () { s += '}' });
- }
- else if (typeof node == 'string') {
- s += '"' + node.toString().replace(/"/g, '\\"') + '"';
- }
- else if (typeof node == 'function') {
- s += 'null';
- }
- else {
- s += node.toString();
- }
-});
-
-console.log('JSON.stringify: ' + JSON.stringify(obj));
-console.log('this stringify: ' + s);
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/index.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/index.js
deleted file mode 100755
index 7a34c8a0..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/index.js
+++ /dev/null
@@ -1,322 +0,0 @@
-module.exports = Traverse;
-function Traverse (obj) {
- if (!(this instanceof Traverse)) return new Traverse(obj);
- this.value = obj;
-}
-
-Traverse.prototype.get = function (ps) {
- var node = this.value;
- for (var i = 0; i < ps.length; i ++) {
- var key = ps[i];
- if (!Object.hasOwnProperty.call(node, key)) {
- node = undefined;
- break;
- }
- node = node[key];
- }
- return node;
-};
-
-Traverse.prototype.set = function (ps, value) {
- var node = this.value;
- for (var i = 0; i < ps.length - 1; i ++) {
- var key = ps[i];
- if (!Object.hasOwnProperty.call(node, key)) node[key] = {};
- node = node[key];
- }
- node[ps[i]] = value;
- return value;
-};
-
-Traverse.prototype.map = function (cb) {
- return walk(this.value, cb, true);
-};
-
-Traverse.prototype.forEach = function (cb) {
- this.value = walk(this.value, cb, false);
- return this.value;
-};
-
-Traverse.prototype.reduce = function (cb, init) {
- var skip = arguments.length === 1;
- var acc = skip ? this.value : init;
- this.forEach(function (x) {
- if (!this.isRoot || !skip) {
- acc = cb.call(this, acc, x);
- }
- });
- return acc;
-};
-
-Traverse.prototype.deepEqual = function (obj) {
- if (arguments.length !== 1) {
- throw new Error(
- 'deepEqual requires exactly one object to compare against'
- );
- }
-
- var equal = true;
- var node = obj;
-
- this.forEach(function (y) {
- var notEqual = (function () {
- equal = false;
- //this.stop();
- return undefined;
- }).bind(this);
-
- //if (node === undefined || node === null) return notEqual();
-
- if (!this.isRoot) {
- /*
- if (!Object.hasOwnProperty.call(node, this.key)) {
- return notEqual();
- }
- */
- if (typeof node !== 'object') return notEqual();
- node = node[this.key];
- }
-
- var x = node;
-
- this.post(function () {
- node = x;
- });
-
- var toS = function (o) {
- return Object.prototype.toString.call(o);
- };
-
- if (this.circular) {
- if (Traverse(obj).get(this.circular.path) !== x) notEqual();
- }
- else if (typeof x !== typeof y) {
- notEqual();
- }
- else if (x === null || y === null || x === undefined || y === undefined) {
- if (x !== y) notEqual();
- }
- else if (x.__proto__ !== y.__proto__) {
- notEqual();
- }
- else if (x === y) {
- // nop
- }
- else if (typeof x === 'function') {
- if (x instanceof RegExp) {
- // both regexps on account of the __proto__ check
- if (x.toString() != y.toString()) notEqual();
- }
- else if (x !== y) notEqual();
- }
- else if (typeof x === 'object') {
- if (toS(y) === '[object Arguments]'
- || toS(x) === '[object Arguments]') {
- if (toS(x) !== toS(y)) {
- notEqual();
- }
- }
- else if (x instanceof Date || y instanceof Date) {
- if (!(x instanceof Date) || !(y instanceof Date)
- || x.getTime() !== y.getTime()) {
- notEqual();
- }
- }
- else {
- var kx = Object.keys(x);
- var ky = Object.keys(y);
- if (kx.length !== ky.length) return notEqual();
- for (var i = 0; i < kx.length; i++) {
- var k = kx[i];
- if (!Object.hasOwnProperty.call(y, k)) {
- notEqual();
- }
- }
- }
- }
- });
-
- return equal;
-};
-
-Traverse.prototype.paths = function () {
- var acc = [];
- this.forEach(function (x) {
- acc.push(this.path);
- });
- return acc;
-};
-
-Traverse.prototype.nodes = function () {
- var acc = [];
- this.forEach(function (x) {
- acc.push(this.node);
- });
- return acc;
-};
-
-Traverse.prototype.clone = function () {
- var parents = [], nodes = [];
-
- return (function clone (src) {
- for (var i = 0; i < parents.length; i++) {
- if (parents[i] === src) {
- return nodes[i];
- }
- }
-
- if (typeof src === 'object' && src !== null) {
- var dst = copy(src);
-
- parents.push(src);
- nodes.push(dst);
-
- Object.keys(src).forEach(function (key) {
- dst[key] = clone(src[key]);
- });
-
- parents.pop();
- nodes.pop();
- return dst;
- }
- else {
- return src;
- }
- })(this.value);
-};
-
-function walk (root, cb, immutable) {
- var path = [];
- var parents = [];
- var alive = true;
-
- return (function walker (node_) {
- var node = immutable ? copy(node_) : node_;
- var modifiers = {};
-
- var state = {
- node : node,
- node_ : node_,
- path : [].concat(path),
- parent : parents.slice(-1)[0],
- key : path.slice(-1)[0],
- isRoot : path.length === 0,
- level : path.length,
- circular : null,
- update : function (x) {
- if (!state.isRoot) {
- state.parent.node[state.key] = x;
- }
- state.node = x;
- },
- 'delete' : function () {
- delete state.parent.node[state.key];
- },
- remove : function () {
- if (Array.isArray(state.parent.node)) {
- state.parent.node.splice(state.key, 1);
- }
- else {
- delete state.parent.node[state.key];
- }
- },
- before : function (f) { modifiers.before = f },
- after : function (f) { modifiers.after = f },
- pre : function (f) { modifiers.pre = f },
- post : function (f) { modifiers.post = f },
- stop : function () { alive = false }
- };
-
- if (!alive) return state;
-
- if (typeof node === 'object' && node !== null) {
- state.isLeaf = Object.keys(node).length == 0;
-
- for (var i = 0; i < parents.length; i++) {
- if (parents[i].node_ === node_) {
- state.circular = parents[i];
- break;
- }
- }
- }
- else {
- state.isLeaf = true;
- }
-
- state.notLeaf = !state.isLeaf;
- state.notRoot = !state.isRoot;
-
- // use return values to update if defined
- var ret = cb.call(state, state.node);
- if (ret !== undefined && state.update) state.update(ret);
- if (modifiers.before) modifiers.before.call(state, state.node);
-
- if (typeof state.node == 'object'
- && state.node !== null && !state.circular) {
- parents.push(state);
-
- var keys = Object.keys(state.node);
- keys.forEach(function (key, i) {
- path.push(key);
-
- if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);
-
- var child = walker(state.node[key]);
- if (immutable && Object.hasOwnProperty.call(state.node, key)) {
- state.node[key] = child.node;
- }
-
- child.isLast = i == keys.length - 1;
- child.isFirst = i == 0;
-
- if (modifiers.post) modifiers.post.call(state, child);
-
- path.pop();
- });
- parents.pop();
- }
-
- if (modifiers.after) modifiers.after.call(state, state.node);
-
- return state;
- })(root).node;
-}
-
-Object.keys(Traverse.prototype).forEach(function (key) {
- Traverse[key] = function (obj) {
- var args = [].slice.call(arguments, 1);
- var t = Traverse(obj);
- return t[key].apply(t, args);
- };
-});
-
-function copy (src) {
- if (typeof src === 'object' && src !== null) {
- var dst;
-
- if (Array.isArray(src)) {
- dst = [];
- }
- else if (src instanceof Date) {
- dst = new Date(src);
- }
- else if (src instanceof Boolean) {
- dst = new Boolean(src);
- }
- else if (src instanceof Number) {
- dst = new Number(src);
- }
- else if (src instanceof String) {
- dst = new String(src);
- }
- else {
- dst = Object.create(Object.getPrototypeOf(src));
- }
-
- Object.keys(src).forEach(function (key) {
- dst[key] = src[key];
- });
- return dst;
- }
- else return src;
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/package.json b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/package.json
deleted file mode 100644
index 3f5dfeee..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/package.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "name": "traverse",
- "version": "0.3.9",
- "description": "Traverse and transform objects by visiting every node on a recursive walk",
- "author": {
- "name": "James Halliday"
- },
- "license": "MIT/X11",
- "main": "./index",
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/js-traverse.git"
- },
- "devDependencies": {
- "expresso": "0.7.x"
- },
- "scripts": {
- "test": "expresso"
- },
- "_id": "traverse@0.3.9",
- "dependencies": {},
- "engines": {
- "node": "*"
- },
- "_engineSupported": true,
- "_npmVersion": "1.0.10",
- "_nodeVersion": "v0.5.0-pre",
- "_defaultsLoaded": true,
- "dist": {
- "shasum": "717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9",
- "tarball": "http://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz"
- },
- "directories": {},
- "_shasum": "717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9",
- "_resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "_from": "traverse@>=0.3.0 <0.4.0"
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/circular.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/circular.js
deleted file mode 100644
index e1eef3f8..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/circular.js
+++ /dev/null
@@ -1,114 +0,0 @@
-var assert = require('assert');
-var Traverse = require('traverse');
-var util = require('util');
-
-exports.circular = function () {
- var obj = { x : 3 };
- obj.y = obj;
- var foundY = false;
- Traverse(obj).forEach(function (x) {
- if (this.path.join('') == 'y') {
- assert.equal(
- util.inspect(this.circular.node),
- util.inspect(obj)
- );
- foundY = true;
- }
- });
- assert.ok(foundY);
-};
-
-exports.deepCirc = function () {
- var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
- obj.y[2] = obj;
-
- var times = 0;
- Traverse(obj).forEach(function (x) {
- if (this.circular) {
- assert.deepEqual(this.circular.path, []);
- assert.deepEqual(this.path, [ 'y', 2 ]);
- times ++;
- }
- });
-
- assert.deepEqual(times, 1);
-};
-
-exports.doubleCirc = function () {
- var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
- obj.y[2] = obj;
- obj.x.push(obj.y);
-
- var circs = [];
- Traverse(obj).forEach(function (x) {
- if (this.circular) {
- circs.push({ circ : this.circular, self : this, node : x });
- }
- });
-
- assert.deepEqual(circs[0].self.path, [ 'x', 3, 2 ]);
- assert.deepEqual(circs[0].circ.path, []);
-
- assert.deepEqual(circs[1].self.path, [ 'y', 2 ]);
- assert.deepEqual(circs[1].circ.path, []);
-
- assert.deepEqual(circs.length, 2);
-};
-
-exports.circDubForEach = function () {
- var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
- obj.y[2] = obj;
- obj.x.push(obj.y);
-
- Traverse(obj).forEach(function (x) {
- if (this.circular) this.update('...');
- });
-
- assert.deepEqual(obj, { x : [ 1, 2, 3, [ 4, 5, '...' ] ], y : [ 4, 5, '...' ] });
-};
-
-exports.circDubMap = function () {
- var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
- obj.y[2] = obj;
- obj.x.push(obj.y);
-
- var c = Traverse(obj).map(function (x) {
- if (this.circular) {
- this.update('...');
- }
- });
-
- assert.deepEqual(c, { x : [ 1, 2, 3, [ 4, 5, '...' ] ], y : [ 4, 5, '...' ] });
-};
-
-exports.circClone = function () {
- var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
- obj.y[2] = obj;
- obj.x.push(obj.y);
-
- var clone = Traverse.clone(obj);
- assert.ok(obj !== clone);
-
- assert.ok(clone.y[2] === clone);
- assert.ok(clone.y[2] !== obj);
- assert.ok(clone.x[3][2] === clone);
- assert.ok(clone.x[3][2] !== obj);
- assert.deepEqual(clone.x.slice(0,3), [1,2,3]);
- assert.deepEqual(clone.y.slice(0,2), [4,5]);
-};
-
-exports.circMapScrub = function () {
- var obj = { a : 1, b : 2 };
- obj.c = obj;
-
- var scrubbed = Traverse(obj).map(function (node) {
- if (this.circular) this.remove();
- });
- assert.deepEqual(
- Object.keys(scrubbed).sort(),
- [ 'a', 'b' ]
- );
- assert.ok(Traverse.deepEqual(scrubbed, { a : 1, b : 2 }));
-
- assert.equal(obj.c, obj);
-};
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/date.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/date.js
deleted file mode 100644
index 2cb82525..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/date.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var assert = require('assert');
-var Traverse = require('traverse');
-
-exports.dateEach = function () {
- var obj = { x : new Date, y : 10, z : 5 };
-
- var counts = {};
-
- Traverse(obj).forEach(function (node) {
- var t = (node instanceof Date && 'Date') || typeof node;
- counts[t] = (counts[t] || 0) + 1;
- });
-
- assert.deepEqual(counts, {
- object : 1,
- Date : 1,
- number : 2,
- });
-};
-
-exports.dateMap = function () {
- var obj = { x : new Date, y : 10, z : 5 };
-
- var res = Traverse(obj).map(function (node) {
- if (typeof node === 'number') this.update(node + 100);
- });
-
- assert.ok(obj.x !== res.x);
- assert.deepEqual(res, {
- x : obj.x,
- y : 110,
- z : 105,
- });
-};
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/equal.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/equal.js
deleted file mode 100644
index 4d732fab..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/equal.js
+++ /dev/null
@@ -1,219 +0,0 @@
-var assert = require('assert');
-var traverse = require('traverse');
-
-exports.deepDates = function () {
- assert.ok(
- traverse.deepEqual(
- { d : new Date, x : [ 1, 2, 3 ] },
- { d : new Date, x : [ 1, 2, 3 ] }
- ),
- 'dates should be equal'
- );
-
- var d0 = new Date;
- setTimeout(function () {
- assert.ok(
- !traverse.deepEqual(
- { d : d0, x : [ 1, 2, 3 ], },
- { d : new Date, x : [ 1, 2, 3 ] }
- ),
- 'microseconds should count in date equality'
- );
- }, 5);
-};
-
-exports.deepCircular = function () {
- var a = [1];
- a.push(a); // a = [ 1, *a ]
-
- var b = [1];
- b.push(a); // b = [ 1, [ 1, *a ] ]
-
- assert.ok(
- !traverse.deepEqual(a, b),
- 'circular ref mount points count towards equality'
- );
-
- var c = [1];
- c.push(c); // c = [ 1, *c ]
- assert.ok(
- traverse.deepEqual(a, c),
- 'circular refs are structurally the same here'
- );
-
- var d = [1];
- d.push(a); // c = [ 1, [ 1, *d ] ]
- assert.ok(
- traverse.deepEqual(b, d),
- 'non-root circular ref structural comparison'
- );
-};
-
-exports.deepInstances = function () {
- assert.ok(
- !traverse.deepEqual([ new Boolean(false) ], [ false ]),
- 'boolean instances are not real booleans'
- );
-
- assert.ok(
- !traverse.deepEqual([ new String('x') ], [ 'x' ]),
- 'string instances are not real strings'
- );
-
- assert.ok(
- !traverse.deepEqual([ new Number(4) ], [ 4 ]),
- 'number instances are not real numbers'
- );
-
- assert.ok(
- traverse.deepEqual([ new RegExp('x') ], [ /x/ ]),
- 'regexp instances are real regexps'
- );
-
- assert.ok(
- !traverse.deepEqual([ new RegExp(/./) ], [ /../ ]),
- 'these regexps aren\'t the same'
- );
-
- assert.ok(
- !traverse.deepEqual(
- [ function (x) { return x * 2 } ],
- [ function (x) { return x * 2 } ]
- ),
- 'functions with the same .toString() aren\'t necessarily the same'
- );
-
- var f = function (x) { return x * 2 };
- assert.ok(
- traverse.deepEqual([ f ], [ f ]),
- 'these functions are actually equal'
- );
-};
-
-exports.deepEqual = function () {
- assert.ok(
- !traverse.deepEqual([ 1, 2, 3 ], { 0 : 1, 1 : 2, 2 : 3 }),
- 'arrays are not objects'
- );
-};
-
-exports.falsy = function () {
- assert.ok(
- !traverse.deepEqual([ undefined ], [ null ]),
- 'null is not undefined!'
- );
-
- assert.ok(
- !traverse.deepEqual([ null ], [ undefined ]),
- 'undefined is not null!'
- );
-
- assert.ok(
- !traverse.deepEqual(
- { a : 1, b : 2, c : [ 3, undefined, 5 ] },
- { a : 1, b : 2, c : [ 3, null, 5 ] }
- ),
- 'undefined is not null, however deeply!'
- );
-
- assert.ok(
- !traverse.deepEqual(
- { a : 1, b : 2, c : [ 3, undefined, 5 ] },
- { a : 1, b : 2, c : [ 3, null, 5 ] }
- ),
- 'null is not undefined, however deeply!'
- );
-
- assert.ok(
- !traverse.deepEqual(
- { a : 1, b : 2, c : [ 3, undefined, 5 ] },
- { a : 1, b : 2, c : [ 3, null, 5 ] }
- ),
- 'null is not undefined, however deeply!'
- );
-};
-
-exports.deletedArrayEqual = function () {
- var xs = [ 1, 2, 3, 4 ];
- delete xs[2];
-
- var ys = Object.create(Array.prototype);
- ys[0] = 1;
- ys[1] = 2;
- ys[3] = 4;
-
- assert.ok(
- traverse.deepEqual(xs, ys),
- 'arrays with deleted elements are only equal to'
- + ' arrays with similarly deleted elements'
- );
-
- assert.ok(
- !traverse.deepEqual(xs, [ 1, 2, undefined, 4 ]),
- 'deleted array elements cannot be undefined'
- );
-
- assert.ok(
- !traverse.deepEqual(xs, [ 1, 2, null, 4 ]),
- 'deleted array elements cannot be null'
- );
-};
-
-exports.deletedObjectEqual = function () {
- var obj = { a : 1, b : 2, c : 3 };
- delete obj.c;
-
- assert.ok(
- traverse.deepEqual(obj, { a : 1, b : 2 }),
- 'deleted object elements should not show up'
- );
-
- assert.ok(
- !traverse.deepEqual(obj, { a : 1, b : 2, c : undefined }),
- 'deleted object elements are not undefined'
- );
-
- assert.ok(
- !traverse.deepEqual(obj, { a : 1, b : 2, c : null }),
- 'deleted object elements are not null'
- );
-};
-
-exports.emptyKeyEqual = function () {
- assert.ok(!traverse.deepEqual(
- { a : 1 }, { a : 1, '' : 55 }
- ));
-};
-
-exports.deepArguments = function () {
- assert.ok(
- !traverse.deepEqual(
- [ 4, 5, 6 ],
- (function () { return arguments })(4, 5, 6)
- ),
- 'arguments are not arrays'
- );
-
- assert.ok(
- traverse.deepEqual(
- (function () { return arguments })(4, 5, 6),
- (function () { return arguments })(4, 5, 6)
- ),
- 'arguments should equal'
- );
-};
-
-exports.deepUn = function () {
- assert.ok(!traverse.deepEqual({ a : 1, b : 2 }, undefined));
- assert.ok(!traverse.deepEqual({ a : 1, b : 2 }, {}));
- assert.ok(!traverse.deepEqual(undefined, { a : 1, b : 2 }));
- assert.ok(!traverse.deepEqual({}, { a : 1, b : 2 }));
- assert.ok(traverse.deepEqual(undefined, undefined));
- assert.ok(traverse.deepEqual(null, null));
- assert.ok(!traverse.deepEqual(undefined, null));
-};
-
-exports.deepLevels = function () {
- var xs = [ 1, 2, [ 3, 4, [ 5, 6 ] ] ];
- assert.ok(!traverse.deepEqual(xs, []));
-};
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/instance.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/instance.js
deleted file mode 100644
index 501981ff..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/instance.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var assert = require('assert');
-var Traverse = require('traverse');
-var EventEmitter = require('events').EventEmitter;
-
-exports['check instanceof on node elems'] = function () {
-
- var counts = { emitter : 0 };
-
- Traverse([ new EventEmitter, 3, 4, { ev : new EventEmitter }])
- .forEach(function (node) {
- if (node instanceof EventEmitter) counts.emitter ++;
- })
- ;
-
- assert.equal(counts.emitter, 2);
-};
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/interface.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/interface.js
deleted file mode 100644
index df5b037d..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/interface.js
+++ /dev/null
@@ -1,42 +0,0 @@
-var assert = require('assert');
-var Traverse = require('traverse');
-
-exports['interface map'] = function () {
- var obj = { a : [ 5,6,7 ], b : { c : [8] } };
-
- assert.deepEqual(
- Traverse.paths(obj)
- .sort()
- .map(function (path) { return path.join('/') })
- .slice(1)
- .join(' ')
- ,
- 'a a/0 a/1 a/2 b b/c b/c/0'
- );
-
- assert.deepEqual(
- Traverse.nodes(obj),
- [
- { a: [ 5, 6, 7 ], b: { c: [ 8 ] } },
- [ 5, 6, 7 ], 5, 6, 7,
- { c: [ 8 ] }, [ 8 ], 8
- ]
- );
-
- assert.deepEqual(
- Traverse.map(obj, function (node) {
- if (typeof node == 'number') {
- return node + 1000;
- }
- else if (Array.isArray(node)) {
- return node.join(' ');
- }
- }),
- { a: '5 6 7', b: { c: '8' } }
- );
-
- var nodes = 0;
- Traverse.forEach(obj, function (node) { nodes ++ });
- assert.deepEqual(nodes, 8);
-};
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/json.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/json.js
deleted file mode 100644
index bf366204..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/json.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var assert = require('assert');
-var Traverse = require('traverse');
-
-exports['json test'] = function () {
- var id = 54;
- var callbacks = {};
- var obj = { moo : function () {}, foo : [2,3,4, function () {}] };
-
- var scrubbed = Traverse(obj).map(function (x) {
- if (typeof x === 'function') {
- callbacks[id] = { id : id, f : x, path : this.path };
- this.update('[Function]');
- id++;
- }
- });
-
- assert.equal(
- scrubbed.moo, '[Function]',
- 'obj.moo replaced with "[Function]"'
- );
-
- assert.equal(
- scrubbed.foo[3], '[Function]',
- 'obj.foo[3] replaced with "[Function]"'
- );
-
- assert.deepEqual(scrubbed, {
- moo : '[Function]',
- foo : [ 2, 3, 4, "[Function]" ]
- }, 'Full JSON string matches');
-
- assert.deepEqual(
- typeof obj.moo, 'function',
- 'Original obj.moo still a function'
- );
-
- assert.deepEqual(
- typeof obj.foo[3], 'function',
- 'Original obj.foo[3] still a function'
- );
-
- assert.deepEqual(callbacks, {
- 54: { id: 54, f : obj.moo, path: [ 'moo' ] },
- 55: { id: 55, f : obj.foo[3], path: [ 'foo', '3' ] },
- }, 'Check the generated callbacks list');
-};
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/leaves.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/leaves.js
deleted file mode 100644
index 4e8d2801..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/leaves.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var assert = require('assert');
-var Traverse = require('traverse');
-
-exports['leaves test'] = function () {
- var acc = [];
- Traverse({
- a : [1,2,3],
- b : 4,
- c : [5,6],
- d : { e : [7,8], f : 9 }
- }).forEach(function (x) {
- if (this.isLeaf) acc.push(x);
- });
-
- assert.equal(
- acc.join(' '),
- '1 2 3 4 5 6 7 8 9',
- 'Traversal in the right(?) order'
- );
-};
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/mutability.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/mutability.js
deleted file mode 100644
index 5a4d6dd0..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/mutability.js
+++ /dev/null
@@ -1,203 +0,0 @@
-var assert = require('assert');
-var Traverse = require('traverse');
-
-exports.mutate = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse(obj).forEach(function (x) {
- if (typeof x === 'number' && x % 2 === 0) {
- this.update(x * 10);
- }
- });
- assert.deepEqual(obj, res);
- assert.deepEqual(obj, { a : 1, b : 20, c : [ 3, 40 ] });
-};
-
-exports.mutateT = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse.forEach(obj, function (x) {
- if (typeof x === 'number' && x % 2 === 0) {
- this.update(x * 10);
- }
- });
- assert.deepEqual(obj, res);
- assert.deepEqual(obj, { a : 1, b : 20, c : [ 3, 40 ] });
-};
-
-exports.map = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse(obj).map(function (x) {
- if (typeof x === 'number' && x % 2 === 0) {
- this.update(x * 10);
- }
- });
- assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
- assert.deepEqual(res, { a : 1, b : 20, c : [ 3, 40 ] });
-};
-
-exports.mapT = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse.map(obj, function (x) {
- if (typeof x === 'number' && x % 2 === 0) {
- this.update(x * 10);
- }
- });
- assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
- assert.deepEqual(res, { a : 1, b : 20, c : [ 3, 40 ] });
-};
-
-exports.clone = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse(obj).clone();
- assert.deepEqual(obj, res);
- assert.ok(obj !== res);
- obj.a ++;
- assert.deepEqual(res.a, 1);
- obj.c.push(5);
- assert.deepEqual(res.c, [ 3, 4 ]);
-};
-
-exports.cloneT = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse.clone(obj);
- assert.deepEqual(obj, res);
- assert.ok(obj !== res);
- obj.a ++;
- assert.deepEqual(res.a, 1);
- obj.c.push(5);
- assert.deepEqual(res.c, [ 3, 4 ]);
-};
-
-exports.reduce = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse(obj).reduce(function (acc, x) {
- if (this.isLeaf) acc.push(x);
- return acc;
- }, []);
- assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
- assert.deepEqual(res, [ 1, 2, 3, 4 ]);
-};
-
-exports.reduceInit = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse(obj).reduce(function (acc, x) {
- if (this.isRoot) assert.fail('got root');
- return acc;
- });
- assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
- assert.deepEqual(res, obj);
-};
-
-exports.remove = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- Traverse(obj).forEach(function (x) {
- if (this.isLeaf && x % 2 == 0) this.remove();
- });
-
- assert.deepEqual(obj, { a : 1, c : [ 3 ] });
-};
-
-exports.removeMap = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse(obj).map(function (x) {
- if (this.isLeaf && x % 2 == 0) this.remove();
- });
-
- assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
- assert.deepEqual(res, { a : 1, c : [ 3 ] });
-};
-
-exports.delete = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- Traverse(obj).forEach(function (x) {
- if (this.isLeaf && x % 2 == 0) this.delete();
- });
-
- assert.ok(!Traverse.deepEqual(
- obj, { a : 1, c : [ 3, undefined ] }
- ));
-
- assert.ok(Traverse.deepEqual(
- obj, { a : 1, c : [ 3 ] }
- ));
-
- assert.ok(!Traverse.deepEqual(
- obj, { a : 1, c : [ 3, null ] }
- ));
-};
-
-exports.deleteRedux = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4, 5 ] };
- Traverse(obj).forEach(function (x) {
- if (this.isLeaf && x % 2 == 0) this.delete();
- });
-
- assert.ok(!Traverse.deepEqual(
- obj, { a : 1, c : [ 3, undefined, 5 ] }
- ));
-
- assert.ok(Traverse.deepEqual(
- obj, { a : 1, c : [ 3 ,, 5 ] }
- ));
-
- assert.ok(!Traverse.deepEqual(
- obj, { a : 1, c : [ 3, null, 5 ] }
- ));
-
- assert.ok(!Traverse.deepEqual(
- obj, { a : 1, c : [ 3, 5 ] }
- ));
-};
-
-exports.deleteMap = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4 ] };
- var res = Traverse(obj).map(function (x) {
- if (this.isLeaf && x % 2 == 0) this.delete();
- });
-
- assert.ok(Traverse.deepEqual(
- obj,
- { a : 1, b : 2, c : [ 3, 4 ] }
- ));
-
- var xs = [ 3, 4 ];
- delete xs[1];
-
- assert.ok(Traverse.deepEqual(
- res, { a : 1, c : xs }
- ));
-
- assert.ok(Traverse.deepEqual(
- res, { a : 1, c : [ 3, ] }
- ));
-
- assert.ok(Traverse.deepEqual(
- res, { a : 1, c : [ 3 ] }
- ));
-};
-
-exports.deleteMapRedux = function () {
- var obj = { a : 1, b : 2, c : [ 3, 4, 5 ] };
- var res = Traverse(obj).map(function (x) {
- if (this.isLeaf && x % 2 == 0) this.delete();
- });
-
- assert.ok(Traverse.deepEqual(
- obj,
- { a : 1, b : 2, c : [ 3, 4, 5 ] }
- ));
-
- var xs = [ 3, 4, 5 ];
- delete xs[1];
-
- assert.ok(Traverse.deepEqual(
- res, { a : 1, c : xs }
- ));
-
- assert.ok(!Traverse.deepEqual(
- res, { a : 1, c : [ 3, 5 ] }
- ));
-
- assert.ok(Traverse.deepEqual(
- res, { a : 1, c : [ 3 ,, 5 ] }
- ));
-};
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/negative.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/negative.js
deleted file mode 100644
index 6cf287d6..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/negative.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var Traverse = require('traverse');
-var assert = require('assert');
-
-exports['negative update test'] = function () {
- var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
- var fixed = Traverse.map(obj, function (x) {
- if (x < 0) this.update(x + 128);
- });
-
- assert.deepEqual(fixed,
- [ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ],
- 'Negative values += 128'
- );
-
- assert.deepEqual(obj,
- [ 5, 6, -3, [ 7, 8, -2, 1 ], { f: 10, g: -13 } ],
- 'Original references not modified'
- );
-}
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/obj.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/obj.js
deleted file mode 100644
index 9c3b0db5..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/obj.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var assert = require('assert');
-var Traverse = require('traverse');
-
-exports['traverse an object with nested functions'] = function () {
- var to = setTimeout(function () {
- assert.fail('never ran');
- }, 1000);
-
- function Cons (x) {
- clearTimeout(to);
- assert.equal(x, 10);
- };
- Traverse(new Cons(10));
-};
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/stop.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/stop.js
deleted file mode 100644
index ef6b36e5..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/stop.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var assert = require('assert');
-var traverse = require('traverse');
-
-exports.stop = function () {
- var visits = 0;
- traverse('abcdefghij'.split('')).forEach(function (node) {
- if (typeof node === 'string') {
- visits ++;
- if (node === 'e') this.stop()
- }
- });
-
- assert.equal(visits, 5);
-};
-
-exports.stopMap = function () {
- var s = traverse('abcdefghij'.split('')).map(function (node) {
- if (typeof node === 'string') {
- if (node === 'e') this.stop()
- return node.toUpperCase();
- }
- }).join('');
-
- assert.equal(s, 'ABCDEfghij');
-};
-
-exports.stopReduce = function () {
- var obj = {
- a : [ 4, 5 ],
- b : [ 6, [ 7, 8, 9 ] ]
- };
- var xs = traverse(obj).reduce(function (acc, node) {
- if (this.isLeaf) {
- if (node === 7) this.stop();
- else acc.push(node)
- }
- return acc;
- }, []);
-
- assert.deepEqual(xs, [ 4, 5, 6 ]);
-};
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/stringify.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/stringify.js
deleted file mode 100644
index bf36f635..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/stringify.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var assert = require('assert');
-var Traverse = require('traverse');
-
-exports.stringify = function () {
- var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
-
- var s = '';
- Traverse(obj).forEach(function (node) {
- if (Array.isArray(node)) {
- this.before(function () { s += '[' });
- this.post(function (child) {
- if (!child.isLast) s += ',';
- });
- this.after(function () { s += ']' });
- }
- else if (typeof node == 'object') {
- this.before(function () { s += '{' });
- this.pre(function (x, key) {
- s += '"' + key + '"' + ':';
- });
- this.post(function (child) {
- if (!child.isLast) s += ',';
- });
- this.after(function () { s += '}' });
- }
- else if (typeof node == 'function') {
- s += 'null';
- }
- else {
- s += node.toString();
- }
- });
-
- assert.equal(s, JSON.stringify(obj));
-}
-
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/super_deep.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/super_deep.js
deleted file mode 100644
index 974181e3..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/node_modules/traverse/test/super_deep.js
+++ /dev/null
@@ -1,54 +0,0 @@
-var assert = require('assert');
-var traverse = require('traverse');
-
-exports.super_deep = function () {
- var util = require('util');
- var a0 = make();
- var a1 = make();
- assert.ok(traverse.deepEqual(a0, a1));
-
- a0.c.d.moo = true;
- assert.ok(!traverse.deepEqual(a0, a1));
-
- a1.c.d.moo = true;
- assert.ok(traverse.deepEqual(a0, a1));
-
- // TODO: this one
- //a0.c.a = a1;
- //assert.ok(!traverse.deepEqual(a0, a1));
-};
-
-function make () {
- var a = { self : 'a' };
- var b = { self : 'b' };
- var c = { self : 'c' };
- var d = { self : 'd' };
- var e = { self : 'e' };
-
- a.a = a;
- a.b = b;
- a.c = c;
-
- b.a = a;
- b.b = b;
- b.c = c;
-
- c.a = a;
- c.b = b;
- c.c = c;
- c.d = d;
-
- d.a = a;
- d.b = b;
- d.c = c;
- d.d = d;
- d.e = e;
-
- e.a = a;
- e.b = b;
- e.c = c;
- e.d = d;
- e.e = e;
-
- return a;
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/package.json b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/package.json
deleted file mode 100644
index c48088de..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/package.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "name": "chainsaw",
- "version": "0.1.0",
- "description": "Build chainable fluent interfaces the easy way... with a freakin' chainsaw!",
- "main": "./index.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/node-chainsaw.git"
- },
- "dependencies": {
- "traverse": ">=0.3.0 <0.4"
- },
- "keywords": [
- "chain",
- "fluent",
- "interface",
- "monad",
- "monadic"
- ],
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "license": "MIT/X11",
- "engine": {
- "node": ">=0.4.0"
- },
- "_id": "chainsaw@0.1.0",
- "devDependencies": {},
- "engines": {
- "node": "*"
- },
- "_engineSupported": true,
- "_npmVersion": "1.0.10",
- "_nodeVersion": "v0.5.0-pre",
- "_defaultsLoaded": true,
- "dist": {
- "shasum": "5eab50b28afe58074d0d58291388828b5e5fbc98",
- "tarball": "http://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz"
- },
- "scripts": {},
- "directories": {},
- "_shasum": "5eab50b28afe58074d0d58291388828b5e5fbc98",
- "_resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "_from": "chainsaw@>=0.1.0 <0.2.0"
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/test/chainsaw.js b/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/test/chainsaw.js
deleted file mode 100644
index 8895e899..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/node_modules/chainsaw/test/chainsaw.js
+++ /dev/null
@@ -1,418 +0,0 @@
-var assert = require('assert');
-var Chainsaw = require('../index');
-
-exports.getset = function () {
- var to = setTimeout(function () {
- assert.fail('builder never fired');
- }, 1000);
-
- var ch = Chainsaw(function (saw) {
- clearTimeout(to);
- var num = 0;
-
- this.get = function (cb) {
- cb(num);
- saw.next();
- };
-
- this.set = function (n) {
- num = n;
- saw.next();
- };
-
- var ti = setTimeout(function () {
- assert.fail('end event not emitted');
- }, 50);
-
- saw.on('end', function () {
- clearTimeout(ti);
- assert.equal(times, 3);
- });
- });
-
- var times = 0;
- ch
- .get(function (x) {
- assert.equal(x, 0);
- times ++;
- })
- .set(10)
- .get(function (x) {
- assert.equal(x, 10);
- times ++;
- })
- .set(20)
- .get(function (x) {
- assert.equal(x, 20);
- times ++;
- })
- ;
-};
-
-exports.nest = function () {
- var ch = (function () {
- var vars = {};
- return Chainsaw(function (saw) {
- this.do = function (cb) {
- saw.nest(cb, vars);
- };
- });
- })();
-
- var order = [];
- var to = setTimeout(function () {
- assert.fail("Didn't get to the end");
- }, 50);
-
- ch
- .do(function (vars) {
- vars.x = 'y';
- order.push(1);
-
- this
- .do(function (vs) {
- order.push(2);
- vs.x = 'x';
- })
- .do(function (vs) {
- order.push(3);
- vs.z = 'z';
- })
- ;
- })
- .do(function (vars) {
- vars.y = 'y';
- order.push(4);
- })
- .do(function (vars) {
- assert.eql(order, [1,2,3,4]);
- assert.eql(vars, { x : 'x', y : 'y', z : 'z' });
- clearTimeout(to);
- })
- ;
-};
-
-exports.nestWait = function () {
- var ch = (function () {
- var vars = {};
- return Chainsaw(function (saw) {
- this.do = function (cb) {
- saw.nest(cb, vars);
- };
-
- this.wait = function (n) {
- setTimeout(function () {
- saw.next();
- }, n);
- };
- });
- })();
-
- var order = [];
- var to = setTimeout(function () {
- assert.fail("Didn't get to the end");
- }, 1000);
-
- var times = {};
-
- ch
- .do(function (vars) {
- vars.x = 'y';
- order.push(1);
-
- this
- .do(function (vs) {
- order.push(2);
- vs.x = 'x';
- times.x = Date.now();
- })
- .wait(50)
- .do(function (vs) {
- order.push(3);
- vs.z = 'z';
-
- times.z = Date.now();
- var dt = times.z - times.x;
- assert.ok(dt >= 50 && dt < 75);
- })
- ;
- })
- .do(function (vars) {
- vars.y = 'y';
- order.push(4);
-
- times.y = Date.now();
- })
- .wait(100)
- .do(function (vars) {
- assert.eql(order, [1,2,3,4]);
- assert.eql(vars, { x : 'x', y : 'y', z : 'z' });
- clearTimeout(to);
-
- times.end = Date.now();
- var dt = times.end - times.y;
- assert.ok(dt >= 100 && dt < 125)
- })
- ;
-};
-
-exports.nestNext = function () {
- var ch = (function () {
- var vars = {};
- return Chainsaw(function (saw) {
- this.do = function (cb) {
- saw.nest(false, function () {
- var args = [].slice.call(arguments);
- args.push(saw.next);
- cb.apply(this, args);
- }, vars);
- };
- });
- })();
-
- var order = [];
- var to = setTimeout(function () {
- assert.fail("Didn't get to the end");
- }, 500);
-
- var times = [];
-
- ch
- .do(function (vars, next_) {
- vars.x = 'y';
- order.push(1);
-
- this
- .do(function (vs, next) {
- order.push(2);
- vs.x = 'x';
- setTimeout(next, 30);
- })
- .do(function (vs, next) {
- order.push(3);
- vs.z = 'z';
- setTimeout(next, 10);
- })
- .do(function () {
- setTimeout(next_, 20);
- })
- ;
- })
- .do(function (vars, next) {
- vars.y = 'y';
- order.push(4);
- setTimeout(next, 5);
- })
- .do(function (vars) {
- assert.eql(order, [1,2,3,4]);
- assert.eql(vars, { x : 'x', y : 'y', z : 'z' });
-
- clearTimeout(to);
- })
- ;
-};
-
-exports.builder = function () {
- var cx = Chainsaw(function (saw) {
- this.x = function () {};
- });
- assert.ok(cx.x);
-
- var cy = Chainsaw(function (saw) {
- return { y : function () {} };
- });
- assert.ok(cy.y);
-
- var cz = Chainsaw(function (saw) {
- return { z : function (cb) { saw.nest(cb) } };
- });
- assert.ok(cz.z);
-
- var to = setTimeout(function () {
- assert.fail("Nested z didn't run");
- }, 50);
-
- cz.z(function () {
- clearTimeout(to);
- assert.ok(this.z);
- });
-};
-
-this.attr = function () {
- var to = setTimeout(function () {
- assert.fail("attr chain didn't finish");
- }, 50);
-
- var xy = [];
- var ch = Chainsaw(function (saw) {
- this.h = {
- x : function () {
- xy.push('x');
- saw.next();
- },
- y : function () {
- xy.push('y');
- saw.next();
- assert.eql(xy, ['x','y']);
- clearTimeout(to);
- }
- };
- });
- assert.ok(ch.h);
- assert.ok(ch.h.x);
- assert.ok(ch.h.y);
-
- ch.h.x().h.y();
-};
-
-exports.down = function () {
- var error = null;
- var s;
- var ch = Chainsaw(function (saw) {
- s = saw;
- this.raise = function (err) {
- error = err;
- saw.down('catch');
- };
-
- this.do = function (cb) {
- cb.call(this);
- };
-
- this.catch = function (cb) {
- if (error) {
- saw.nest(cb, error);
- error = null;
- }
- else saw.next();
- };
- });
-
- var to = setTimeout(function () {
- assert.fail(".do() after .catch() didn't fire");
- }, 50);
-
- ch
- .do(function () {
- this.raise('pow');
- })
- .do(function () {
- assert.fail("raise didn't skip over this do block");
- })
- .catch(function (err) {
- assert.equal(err, 'pow');
- })
- .do(function () {
- clearTimeout(to);
- })
- ;
-};
-
-exports.trap = function () {
- var error = null;
- var ch = Chainsaw(function (saw) {
- var pars = 0;
- var stack = [];
- var i = 0;
-
- this.par = function (cb) {
- pars ++;
- var j = i ++;
- cb.call(function () {
- pars --;
- stack[j] = [].slice.call(arguments);
- saw.down('result');
- });
- saw.next();
- };
-
- this.join = function (cb) {
- saw.trap('result', function () {
- if (pars == 0) {
- cb.apply(this, stack);
- saw.next();
- }
- });
- };
-
- this.raise = function (err) {
- error = err;
- saw.down('catch');
- };
-
- this.do = function (cb) {
- cb.call(this);
- };
-
- this.catch = function (cb) {
- if (error) {
- saw.nest(cb, error);
- error = null;
- }
- else saw.next();
- };
- });
-
- var to = setTimeout(function () {
- assert.fail(".do() after .join() didn't fire");
- }, 100);
- var tj = setTimeout(function () {
- assert.fail('.join() never fired');
- }, 100);
-
- var joined = false;
- ch
- .par(function () {
- setTimeout(this.bind(null, 1), 50);
- })
- .par(function () {
- setTimeout(this.bind(null, 2), 25);
- })
- .join(function (x, y) {
- assert.equal(x[0], 1);
- assert.equal(y[0], 2);
- clearTimeout(tj);
- joined = true;
- })
- .do(function () {
- clearTimeout(to);
- assert.ok(joined);
- })
- ;
-};
-
-exports.jump = function () {
- var to = setTimeout(function () {
- assert.fail('builder never fired');
- }, 50);
-
- var xs = [ 4, 5, 6, -4, 8, 9, -1, 8 ];
- var xs_ = [];
-
- var ch = Chainsaw(function (saw) {
- this.x = function (i) {
- xs_.push(i);
- saw.next();
- };
-
- this.y = function (step) {
- var x = xs.shift();
- if (x > 0) saw.jump(step);
- else saw.next();
- };
-
- saw.on('end', function () {
- clearTimeout(to);
- assert.eql(xs, [ 8 ]);
- assert.eql(xs_, [ 1, 1, 1, 1, 2, 3, 2, 3, 2, 3 ]);
- });
- });
-
- ch
- .x(1)
- .y(0)
- .x(2)
- .x(3)
- .y(2)
- ;
-};
diff --git a/scripts/node_modules/unzip/node_modules/binary/package.json b/scripts/node_modules/unzip/node_modules/binary/package.json
deleted file mode 100644
index dad7bd66..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "name": "binary",
- "version": "0.3.0",
- "description": "Unpack multibyte binary values from buffers",
- "main": "./index.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/node-binary.git"
- },
- "keywords": [
- "binary",
- "decode",
- "endian",
- "unpack",
- "signed",
- "unsigned"
- ],
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "dependencies": {
- "chainsaw": "~0.1.0",
- "buffers": "~0.1.1"
- },
- "devDependencies": {
- "seq": "~0.2.5",
- "tap": "~0.2.4"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "license": "MIT",
- "engine": {
- "node": ">=0.4.0"
- },
- "_npmUser": {
- "name": "substack",
- "email": "mail@substack.net"
- },
- "_id": "binary@0.3.0",
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "_engineSupported": true,
- "_npmVersion": "1.1.19",
- "_nodeVersion": "v0.6.11",
- "_defaultsLoaded": true,
- "dist": {
- "shasum": "9f60553bc5ce8c3386f3b553cff47462adecaa79",
- "tarball": "http://registry.npmjs.org/binary/-/binary-0.3.0.tgz"
- },
- "readme": "",
- "maintainers": [
- {
- "name": "substack",
- "email": "mail@substack.net"
- }
- ],
- "directories": {},
- "_shasum": "9f60553bc5ce8c3386f3b553cff47462adecaa79",
- "_resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "_from": "binary@>=0.3.0 <1.0.0"
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/perf/loop.js b/scripts/node_modules/unzip/node_modules/binary/perf/loop.js
deleted file mode 100644
index bec60a84..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/perf/loop.js
+++ /dev/null
@@ -1,92 +0,0 @@
-var Seq = require('seq');
-var Hash = require('hashish');
-var EventEmitter = require('events').EventEmitter;
-
-var Bin = require('binary');
-var Buf = require('bufferlist/binary');
-var BufferList = require('bufferlist');
-
-console.log('loop');
-function emitter () {
- var em = new EventEmitter;
-
- var i = 0;
- var iv = setInterval(function () {
- var buf = new Buffer(10000);
- buf[0] = 0xff;
-
- if (++ i >= 2000) {
- buf[0] = 0;
- clearInterval(iv);
- }
- em.emit('data', buf);
- }, 1);
-
- return em;
-}
-
-Seq()
- .seq(function () {
- var next = this.bind({}, null);
- bufferlist(next);
- })
- .seq(function () {
- var next = this.bind({}, null);
- binary(next);
- })
-;
-
-function binary (next) {
- var em = emitter();
- var t0 = Date.now();
-
- Bin(em)
- .loop(function (end) {
- this
- .word8('x')
- .word8('y')
- .word32be('z')
- .word32le('w')
- .buffer('buf', 10000 - 10)
- .tap(function (vars) {
- if (vars.x === 0) {
- var tf = Date.now();
- console.log(' binary: ' + (tf - t0) + ' ms');
- end();
- setTimeout(next, 20);
- }
- })
- })
- ;
-}
-
-function bufferlist (next) {
- var em = emitter();
- var t0 = Date.now();
-
- var blist = new BufferList;
- em.on('data', function (buf) {
- blist.push(buf);
- });
-
- Buf(blist)
- .forever(function () {
- var top = this;
- this
- .getWord8('x')
- .getWord8('y')
- .getWord32be('z')
- .getWord32le('w')
- .getBuffer('buf', 10000 - 10)
- .tap(function (vars) {
- if (vars.x === 0) {
- var tf = Date.now();
- console.log(' bufferlist: ' + (tf - t0) + ' ms');
- top.exit();
- setTimeout(next, 20);
- }
- })
- })
- .end()
- ;
-}
diff --git a/scripts/node_modules/unzip/node_modules/binary/perf/small.js b/scripts/node_modules/unzip/node_modules/binary/perf/small.js
deleted file mode 100644
index 2a5ed525..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/perf/small.js
+++ /dev/null
@@ -1,80 +0,0 @@
-var Seq = require('seq');
-var Hash = require('hashish');
-
-var Bin = require('binary');
-var Buf = require('bufferlist/binary');
-var BufferList = require('bufferlist');
-var EventEmitter = require('events').EventEmitter;
-
-function binary (buf, cb) {
- Bin(buf)
- .word32le('x')
- .word16be('y')
- .word16be('z')
- .word32le('w')
- .tap(cb)
- ;
-};
-
-function stream (buf, cb) {
- var em = new EventEmitter;
- Bin(em)
- .word32le('x')
- .word16be('y')
- .word16be('z')
- .word32le('w')
- .tap(cb)
- ;
- em.emit('data', buf);
-};
-
-function parse (buf, cb) {
- cb(Bin.parse(buf)
- .word32le('x')
- .word16be('y')
- .word16be('z')
- .word32le('w')
- .vars
- );
-};
-
-function bufferlist (buf, cb) {
- var blist = new BufferList;
- blist.push(buf);
- Buf(blist)
- .getWord32le('x')
- .getWord16be('y')
- .getWord16be('z')
- .getWord32le('w')
- .tap(cb)
- .end()
- ;
-};
-
-
-var buffers = [];
-for (var i = 0; i < 200; i++) {
- buffers.push(new Buffer(12));
-}
-
-console.log('small');
-Seq(binary, stream, parse, bufferlist)
- .seqEach(function (f) {
- var t = this;
- var t0 = Date.now();
- Seq()
- .extend(buffers)
- .seqEach(function (buf) {
- f(buf, this.bind(this, null));
- })
- .seq(function () {
- var tf = Date.now();
- console.log(' ' + f.name + ': ' + (tf - t0));
- t(null);
- })
- ;
- })
- .seq(function () {
- this(null);
- })
-;
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/bu.js b/scripts/node_modules/unzip/node_modules/binary/test/bu.js
deleted file mode 100644
index d557e3ce..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/bu.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('bu', function (t) {
- t.plan(8);
-
- // note: can't store -12667700813876161 exactly in an ieee float
-
- var buf = new Buffer([
- 44, // a == 44
- 2, 43, // b == 555
- 164, 213, 37, 37, // c == 2765432101
- 29, 81, 180, 20, 155, 115, 203, 193, // d == 2112667700813876161
- ]);
-
- binary.parse(buf)
- .word8bu('a')
- .word16bu('b')
- .word32bu('c')
- .word64bu('d')
- .tap(function (vars) {
- t.same(vars.a, 44);
- t.same(vars.b, 555);
- t.same(vars.c, 2765432101);
- t.ok(
- Math.abs(vars.d - 2112667700813876161) < 1500
- );
- })
- ;
-
- // also check aliases here:
- binary.parse(buf)
- .word8be('a')
- .word16be('b')
- .word32be('c')
- .word64be('d')
- .tap(function (vars) {
- t.same(vars.a, 44);
- t.same(vars.b, 555);
- t.same(vars.c, 2765432101);
- t.ok(
- Math.abs(vars.d - 2112667700813876161) < 1500
- );
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/deferred.js b/scripts/node_modules/unzip/node_modules/binary/test/deferred.js
deleted file mode 100644
index 52623f7c..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/deferred.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('deferred', function (t) {
- t.plan(1);
-
- var em = new EventEmitter;
- binary.stream(em)
- .word8('a')
- .word16be('bc')
- .tap(function (vars) {
- t.same(vars, { a : 97, bc : 25187 });
- })
- ;
-
- setTimeout(function () {
- em.emit('data', new Buffer([ 97, 98, 99 ]));
- }, 10);
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/dots.js b/scripts/node_modules/unzip/node_modules/binary/test/dots.js
deleted file mode 100644
index f730eb38..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/dots.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('dots', function (t) {
- t.plan(1);
-
- binary.parse(new Buffer([ 97, 98, 99, 100, 101, 102 ]))
- .word8('a')
- .word16be('b.x')
- .word16be('b.y')
- .word8('b.z')
- .tap(function (vars) {
- t.same(vars, {
- a : 97,
- b : {
- x : 256 * 98 + 99,
- y : 256 * 100 + 101,
- z : 102
- },
- });
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/eof.js b/scripts/node_modules/unzip/node_modules/binary/test/eof.js
deleted file mode 100644
index e5268ffc..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/eof.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('eof', function (t) {
- t.plan(4);
-
- var stream = new EventEmitter;
- binary.stream(stream)
- .buffer('sixone', 5)
- .peek(function () {
- this.word32le('len');
- })
- .buffer('buf', 'len')
- .word8('x')
- .tap(function (vars) {
- t.same(
- [].slice.call(vars.sixone),
- [].slice.call(new Buffer([ 6, 1, 6, 1, 6 ]))
- );
- t.same(vars.buf.length, vars.len);
- t.same(
- [].slice.call(vars.buf),
- [ 9, 0, 0, 0, 97, 98, 99, 100, 101 ]
- );
- t.same(vars.x, 102);
- })
- ;
-
- var bufs = [
- new Buffer([ 6, 1, 6, 1, 6, 9, 0, 0, 0, 97 ]),
- new Buffer([ 98, 99 ]),
- new Buffer([ 100, 101, 102 ]),
- ];
-
- bufs.forEach(function (buf) {
- stream.emit('data', buf);
- });
-
- stream.emit('end');
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/flush.js b/scripts/node_modules/unzip/node_modules/binary/test/flush.js
deleted file mode 100644
index b9c0dde8..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/flush.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('flush', function (t) {
- t.plan(1);
-
- binary.parse(new Buffer([ 97, 98, 99, 100, 101, 102 ]))
- .word8('a')
- .word16be('b')
- .word16be('c')
- .flush()
- .word8('d')
- .tap(function (vars) {
- t.same(vars, { d : 102 });
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/from_buffer.js b/scripts/node_modules/unzip/node_modules/binary/test/from_buffer.js
deleted file mode 100644
index b5061e7e..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/from_buffer.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('from buffer', function (t) {
- t.plan(1);
-
- binary(new Buffer([ 97, 98, 99 ]))
- .word8('a')
- .word16be('bc')
- .tap(function (vars) {
- t.same(vars, { a : 97, bc : 25187 });
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/get_buffer.js b/scripts/node_modules/unzip/node_modules/binary/test/get_buffer.js
deleted file mode 100644
index 1c621922..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/get_buffer.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('get buffer', function (t) {
- t.plan(4);
-
- var buf = new Buffer([ 4, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ]);
- binary.parse(buf)
- .word8('a')
- .buffer('b', 7)
- .word16lu('c')
- .tap(function (vars) {
- t.equal(vars.a, 4);
- t.equal(
- vars.b.toString(),
- new Buffer([ 2, 3, 4, 5, 6, 7, 8 ]).toString()
- );
- t.equal(vars.c, 2569);
- })
- .buffer('d', 'a')
- .tap(function (vars) {
- t.equal(
- vars.d.toString(),
- new Buffer([ 11, 12, 13, 14 ]).toString()
- );
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/immediate.js b/scripts/node_modules/unzip/node_modules/binary/test/immediate.js
deleted file mode 100644
index 1f0ea776..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/immediate.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('immediate', function (t) {
- t.plan(1);
-
- var em = new EventEmitter;
- binary.stream(em, 'moo')
- .word8('a')
- .word16be('bc')
- .tap(function (vars) {
- t.same(vars, { a : 97, bc : 25187 });
- })
- ;
-
- em.emit('moo', new Buffer([ 97, 98, 99 ]));
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/interval.js b/scripts/node_modules/unzip/node_modules/binary/test/interval.js
deleted file mode 100644
index b17c0cb2..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/interval.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('interval', function (t) {
- t.plan(1);
-
- var em = new EventEmitter;
- var i = 0;
- var iv = setInterval(function () {
- var buf = new Buffer(1000);
- buf[0] = 0xff;
- if (++i >= 1000) {
- clearInterval(iv);
- buf[0] = 0;
- }
- em.emit('data', buf);
- }, 1);
-
- var loops = 0;
- binary(em)
- .loop(function (end) {
- this
- .word8('x')
- .word8('y')
- .word32be('z')
- .word32le('w')
- .buffer('buf', 1000 - 10)
- .tap(function (vars) {
- loops ++;
- if (vars.x == 0) end();
- })
- })
- .tap(function () {
- t.same(loops, 1000);
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/into_buffer.js b/scripts/node_modules/unzip/node_modules/binary/test/into_buffer.js
deleted file mode 100644
index 10d3d4ad..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/into_buffer.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('intoBuffer', function (t) {
- t.plan(3);
- var buf = new Buffer([ 1, 2, 3, 4, 5, 6 ])
-
- binary.parse(buf)
- .into('moo', function () {
- this
- .word8('x')
- .word8('y')
- .word8('z')
- ;
- })
- .tap(function (vars) {
- t.same(vars, { moo : { x : 1, y : 2, z : 3 } });
- })
- .word8('w')
- .tap(function (vars) {
- t.same(vars, {
- moo : { x : 1, y : 2, z : 3 },
- w : 4,
- });
- })
- .word8('x')
- .tap(function (vars) {
- t.same(vars, {
- moo : { x : 1, y : 2, z : 3 },
- w : 4,
- x : 5,
- });
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/into_stream.js b/scripts/node_modules/unzip/node_modules/binary/test/into_stream.js
deleted file mode 100644
index db770928..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/into_stream.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('into stream', function (t) {
- t.plan(3);
-
- var digits = [ 1, 2, 3, 4, 5, 6 ];
- var stream = new EventEmitter;
- var iv = setInterval(function () {
- var d = digits.shift();
- if (d) stream.emit('data', new Buffer([ d ]))
- else clearInterval(iv)
- }, 20);
-
- binary.stream(stream)
- .into('moo', function () {
- this
- .word8('x')
- .word8('y')
- .word8('z')
- ;
- })
- .tap(function (vars) {
- t.same(vars, { moo : { x : 1, y : 2, z : 3 } });
- })
- .word8('w')
- .tap(function (vars) {
- t.same(vars, {
- moo : { x : 1, y : 2, z : 3 },
- w : 4,
- });
- })
- .word8('x')
- .tap(function (vars) {
- t.same(vars, {
- moo : { x : 1, y : 2, z : 3 },
- w : 4,
- x : 5,
- });
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/loop.js b/scripts/node_modules/unzip/node_modules/binary/test/loop.js
deleted file mode 100644
index 74576a97..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/loop.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('loop', function (t) {
- t.plan(3 * 2 + 1);
-
- var em = new EventEmitter;
-
- binary.stream(em)
- .loop(function (end, vars) {
- t.strictEqual(vars, this.vars);
- this
- .word16lu('a')
- .word8u('b')
- .word8s('c')
- .tap(function (vars_) {
- t.strictEqual(vars, vars_);
- if (vars.c < 0) end();
- })
- ;
- })
- .tap(function (vars) {
- t.same(vars, { a : 1337, b : 55, c : -5 });
- })
- ;
-
- setTimeout(function () {
- em.emit('data', new Buffer([ 2, 10, 88 ]));
- }, 10);
- setTimeout(function () {
- em.emit('data', new Buffer([ 100, 3, 6, 242, 30 ]));
- }, 20);
- setTimeout(function () {
- em.emit('data', new Buffer([ 60, 60, 199, 44 ]));
- }, 30);
-
- setTimeout(function () {
- em.emit('data', new Buffer([ 57, 5 ]));
- }, 80);
- setTimeout(function () {
- em.emit('data', new Buffer([ 55, 251 ]));
- }, 90);
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/loop_scan.js b/scripts/node_modules/unzip/node_modules/binary/test/loop_scan.js
deleted file mode 100644
index 394603a9..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/loop_scan.js
+++ /dev/null
@@ -1,54 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('loop scan', function (t) {
- t.plan(8 + 6 + 2);
-
- var em = new EventEmitter;
-
- binary.stream(em)
- .loop(function (end) {
- var vars_ = this.vars;
- this
- .scan('filler', 'BEGINMSG')
- .buffer('cmd', 3)
- .word8('num')
- .tap(function (vars) {
- t.strictEqual(vars, vars_);
- if (vars.num != 0x02 && vars.num != 0x06) {
- t.same(vars.filler.length, 0);
- }
- if (vars.cmd.toString() == 'end') end();
- })
- ;
- })
- .tap(function (vars) {
- t.same(vars.cmd.toString(), 'end');
- t.same(vars.num, 0x08);
- })
- ;
-
- setTimeout(function () {
- em.emit('data', new Buffer(
- 'BEGINMSGcmd\x01'
- + 'GARBAGEDATAXXXX'
- + 'BEGINMSGcmd\x02'
- + 'BEGINMSGcmd\x03'
- ));
- }, 10);
-
- setTimeout(function () {
- em.emit('data', new Buffer(
- 'BEGINMSGcmd\x04'
- + 'BEGINMSGcmd\x05'
- + 'GARBAGEDATAXXXX'
- + 'BEGINMSGcmd\x06'
- ));
- em.emit('data', new Buffer('BEGINMSGcmd\x07'));
- }, 20);
-
- setTimeout(function () {
- em.emit('data', new Buffer('BEGINMSGend\x08'));
- }, 30);
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/lu.js b/scripts/node_modules/unzip/node_modules/binary/test/lu.js
deleted file mode 100644
index 8d3e9e7c..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/lu.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('lu', function (t) {
- t.plan(8);
-
- // note: can't store -12667700813876161 exactly in an ieee float
-
- var buf = new Buffer([
- 44, // a == 44
- 43, 2, // b == 555
- 37, 37, 213, 164, // c == 2765432101
- 193, 203, 115, 155, 20, 180, 81, 29, // d == 2112667700813876161
- ]);
-
- binary.parse(buf)
- .word8lu('a')
- .word16lu('b')
- .word32lu('c')
- .word64lu('d')
- .tap(function (vars) {
- t.same(vars.a, 44);
- t.same(vars.b, 555);
- t.same(vars.c, 2765432101);
- t.ok(
- Math.abs(vars.d - 2112667700813876161) < 1500
- );
- })
- ;
-
- // also check aliases here:
- binary.parse(buf)
- .word8le('a')
- .word16le('b')
- .word32le('c')
- .word64le('d')
- .tap(function (vars) {
- t.same(vars.a, 44);
- t.same(vars.b, 555);
- t.same(vars.c, 2765432101);
- t.ok(
- Math.abs(vars.d - 2112667700813876161) < 1500
- );
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/negbs.js b/scripts/node_modules/unzip/node_modules/binary/test/negbs.js
deleted file mode 100644
index dd23a9a6..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/negbs.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('negbs', function (t) {
- t.plan(4);
- // note: can't store -12667700813876161 exactly in an ieee float
-
- var buf = new Buffer([
- 226, // a == -30
- 246, 219, // b == -2341
- 255, 243, 245, 236, // c == -789012
- 255, 210, 254, 203, 16, 222, 52, 63, // d == -12667700813876161
- ]);
-
- binary.parse(buf)
- .word8bs('a')
- .word16bs('b')
- .word32bs('c')
- .word64bs('d')
- .tap(function (vars) {
- t.same(vars.a, -30);
- t.same(vars.b, -2341);
- t.same(vars.c, -789012);
- t.ok(
- Math.abs(vars.d - -12667700813876161) < 1500
- );
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/negls.js b/scripts/node_modules/unzip/node_modules/binary/test/negls.js
deleted file mode 100644
index 2a229f47..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/negls.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('negls', function (t) {
- t.plan(4);
- // note: can't store -12667700813876161 exactly in an ieee float
-
- var buf = new Buffer([
- 226, // a == -30
- 219, 246, // b == -2341
- 236, 245, 243, 255, // c == -789012
- 63, 52, 222, 16, 203, 254, 210, 255, // d == -12667700813876161
- ]);
-
- binary.parse(buf)
- .word8ls('a')
- .word16ls('b')
- .word32ls('c')
- .word64ls('d')
- .tap(function (vars) {
- t.same(vars.a, -30);
- t.same(vars.b, -2341);
- t.same(vars.c, -789012);
- t.ok(
- Math.abs(vars.d - -12667700813876161) < 1000
- );
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/nested.js b/scripts/node_modules/unzip/node_modules/binary/test/nested.js
deleted file mode 100644
index 869d51c9..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/nested.js
+++ /dev/null
@@ -1,35 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('nested', function (t) {
- t.plan(3);
- var insideDone = false;
-
- var em = new EventEmitter;
- binary.stream(em)
- .word16be('ab')
- .tap(function () {
- this
- .word8('c')
- .word8('d')
- .tap(function () {
- insideDone = true;
- })
- ;
- })
- .tap(function (vars) {
- t.ok(insideDone);
- t.same(vars.c, 'c'.charCodeAt(0));
- t.same(vars.d, 'd'.charCodeAt(0));
-
- })
- ;
-
- var strs = [ 'abc', 'def', 'hi', 'jkl' ];
- var iv = setInterval(function () {
- var s = strs.shift();
- if (s) em.emit('data', new Buffer(s));
- else clearInterval(iv);
- }, 50);
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/not_enough_buf.js b/scripts/node_modules/unzip/node_modules/binary/test/not_enough_buf.js
deleted file mode 100644
index bbf8ffff..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/not_enough_buf.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('not enough buf', function (t) {
- t.plan(3);
-
- var vars = binary(new Buffer([1,2,3,4]))
- .word8('a')
- .buffer('b', 10)
- .word8('c')
- .vars
- ;
-
- t.same(vars.a, 1);
- t.equal(vars.b.toString(), new Buffer([2,3,4]).toString());
- t.strictEqual(vars.c, null);
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/not_enough_parse.js b/scripts/node_modules/unzip/node_modules/binary/test/not_enough_parse.js
deleted file mode 100644
index f9a32e2e..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/not_enough_parse.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('not enough parse', function (t) {
- t.plan(4);
-
- var vars = binary(new Buffer([1,2]))
- .word8('a')
- .word8('b')
- .word8('c')
- .word8('d')
- .vars
- ;
-
- t.same(vars.a, 1);
- t.same(vars.b, 2);
- t.strictEqual(vars.c, null);
- t.strictEqual(vars.d, null);
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/parse.js b/scripts/node_modules/unzip/node_modules/binary/test/parse.js
deleted file mode 100644
index fbc9f5bd..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/parse.js
+++ /dev/null
@@ -1,54 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('parse', function (t) {
- t.plan(6);
- var res = binary.parse(new Buffer([ 97, 98, 99, 99, 99, 99, 1, 2, 3 ]))
- .word8('a')
- .word16be('bc')
- .skip(3)
- .buffer('def', 3)
- .tap(function (vars) {
- t.equal(vars.a, 97);
- t.equal(vars.bc, 25187);
- t.same(
- [].slice.call(vars.def),
- [].slice.call(new Buffer([ 1, 2, 3]))
- );
- })
- .vars
- ;
- t.equal(res.a, 97);
- t.equal(res.bc, 25187);
- t.same(
- [].slice.call(res.def),
- [].slice.call(new Buffer([ 1, 2, 3 ]))
- );
-});
-
-test('loop', function (t) {
- t.plan(2);
- var res = binary.parse(new Buffer([ 97, 98, 99, 4, 5, 2, -3, 9 ]))
- .word8('a')
- .word16be('bc')
- .loop(function (end) {
- var x = this.word8s('x').vars.x;
- if (x < 0) end();
- })
- .tap(function (vars) {
- t.same(vars, {
- a : 97,
- bc : 25187,
- x : -3,
- });
- })
- .word8('y')
- .vars
- ;
- t.same(res, {
- a : 97,
- bc : 25187,
- x : -3,
- y : 9,
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/peek.js b/scripts/node_modules/unzip/node_modules/binary/test/peek.js
deleted file mode 100644
index 00109d39..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/peek.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('peek', function (t) {
- t.plan(4);
- var bufs = [
- new Buffer([ 6, 1, 6, 1, 6, 9, 0, 0, 0, 97 ]),
- new Buffer([ 98, 99 ]),
- new Buffer([ 100, 101, 102 ]),
- ];
-
- var stream = new EventEmitter;
- var iv = setInterval(function () {
- var buf = bufs.shift();
- if (buf) stream.emit('data', buf)
- else clearInterval(iv)
- }, 20);
-
- binary.stream(stream)
- .buffer('sixone', 5)
- .peek(function () {
- this.word32le('len');
- })
- .buffer('buf', 'len')
- .word8('x')
- .tap(function (vars) {
- t.same(
- [].slice.call(vars.sixone),
- [].slice.call(new Buffer([ 6, 1, 6, 1, 6 ]))
- );
- t.same(vars.buf.length, vars.len);
- t.same(
- [].slice.call(vars.buf),
- [ 9, 0, 0, 0, 97, 98, 99, 100, 101 ]
- );
- t.same(vars.x, 102);
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/pipe.js b/scripts/node_modules/unzip/node_modules/binary/test/pipe.js
deleted file mode 100644
index 7c260cdc..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/pipe.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var Stream = require('stream').Stream;
-
-test('loop', function (t) {
- t.plan(3 * 2 + 1);
-
- var rs = new Stream;
- rs.readable = true;
-
- var ws = binary()
- .loop(function (end, vars) {
- t.strictEqual(vars, this.vars);
- this
- .word16lu('a')
- .word8u('b')
- .word8s('c')
- .tap(function (vars_) {
- t.strictEqual(vars, vars_);
- if (vars.c < 0) end();
- })
- ;
- })
- .tap(function (vars) {
- t.same(vars, { a : 1337, b : 55, c : -5 });
- })
- ;
- rs.pipe(ws);
-
- setTimeout(function () {
- rs.emit('data', new Buffer([ 2, 10, 88 ]));
- }, 10);
- setTimeout(function () {
- rs.emit('data', new Buffer([ 100, 3, 6, 242, 30 ]));
- }, 20);
- setTimeout(function () {
- rs.emit('data', new Buffer([ 60, 60, 199, 44 ]));
- }, 30);
-
- setTimeout(function () {
- rs.emit('data', new Buffer([ 57, 5 ]));
- }, 80);
- setTimeout(function () {
- rs.emit('data', new Buffer([ 55, 251 ]));
- }, 90);
- setTimeout(function () {
- rs.emit('end');
- }, 100);
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/posbs.js b/scripts/node_modules/unzip/node_modules/binary/test/posbs.js
deleted file mode 100644
index 0642948e..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/posbs.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('posbs', function (t) {
- t.plan(4);
- // note: can't store 12667700813876161 exactly in an ieee float
-
- var buf = new Buffer([
- 30, // a == -30
- 9, 37, // b == -2341
- 0, 12, 10, 20, // c == -789012
- 0, 45, 1, 52, 239, 33, 203, 193, // d == 12667700813876161
- ]);
-
- binary.parse(buf)
- .word8bs('a')
- .word16bs('b')
- .word32bs('c')
- .word64bs('d')
- .tap(function (vars) {
- t.same(vars.a, 30);
- t.same(vars.b, 2341);
- t.same(vars.c, 789012);
- t.ok(
- Math.abs(vars.d - 12667700813876161) < 1000
- );
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/posls.js b/scripts/node_modules/unzip/node_modules/binary/test/posls.js
deleted file mode 100644
index 2b8f2083..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/posls.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('posls', function (t) {
- t.plan(4);
-
- // note: can't store 12667700813876161 exactly in an ieee float
- var buf = new Buffer([
- 30, // a == -30
- 37, 9, // b == -2341
- 20, 10, 12, 0, // c == -789012
- 193, 203, 33, 239, 52, 1, 45, 0, // d == 12667700813876161
- ]);
-
- binary.parse(buf)
- .word8ls('a')
- .word16ls('b')
- .word32ls('c')
- .word64ls('d')
- .tap(function (vars) {
- t.same(vars.a, 30);
- t.same(vars.b, 2341);
- t.same(vars.c, 789012);
- t.ok(
- Math.abs(vars.d - 12667700813876161) < 1000
- );
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/scan.js b/scripts/node_modules/unzip/node_modules/binary/test/scan.js
deleted file mode 100644
index 6acf2b2d..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/scan.js
+++ /dev/null
@@ -1,33 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('scan', function (t) {
- t.plan(4);
-
- var em = new EventEmitter;
- binary(em)
- .word8('a')
- .scan('l1', new Buffer('\r\n'))
- .scan('l2', '\r\n')
- .word8('z')
- .tap(function (vars) {
- t.same(vars.a, 99);
- t.same(vars.l1.toString(), 'foo bar');
- t.same(vars.l2.toString(), 'baz');
- t.same(vars.z, 42);
- })
- ;
-
- setTimeout(function () {
- em.emit('data', new Buffer([99,0x66,0x6f,0x6f,0x20]));
- }, 20);
-
- setTimeout(function () {
- em.emit('data', new Buffer('bar\r'));
- }, 40);
-
- setTimeout(function () {
- em.emit('data', new Buffer('\nbaz\r\n*'));
- }, 60);
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/scan_buf.js b/scripts/node_modules/unzip/node_modules/binary/test/scan_buf.js
deleted file mode 100644
index 5e975c86..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/scan_buf.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('scan buf', function (t) {
- t.plan(4);
-
- var vars = binary(new Buffer('\x63foo bar\r\nbaz\r\n*'))
- .word8('a')
- .scan('l1', new Buffer('\r\n'))
- .scan('l2', '\r\n')
- .word8('z')
- .vars
- ;
- t.same(vars.a, 99);
- t.same(vars.z, 42);
- t.same(vars.l1.toString(), 'foo bar');
- t.same(vars.l2.toString(), 'baz');
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/scan_buf_null.js b/scripts/node_modules/unzip/node_modules/binary/test/scan_buf_null.js
deleted file mode 100644
index 96d97674..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/scan_buf_null.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-
-test('scan buf null', function (t) {
- t.plan(3);
- var vars = binary(new Buffer('\x63foo bar baz'))
- .word8('a')
- .scan('b', '\r\n')
- .word8('c')
- .vars
- ;
-
- t.same(vars.a, 99);
- t.same(vars.b.toString(), 'foo bar baz');
- t.strictEqual(vars.c, null);
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/skip.js b/scripts/node_modules/unzip/node_modules/binary/test/skip.js
deleted file mode 100644
index 6a26051f..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/skip.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-var seq = require('seq');
-
-test('skip', function (t) {
- t.plan(7);
- var em = new EventEmitter;
- var state = 0;
-
- binary(em)
- .word16lu('a')
- .tap(function () { state = 1 })
- .skip(7)
- .tap(function () { state = 2 })
- .word8('b')
- .tap(function () { state = 3 })
- .tap(function (vars) {
- t.same(state, 3);
- t.same(vars, {
- a : 2569,
- b : 8,
- });
- })
- ;
-
- seq()
- .seq(setTimeout, seq, 20)
- .seq(function () {
- t.same(state, 0);
- em.emit('data', new Buffer([ 9 ]));
- this(null);
- })
- .seq(setTimeout, seq, 5)
- .seq(function () {
- t.same(state, 0);
- em.emit('data', new Buffer([ 10, 1, 2 ]));
- this(null);
- })
- .seq(setTimeout, seq, 30)
- .seq(function () {
- t.same(state, 1);
- em.emit('data', new Buffer([ 3, 4, 5 ]));
- this(null);
- })
- .seq(setTimeout, seq, 15)
- .seq(function () {
- t.same(state, 1);
- em.emit('data', new Buffer([ 6, 7 ]));
- this(null);
- })
- .seq(function () {
- t.same(state, 2);
- em.emit('data', new Buffer([ 8 ]));
- this(null);
- })
- ;
-});
diff --git a/scripts/node_modules/unzip/node_modules/binary/test/split.js b/scripts/node_modules/unzip/node_modules/binary/test/split.js
deleted file mode 100644
index cb9dffcc..00000000
--- a/scripts/node_modules/unzip/node_modules/binary/test/split.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var binary = require('../');
-var test = require('tap').test;
-var EventEmitter = require('events').EventEmitter;
-
-test('split', function (t) {
- t.plan(1);
-
- var em = new EventEmitter;
- binary.stream(em)
- .word8('a')
- .word16be('bc')
- .word32ls('x')
- .word32bs('y')
- .tap(function (vars) {
- t.same(vars, {
- a : 97,
- bc : 25187,
- x : 621609828,
- y : 621609828,
- });
- })
- ;
-
- em.emit('data', new Buffer([ 97, 98 ]));
- setTimeout(function () {
- em.emit('data', new Buffer([ 99, 100 ]));
- }, 25);
- setTimeout(function () {
- em.emit('data', new Buffer([ 3, 13, 37, 37 ]));
- }, 30);
- setTimeout(function () {
- em.emit('data', new Buffer([ 13, 3, 100 ]));
- }, 40);
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/.npmignore b/scripts/node_modules/unzip/node_modules/fstream/.npmignore
deleted file mode 100644
index 494272a8..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/.npmignore
+++ /dev/null
@@ -1,5 +0,0 @@
-.*.swp
-node_modules/
-examples/deep-copy/
-examples/path/
-examples/filter-copy/
diff --git a/scripts/node_modules/unzip/node_modules/fstream/.travis.yml b/scripts/node_modules/unzip/node_modules/fstream/.travis.yml
deleted file mode 100644
index 2d26206d..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: node_js
-node_js:
- - 0.6
diff --git a/scripts/node_modules/unzip/node_modules/fstream/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/LICENSE
deleted file mode 100644
index 0c44ae71..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) Isaac Z. Schlueter ("Author")
-All rights reserved.
-
-The BSD License
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/README.md b/scripts/node_modules/unzip/node_modules/fstream/README.md
deleted file mode 100644
index 9d8cb77e..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-Like FS streams, but with stat on them, and supporting directories and
-symbolic links, as well as normal files. Also, you can use this to set
-the stats on a file, even if you don't change its contents, or to create
-a symlink, etc.
-
-So, for example, you can "write" a directory, and it'll call `mkdir`. You
-can specify a uid and gid, and it'll call `chown`. You can specify a
-`mtime` and `atime`, and it'll call `utimes`. You can call it a symlink
-and provide a `linkpath` and it'll call `symlink`.
-
-Note that it won't automatically resolve symbolic links. So, if you
-call `fstream.Reader('/some/symlink')` then you'll get an object
-that stats and then ends immediately (since it has no data). To follow
-symbolic links, do this: `fstream.Reader({path:'/some/symlink', follow:
-true })`.
-
-There are various checks to make sure that the bytes emitted are the
-same as the intended size, if the size is set.
-
-## Examples
-
-```javascript
-fstream
- .Writer({ path: "path/to/file"
- , mode: 0755
- , size: 6
- })
- .write("hello\n")
- .end()
-```
-
-This will create the directories if they're missing, and then write
-`hello\n` into the file, chmod it to 0755, and assert that 6 bytes have
-been written when it's done.
-
-```javascript
-fstream
- .Writer({ path: "path/to/file"
- , mode: 0755
- , size: 6
- , flags: "a"
- })
- .write("hello\n")
- .end()
-```
-
-You can pass flags in, if you want to append to a file.
-
-```javascript
-fstream
- .Writer({ path: "path/to/symlink"
- , linkpath: "./file"
- , SymbolicLink: true
- , mode: "0755" // octal strings supported
- })
- .end()
-```
-
-If isSymbolicLink is a function, it'll be called, and if it returns
-true, then it'll treat it as a symlink. If it's not a function, then
-any truish value will make a symlink, or you can set `type:
-'SymbolicLink'`, which does the same thing.
-
-Note that the linkpath is relative to the symbolic link location, not
-the parent dir or cwd.
-
-```javascript
-fstream
- .Reader("path/to/dir")
- .pipe(fstream.Writer("path/to/other/dir"))
-```
-
-This will do like `cp -Rp path/to/dir path/to/other/dir`. If the other
-dir exists and isn't a directory, then it'll emit an error. It'll also
-set the uid, gid, mode, etc. to be identical. In this way, it's more
-like `rsync -a` than simply a copy.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/examples/filter-pipe.js b/scripts/node_modules/unzip/node_modules/fstream/examples/filter-pipe.js
deleted file mode 100644
index c6b55b3e..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/examples/filter-pipe.js
+++ /dev/null
@@ -1,131 +0,0 @@
-var fstream = require("../fstream.js")
-var path = require("path")
-
-var r = fstream.Reader({ path: path.dirname(__dirname)
- , filter: function () {
- return !this.basename.match(/^\./) &&
- !this.basename.match(/^node_modules$/)
- !this.basename.match(/^deep-copy$/)
- !this.basename.match(/^filter-copy$/)
- }
- })
-
-// this writer will only write directories
-var w = fstream.Writer({ path: path.resolve(__dirname, "filter-copy")
- , type: "Directory"
- , filter: function () {
- return this.type === "Directory"
- }
- })
-
-var indent = ""
-var escape = {}
-
-r.on("entry", appears)
-r.on("ready", function () {
- console.error("ready to begin!", r.path)
-})
-
-function appears (entry) {
- console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename)
- if (foggy) {
- console.error("FOGGY!")
- var p = entry
- do {
- console.error(p.depth, p.path, p._paused)
- } while (p = p.parent)
-
- throw new Error("\033[mshould not have entries while foggy")
- }
- indent += "\t"
- entry.on("data", missile(entry))
- entry.on("end", runaway(entry))
- entry.on("entry", appears)
-}
-
-var foggy
-function missile (entry) {
- if (entry.type === "Directory") {
- var ended = false
- entry.once("end", function () { ended = true })
- return function (c) {
- // throw in some pathological pause()/resume() behavior
- // just for extra fun.
- process.nextTick(function () {
- if (!foggy && !ended) { // && Math.random() < 0.3) {
- console.error(indent +"%s casts a spell", entry.basename)
- console.error("\na slowing fog comes over the battlefield...\n\033[32m")
- entry.pause()
- entry.once("resume", liftFog)
- foggy = setTimeout(liftFog, 1000)
-
- function liftFog (who) {
- if (!foggy) return
- if (who) {
- console.error("%s breaks the spell!", who && who.path)
- } else {
- console.error("the spell expires!")
- }
- console.error("\033[mthe fog lifts!\n")
- clearTimeout(foggy)
- foggy = null
- if (entry._paused) entry.resume()
- }
-
- }
- })
- }
- }
-
- return function (c) {
- var e = Math.random() < 0.5
- console.error(indent + "%s %s for %d damage!",
- entry.basename,
- e ? "is struck" : "fires a chunk",
- c.length)
- }
-}
-
-function runaway (entry) { return function () {
- var e = Math.random() < 0.5
- console.error(indent + "%s %s",
- entry.basename,
- e ? "turns to flee" : "is vanquished!")
- indent = indent.slice(0, -1)
-}}
-
-
-w.on("entry", attacks)
-//w.on("ready", function () { attacks(w) })
-function attacks (entry) {
- console.error(indent + "%s %s!", entry.basename,
- entry.type === "Directory" ? "calls for backup" : "attacks")
- entry.on("entry", attacks)
-}
-
-ended = false
-var i = 1
-r.on("end", function () {
- if (foggy) clearTimeout(foggy)
- console.error("\033[mIT'S OVER!!")
- console.error("A WINNAR IS YOU!")
-
- console.log("ok " + (i ++) + " A WINNAR IS YOU")
- ended = true
- // now go through and verify that everything in there is a dir.
- var p = path.resolve(__dirname, "filter-copy")
- var checker = fstream.Reader({ path: p })
- checker.checker = true
- checker.on("child", function (e) {
- var ok = e.type === "Directory"
- console.log((ok ? "" : "not ") + "ok " + (i ++) +
- " should be a dir: " +
- e.path.substr(checker.path.length + 1))
- })
-})
-
-process.on("exit", function () {
- console.log((ended ? "" : "not ") + "ok " + (i ++) + " ended")
-})
-
-r.pipe(w)
diff --git a/scripts/node_modules/unzip/node_modules/fstream/examples/pipe.js b/scripts/node_modules/unzip/node_modules/fstream/examples/pipe.js
deleted file mode 100644
index 648ec849..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/examples/pipe.js
+++ /dev/null
@@ -1,115 +0,0 @@
-var fstream = require("../fstream.js")
-var path = require("path")
-
-var r = fstream.Reader({ path: path.dirname(__dirname)
- , filter: function () {
- return !this.basename.match(/^\./) &&
- !this.basename.match(/^node_modules$/)
- !this.basename.match(/^deep-copy$/)
- }
- })
-
-var w = fstream.Writer({ path: path.resolve(__dirname, "deep-copy")
- , type: "Directory"
- })
-
-var indent = ""
-var escape = {}
-
-r.on("entry", appears)
-r.on("ready", function () {
- console.error("ready to begin!", r.path)
-})
-
-function appears (entry) {
- console.error(indent + "a %s appears!", entry.type, entry.basename, typeof entry.basename, entry)
- if (foggy) {
- console.error("FOGGY!")
- var p = entry
- do {
- console.error(p.depth, p.path, p._paused)
- } while (p = p.parent)
-
- throw new Error("\033[mshould not have entries while foggy")
- }
- indent += "\t"
- entry.on("data", missile(entry))
- entry.on("end", runaway(entry))
- entry.on("entry", appears)
-}
-
-var foggy
-function missile (entry) {
- if (entry.type === "Directory") {
- var ended = false
- entry.once("end", function () { ended = true })
- return function (c) {
- // throw in some pathological pause()/resume() behavior
- // just for extra fun.
- process.nextTick(function () {
- if (!foggy && !ended) { // && Math.random() < 0.3) {
- console.error(indent +"%s casts a spell", entry.basename)
- console.error("\na slowing fog comes over the battlefield...\n\033[32m")
- entry.pause()
- entry.once("resume", liftFog)
- foggy = setTimeout(liftFog, 10)
-
- function liftFog (who) {
- if (!foggy) return
- if (who) {
- console.error("%s breaks the spell!", who && who.path)
- } else {
- console.error("the spell expires!")
- }
- console.error("\033[mthe fog lifts!\n")
- clearTimeout(foggy)
- foggy = null
- if (entry._paused) entry.resume()
- }
-
- }
- })
- }
- }
-
- return function (c) {
- var e = Math.random() < 0.5
- console.error(indent + "%s %s for %d damage!",
- entry.basename,
- e ? "is struck" : "fires a chunk",
- c.length)
- }
-}
-
-function runaway (entry) { return function () {
- var e = Math.random() < 0.5
- console.error(indent + "%s %s",
- entry.basename,
- e ? "turns to flee" : "is vanquished!")
- indent = indent.slice(0, -1)
-}}
-
-
-w.on("entry", attacks)
-//w.on("ready", function () { attacks(w) })
-function attacks (entry) {
- console.error(indent + "%s %s!", entry.basename,
- entry.type === "Directory" ? "calls for backup" : "attacks")
- entry.on("entry", attacks)
-}
-
-ended = false
-r.on("end", function () {
- if (foggy) clearTimeout(foggy)
- console.error("\033[mIT'S OVER!!")
- console.error("A WINNAR IS YOU!")
-
- console.log("ok 1 A WINNAR IS YOU")
- ended = true
-})
-
-process.on("exit", function () {
- console.log((ended ? "" : "not ") + "ok 2 ended")
-})
-
-r.pipe(w)
diff --git a/scripts/node_modules/unzip/node_modules/fstream/examples/reader.js b/scripts/node_modules/unzip/node_modules/fstream/examples/reader.js
deleted file mode 100644
index 9aa1a953..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/examples/reader.js
+++ /dev/null
@@ -1,54 +0,0 @@
-var fstream = require("../fstream.js")
-var tap = require("tap")
-var fs = require("fs")
-var path = require("path")
-var children = -1
-var dir = path.dirname(__dirname)
-
-var gotReady = false
-var ended = false
-
-tap.test("reader test", function (t) {
-
- var r = fstream.Reader({ path: dir
- , filter: function () {
- // return this.parent === r
- return this.parent === r || this === r
- }
- })
-
- r.on("ready", function () {
- gotReady = true
- children = fs.readdirSync(dir).length
- console.error("Setting expected children to "+children)
- t.equal(r.type, "Directory", "should be a directory")
- })
-
- r.on("entry", function (entry) {
- children --
- if (!gotReady) {
- t.fail("children before ready!")
- }
- t.equal(entry.dirname, r.path, "basename is parent dir")
- })
-
- r.on("error", function (er) {
- t.fail(er)
- t.end()
- process.exit(1)
- })
-
- r.on("end", function () {
- t.equal(children, 0, "should have seen all children")
- ended = true
- })
-
- var closed = false
- r.on("close", function () {
- t.ok(ended, "saw end before close")
- t.notOk(closed, "close should only happen once")
- closed = true
- t.end()
- })
-
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/examples/symlink-write.js b/scripts/node_modules/unzip/node_modules/fstream/examples/symlink-write.js
deleted file mode 100644
index d7816d24..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/examples/symlink-write.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var fstream = require("../fstream.js")
- , closed = false
-
-fstream
- .Writer({ path: "path/to/symlink"
- , linkpath: "./file"
- , isSymbolicLink: true
- , mode: "0755" // octal strings supported
- })
- .on("close", function () {
- closed = true
- var fs = require("fs")
- var s = fs.lstatSync("path/to/symlink")
- var isSym = s.isSymbolicLink()
- console.log((isSym?"":"not ") +"ok 1 should be symlink")
- var t = fs.readlinkSync("path/to/symlink")
- var isTarget = t === "./file"
- console.log((isTarget?"":"not ") +"ok 2 should link to ./file")
- })
- .end()
-
-process.on("exit", function () {
- console.log((closed?"":"not ")+"ok 3 should be closed")
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/fstream.js b/scripts/node_modules/unzip/node_modules/fstream/fstream.js
deleted file mode 100644
index c66d26f5..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/fstream.js
+++ /dev/null
@@ -1,31 +0,0 @@
-exports.Abstract = require("./lib/abstract.js")
-exports.Reader = require("./lib/reader.js")
-exports.Writer = require("./lib/writer.js")
-
-exports.File =
- { Reader: require("./lib/file-reader.js")
- , Writer: require("./lib/file-writer.js") }
-
-exports.Dir =
- { Reader : require("./lib/dir-reader.js")
- , Writer : require("./lib/dir-writer.js") }
-
-exports.Link =
- { Reader : require("./lib/link-reader.js")
- , Writer : require("./lib/link-writer.js") }
-
-exports.Proxy =
- { Reader : require("./lib/proxy-reader.js")
- , Writer : require("./lib/proxy-writer.js") }
-
-exports.Reader.Dir = exports.DirReader = exports.Dir.Reader
-exports.Reader.File = exports.FileReader = exports.File.Reader
-exports.Reader.Link = exports.LinkReader = exports.Link.Reader
-exports.Reader.Proxy = exports.ProxyReader = exports.Proxy.Reader
-
-exports.Writer.Dir = exports.DirWriter = exports.Dir.Writer
-exports.Writer.File = exports.FileWriter = exports.File.Writer
-exports.Writer.Link = exports.LinkWriter = exports.Link.Writer
-exports.Writer.Proxy = exports.ProxyWriter = exports.Proxy.Writer
-
-exports.collect = require("./lib/collect.js")
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/abstract.js b/scripts/node_modules/unzip/node_modules/fstream/lib/abstract.js
deleted file mode 100644
index 11ef0e28..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/abstract.js
+++ /dev/null
@@ -1,85 +0,0 @@
-// the parent class for all fstreams.
-
-module.exports = Abstract
-
-var Stream = require("stream").Stream
- , inherits = require("inherits")
-
-function Abstract () {
- Stream.call(this)
-}
-
-inherits(Abstract, Stream)
-
-Abstract.prototype.on = function (ev, fn) {
- if (ev === "ready" && this.ready) {
- process.nextTick(fn.bind(this))
- } else {
- Stream.prototype.on.call(this, ev, fn)
- }
- return this
-}
-
-Abstract.prototype.abort = function () {
- this._aborted = true
- this.emit("abort")
-}
-
-Abstract.prototype.destroy = function () {}
-
-Abstract.prototype.warn = function (msg, code) {
- var me = this
- , er = decorate(msg, code, me)
- if (!me.listeners("warn")) {
- console.error("%s %s\n" +
- "path = %s\n" +
- "syscall = %s\n" +
- "fstream_type = %s\n" +
- "fstream_path = %s\n" +
- "fstream_unc_path = %s\n" +
- "fstream_class = %s\n" +
- "fstream_stack =\n%s\n",
- code || "UNKNOWN",
- er.stack,
- er.path,
- er.syscall,
- er.fstream_type,
- er.fstream_path,
- er.fstream_unc_path,
- er.fstream_class,
- er.fstream_stack.join("\n"))
- } else {
- me.emit("warn", er)
- }
-}
-
-Abstract.prototype.info = function (msg, code) {
- this.emit("info", msg, code)
-}
-
-Abstract.prototype.error = function (msg, code, th) {
- var er = decorate(msg, code, this)
- if (th) throw er
- else this.emit("error", er)
-}
-
-function decorate (er, code, me) {
- if (!(er instanceof Error)) er = new Error(er)
- er.code = er.code || code
- er.path = er.path || me.path
- er.fstream_type = er.fstream_type || me.type
- er.fstream_path = er.fstream_path || me.path
- if (me._path !== me.path) {
- er.fstream_unc_path = er.fstream_unc_path || me._path
- }
- if (me.linkpath) {
- er.fstream_linkpath = er.fstream_linkpath || me.linkpath
- }
- er.fstream_class = er.fstream_class || me.constructor.name
- er.fstream_stack = er.fstream_stack ||
- new Error().stack.split(/\n/).slice(3).map(function (s) {
- return s.replace(/^ at /, "")
- })
-
- return er
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/collect.js b/scripts/node_modules/unzip/node_modules/fstream/lib/collect.js
deleted file mode 100644
index a36f780e..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/collect.js
+++ /dev/null
@@ -1,67 +0,0 @@
-module.exports = collect
-
-function collect (stream) {
- if (stream._collected) return
-
- stream._collected = true
- stream.pause()
-
- stream.on("data", save)
- stream.on("end", save)
- var buf = []
- function save (b) {
- if (typeof b === "string") b = new Buffer(b)
- if (Buffer.isBuffer(b) && !b.length) return
- buf.push(b)
- }
-
- stream.on("entry", saveEntry)
- var entryBuffer = []
- function saveEntry (e) {
- collect(e)
- entryBuffer.push(e)
- }
-
- stream.on("proxy", proxyPause)
- function proxyPause (p) {
- p.pause()
- }
-
-
- // replace the pipe method with a new version that will
- // unlock the buffered stuff. if you just call .pipe()
- // without a destination, then it'll re-play the events.
- stream.pipe = (function (orig) { return function (dest) {
- // console.error(" === open the pipes", dest && dest.path)
-
- // let the entries flow through one at a time.
- // Once they're all done, then we can resume completely.
- var e = 0
- ;(function unblockEntry () {
- var entry = entryBuffer[e++]
- // console.error(" ==== unblock entry", entry && entry.path)
- if (!entry) return resume()
- entry.on("end", unblockEntry)
- if (dest) dest.add(entry)
- else stream.emit("entry", entry)
- })()
-
- function resume () {
- stream.removeListener("entry", saveEntry)
- stream.removeListener("data", save)
- stream.removeListener("end", save)
-
- stream.pipe = orig
- if (dest) stream.pipe(dest)
-
- buf.forEach(function (b) {
- if (b) stream.emit("data", b)
- else stream.emit("end")
- })
-
- stream.resume()
- }
-
- return dest
- }})(stream.pipe)
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/dir-reader.js b/scripts/node_modules/unzip/node_modules/fstream/lib/dir-reader.js
deleted file mode 100644
index 346ac2b8..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/dir-reader.js
+++ /dev/null
@@ -1,251 +0,0 @@
-// A thing that emits "entry" events with Reader objects
-// Pausing it causes it to stop emitting entry events, and also
-// pauses the current entry if there is one.
-
-module.exports = DirReader
-
-var fs = require("graceful-fs")
- , fstream = require("../fstream.js")
- , Reader = fstream.Reader
- , inherits = require("inherits")
- , mkdir = require("mkdirp")
- , path = require("path")
- , Reader = require("./reader.js")
- , assert = require("assert").ok
-
-inherits(DirReader, Reader)
-
-function DirReader (props) {
- var me = this
- if (!(me instanceof DirReader)) throw new Error(
- "DirReader must be called as constructor.")
-
- // should already be established as a Directory type
- if (props.type !== "Directory" || !props.Directory) {
- throw new Error("Non-directory type "+ props.type)
- }
-
- me.entries = null
- me._index = -1
- me._paused = false
- me._length = -1
-
- if (props.sort) {
- this.sort = props.sort
- }
-
- Reader.call(this, props)
-}
-
-DirReader.prototype._getEntries = function () {
- var me = this
-
- // race condition. might pause() before calling _getEntries,
- // and then resume, and try to get them a second time.
- if (me._gotEntries) return
- me._gotEntries = true
-
- fs.readdir(me._path, function (er, entries) {
- if (er) return me.error(er)
-
- me.entries = entries
-
- me.emit("entries", entries)
- if (me._paused) me.once("resume", processEntries)
- else processEntries()
-
- function processEntries () {
- me._length = me.entries.length
- if (typeof me.sort === "function") {
- me.entries = me.entries.sort(me.sort.bind(me))
- }
- me._read()
- }
- })
-}
-
-// start walking the dir, and emit an "entry" event for each one.
-DirReader.prototype._read = function () {
- var me = this
-
- if (!me.entries) return me._getEntries()
-
- if (me._paused || me._currentEntry || me._aborted) {
- // console.error("DR paused=%j, current=%j, aborted=%j", me._paused, !!me._currentEntry, me._aborted)
- return
- }
-
- me._index ++
- if (me._index >= me.entries.length) {
- if (!me._ended) {
- me._ended = true
- me.emit("end")
- me.emit("close")
- }
- return
- }
-
- // ok, handle this one, then.
-
- // save creating a proxy, by stat'ing the thing now.
- var p = path.resolve(me._path, me.entries[me._index])
- assert(p !== me._path)
- assert(me.entries[me._index])
-
- // set this to prevent trying to _read() again in the stat time.
- me._currentEntry = p
- fs[ me.props.follow ? "stat" : "lstat" ](p, function (er, stat) {
- if (er) return me.error(er)
-
- var who = me._proxy || me
-
- stat.path = p
- stat.basename = path.basename(p)
- stat.dirname = path.dirname(p)
- var childProps = me.getChildProps.call(who, stat)
- childProps.path = p
- childProps.basename = path.basename(p)
- childProps.dirname = path.dirname(p)
-
- var entry = Reader(childProps, stat)
-
- // console.error("DR Entry", p, stat.size)
-
- me._currentEntry = entry
-
- // "entry" events are for direct entries in a specific dir.
- // "child" events are for any and all children at all levels.
- // This nomenclature is not completely final.
-
- entry.on("pause", function (who) {
- if (!me._paused && !entry._disowned) {
- me.pause(who)
- }
- })
-
- entry.on("resume", function (who) {
- if (me._paused && !entry._disowned) {
- me.resume(who)
- }
- })
-
- entry.on("stat", function (props) {
- me.emit("_entryStat", entry, props)
- if (entry._aborted) return
- if (entry._paused) entry.once("resume", function () {
- me.emit("entryStat", entry, props)
- })
- else me.emit("entryStat", entry, props)
- })
-
- entry.on("ready", function EMITCHILD () {
- // console.error("DR emit child", entry._path)
- if (me._paused) {
- // console.error(" DR emit child - try again later")
- // pause the child, and emit the "entry" event once we drain.
- // console.error("DR pausing child entry")
- entry.pause(me)
- return me.once("resume", EMITCHILD)
- }
-
- // skip over sockets. they can't be piped around properly,
- // so there's really no sense even acknowledging them.
- // if someone really wants to see them, they can listen to
- // the "socket" events.
- if (entry.type === "Socket") {
- me.emit("socket", entry)
- } else {
- me.emitEntry(entry)
- }
- })
-
- var ended = false
- entry.on("close", onend)
- entry.on("disown", onend)
- function onend () {
- if (ended) return
- ended = true
- me.emit("childEnd", entry)
- me.emit("entryEnd", entry)
- me._currentEntry = null
- if (!me._paused) {
- me._read()
- }
- }
-
- // XXX Remove this. Works in node as of 0.6.2 or so.
- // Long filenames should not break stuff.
- entry.on("error", function (er) {
- if (entry._swallowErrors) {
- me.warn(er)
- entry.emit("end")
- entry.emit("close")
- } else {
- me.emit("error", er)
- }
- })
-
- // proxy up some events.
- ; [ "child"
- , "childEnd"
- , "warn"
- ].forEach(function (ev) {
- entry.on(ev, me.emit.bind(me, ev))
- })
- })
-}
-
-DirReader.prototype.disown = function (entry) {
- entry.emit("beforeDisown")
- entry._disowned = true
- entry.parent = entry.root = null
- if (entry === this._currentEntry) {
- this._currentEntry = null
- }
- entry.emit("disown")
-}
-
-DirReader.prototype.getChildProps = function (stat) {
- return { depth: this.depth + 1
- , root: this.root || this
- , parent: this
- , follow: this.follow
- , filter: this.filter
- , sort: this.props.sort
- , hardlinks: this.props.hardlinks
- }
-}
-
-DirReader.prototype.pause = function (who) {
- var me = this
- if (me._paused) return
- who = who || me
- me._paused = true
- if (me._currentEntry && me._currentEntry.pause) {
- me._currentEntry.pause(who)
- }
- me.emit("pause", who)
-}
-
-DirReader.prototype.resume = function (who) {
- var me = this
- if (!me._paused) return
- who = who || me
-
- me._paused = false
- // console.error("DR Emit Resume", me._path)
- me.emit("resume", who)
- if (me._paused) {
- // console.error("DR Re-paused", me._path)
- return
- }
-
- if (me._currentEntry) {
- if (me._currentEntry.resume) me._currentEntry.resume(who)
- } else me._read()
-}
-
-DirReader.prototype.emitEntry = function (entry) {
- this.emit("entry", entry)
- this.emit("child", entry)
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/dir-writer.js b/scripts/node_modules/unzip/node_modules/fstream/lib/dir-writer.js
deleted file mode 100644
index 7073b883..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/dir-writer.js
+++ /dev/null
@@ -1,171 +0,0 @@
-// It is expected that, when .add() returns false, the consumer
-// of the DirWriter will pause until a "drain" event occurs. Note
-// that this is *almost always going to be the case*, unless the
-// thing being written is some sort of unsupported type, and thus
-// skipped over.
-
-module.exports = DirWriter
-
-var fs = require("graceful-fs")
- , fstream = require("../fstream.js")
- , Writer = require("./writer.js")
- , inherits = require("inherits")
- , mkdir = require("mkdirp")
- , path = require("path")
- , collect = require("./collect.js")
-
-inherits(DirWriter, Writer)
-
-function DirWriter (props) {
- var me = this
- if (!(me instanceof DirWriter)) me.error(
- "DirWriter must be called as constructor.", null, true)
-
- // should already be established as a Directory type
- if (props.type !== "Directory" || !props.Directory) {
- me.error("Non-directory type "+ props.type + " " +
- JSON.stringify(props), null, true)
- }
-
- Writer.call(this, props)
-}
-
-DirWriter.prototype._create = function () {
- var me = this
- mkdir(me._path, Writer.dirmode, function (er) {
- if (er) return me.error(er)
- // ready to start getting entries!
- me.ready = true
- me.emit("ready")
- me._process()
- })
-}
-
-// a DirWriter has an add(entry) method, but its .write() doesn't
-// do anything. Why a no-op rather than a throw? Because this
-// leaves open the door for writing directory metadata for
-// gnu/solaris style dumpdirs.
-DirWriter.prototype.write = function () {
- return true
-}
-
-DirWriter.prototype.end = function () {
- this._ended = true
- this._process()
-}
-
-DirWriter.prototype.add = function (entry) {
- var me = this
-
- // console.error("\tadd", entry._path, "->", me._path)
- collect(entry)
- if (!me.ready || me._currentEntry) {
- me._buffer.push(entry)
- return false
- }
-
- // create a new writer, and pipe the incoming entry into it.
- if (me._ended) {
- return me.error("add after end")
- }
-
- me._buffer.push(entry)
- me._process()
-
- return 0 === this._buffer.length
-}
-
-DirWriter.prototype._process = function () {
- var me = this
-
- // console.error("DW Process p=%j", me._processing, me.basename)
-
- if (me._processing) return
-
- var entry = me._buffer.shift()
- if (!entry) {
- // console.error("DW Drain")
- me.emit("drain")
- if (me._ended) me._finish()
- return
- }
-
- me._processing = true
- // console.error("DW Entry", entry._path)
-
- me.emit("entry", entry)
-
- // ok, add this entry
- //
- // don't allow recursive copying
- var p = entry
- do {
- var pp = p._path || p.path
- if (pp === me.root._path || pp === me._path ||
- (pp && pp.indexOf(me._path) === 0)) {
- // console.error("DW Exit (recursive)", entry.basename, me._path)
- me._processing = false
- if (entry._collected) entry.pipe()
- return me._process()
- }
- } while (p = p.parent)
-
- // console.error("DW not recursive")
-
- // chop off the entry's root dir, replace with ours
- var props = { parent: me
- , root: me.root || me
- , type: entry.type
- , depth: me.depth + 1 }
-
- var p = entry._path || entry.path || entry.props.path
- if (entry.parent) {
- p = p.substr(entry.parent._path.length + 1)
- }
- // get rid of any ../../ shenanigans
- props.path = path.join(me.path, path.join("/", p))
-
- // if i have a filter, the child should inherit it.
- props.filter = me.filter
-
- // all the rest of the stuff, copy over from the source.
- Object.keys(entry.props).forEach(function (k) {
- if (!props.hasOwnProperty(k)) {
- props[k] = entry.props[k]
- }
- })
-
- // not sure at this point what kind of writer this is.
- var child = me._currentChild = new Writer(props)
- child.on("ready", function () {
- // console.error("DW Child Ready", child.type, child._path)
- // console.error(" resuming", entry._path)
- entry.pipe(child)
- entry.resume()
- })
-
- // XXX Make this work in node.
- // Long filenames should not break stuff.
- child.on("error", function (er) {
- if (child._swallowErrors) {
- me.warn(er)
- child.emit("end")
- child.emit("close")
- } else {
- me.emit("error", er)
- }
- })
-
- // we fire _end internally *after* end, so that we don't move on
- // until any "end" listeners have had their chance to do stuff.
- child.on("close", onend)
- var ended = false
- function onend () {
- if (ended) return
- ended = true
- // console.error("* DW Child end", child.basename)
- me._currentChild = null
- me._processing = false
- me._process()
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/file-reader.js b/scripts/node_modules/unzip/node_modules/fstream/lib/file-reader.js
deleted file mode 100644
index b1f98618..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/file-reader.js
+++ /dev/null
@@ -1,147 +0,0 @@
-// Basically just a wrapper around an fs.ReadStream
-
-module.exports = FileReader
-
-var fs = require("graceful-fs")
- , fstream = require("../fstream.js")
- , Reader = fstream.Reader
- , inherits = require("inherits")
- , mkdir = require("mkdirp")
- , Reader = require("./reader.js")
- , EOF = {EOF: true}
- , CLOSE = {CLOSE: true}
-
-inherits(FileReader, Reader)
-
-function FileReader (props) {
- // console.error(" FR create", props.path, props.size, new Error().stack)
- var me = this
- if (!(me instanceof FileReader)) throw new Error(
- "FileReader must be called as constructor.")
-
- // should already be established as a File type
- // XXX Todo: preserve hardlinks by tracking dev+inode+nlink,
- // with a HardLinkReader class.
- if (!((props.type === "Link" && props.Link) ||
- (props.type === "File" && props.File))) {
- throw new Error("Non-file type "+ props.type)
- }
-
- me._buffer = []
- me._bytesEmitted = 0
- Reader.call(me, props)
-}
-
-FileReader.prototype._getStream = function () {
- var me = this
- , stream = me._stream = fs.createReadStream(me._path, me.props)
-
- if (me.props.blksize) {
- stream.bufferSize = me.props.blksize
- }
-
- stream.on("open", me.emit.bind(me, "open"))
-
- stream.on("data", function (c) {
- // console.error("\t\t%d %s", c.length, me.basename)
- me._bytesEmitted += c.length
- // no point saving empty chunks
- if (!c.length) return
- else if (me._paused || me._buffer.length) {
- me._buffer.push(c)
- me._read()
- } else me.emit("data", c)
- })
-
- stream.on("end", function () {
- if (me._paused || me._buffer.length) {
- // console.error("FR Buffering End", me._path)
- me._buffer.push(EOF)
- me._read()
- } else {
- me.emit("end")
- }
-
- if (me._bytesEmitted !== me.props.size) {
- me.error("Didn't get expected byte count\n"+
- "expect: "+me.props.size + "\n" +
- "actual: "+me._bytesEmitted)
- }
- })
-
- stream.on("close", function () {
- if (me._paused || me._buffer.length) {
- // console.error("FR Buffering Close", me._path)
- me._buffer.push(CLOSE)
- me._read()
- } else {
- // console.error("FR close 1", me._path)
- me.emit("close")
- }
- })
-
- me._read()
-}
-
-FileReader.prototype._read = function () {
- var me = this
- // console.error("FR _read", me._path)
- if (me._paused) {
- // console.error("FR _read paused", me._path)
- return
- }
-
- if (!me._stream) {
- // console.error("FR _getStream calling", me._path)
- return me._getStream()
- }
-
- // clear out the buffer, if there is one.
- if (me._buffer.length) {
- // console.error("FR _read has buffer", me._buffer.length, me._path)
- var buf = me._buffer
- for (var i = 0, l = buf.length; i < l; i ++) {
- var c = buf[i]
- if (c === EOF) {
- // console.error("FR Read emitting buffered end", me._path)
- me.emit("end")
- } else if (c === CLOSE) {
- // console.error("FR Read emitting buffered close", me._path)
- me.emit("close")
- } else {
- // console.error("FR Read emitting buffered data", me._path)
- me.emit("data", c)
- }
-
- if (me._paused) {
- // console.error("FR Read Re-pausing at "+i, me._path)
- me._buffer = buf.slice(i)
- return
- }
- }
- me._buffer.length = 0
- }
- // console.error("FR _read done")
- // that's about all there is to it.
-}
-
-FileReader.prototype.pause = function (who) {
- var me = this
- // console.error("FR Pause", me._path)
- if (me._paused) return
- who = who || me
- me._paused = true
- if (me._stream) me._stream.pause()
- me.emit("pause", who)
-}
-
-FileReader.prototype.resume = function (who) {
- var me = this
- // console.error("FR Resume", me._path)
- if (!me._paused) return
- who = who || me
- me.emit("resume", who)
- me._paused = false
- if (me._stream) me._stream.resume()
- me._read()
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/file-writer.js b/scripts/node_modules/unzip/node_modules/fstream/lib/file-writer.js
deleted file mode 100644
index 5e9902a6..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/file-writer.js
+++ /dev/null
@@ -1,104 +0,0 @@
-module.exports = FileWriter
-
-var fs = require("graceful-fs")
- , mkdir = require("mkdirp")
- , Writer = require("./writer.js")
- , inherits = require("inherits")
- , EOF = {}
-
-inherits(FileWriter, Writer)
-
-function FileWriter (props) {
- var me = this
- if (!(me instanceof FileWriter)) throw new Error(
- "FileWriter must be called as constructor.")
-
- // should already be established as a File type
- if (props.type !== "File" || !props.File) {
- throw new Error("Non-file type "+ props.type)
- }
-
- me._buffer = []
- me._bytesWritten = 0
-
- Writer.call(this, props)
-}
-
-FileWriter.prototype._create = function () {
- var me = this
- if (me._stream) return
-
- var so = {}
- if (me.props.flags) so.flags = me.props.flags
- so.mode = Writer.filemode
- if (me._old && me._old.blksize) so.bufferSize = me._old.blksize
-
- me._stream = fs.createWriteStream(me._path, so)
-
- me._stream.on("open", function (fd) {
- // console.error("FW open", me._buffer, me._path)
- me.ready = true
- me._buffer.forEach(function (c) {
- if (c === EOF) me._stream.end()
- else me._stream.write(c)
- })
- me.emit("ready")
- // give this a kick just in case it needs it.
- me.emit("drain")
- })
-
- me._stream.on("drain", function () { me.emit("drain") })
-
- me._stream.on("close", function () {
- // console.error("\n\nFW Stream Close", me._path, me.size)
- me._finish()
- })
-}
-
-FileWriter.prototype.write = function (c) {
- var me = this
-
- me._bytesWritten += c.length
-
- if (!me.ready) {
- if (!Buffer.isBuffer(c) && typeof c !== 'string')
- throw new Error('invalid write data')
- me._buffer.push(c)
- return false
- }
-
- var ret = me._stream.write(c)
- // console.error("\t-- fw wrote, _stream says", ret, me._stream._queue.length)
-
- // allow 2 buffered writes, because otherwise there's just too
- // much stop and go bs.
- if (ret === false && me._stream._queue) {
- return me._stream._queue.length <= 2;
- } else {
- return ret;
- }
-}
-
-FileWriter.prototype.end = function (c) {
- var me = this
-
- if (c) me.write(c)
-
- if (!me.ready) {
- me._buffer.push(EOF)
- return false
- }
-
- return me._stream.end()
-}
-
-FileWriter.prototype._finish = function () {
- var me = this
- if (typeof me.size === "number" && me._bytesWritten != me.size) {
- me.error(
- "Did not get expected byte count.\n" +
- "expect: " + me.size + "\n" +
- "actual: " + me._bytesWritten)
- }
- Writer.prototype._finish.call(me)
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/get-type.js b/scripts/node_modules/unzip/node_modules/fstream/lib/get-type.js
deleted file mode 100644
index cd65c41d..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/get-type.js
+++ /dev/null
@@ -1,32 +0,0 @@
-module.exports = getType
-
-function getType (st) {
- var types =
- [ "Directory"
- , "File"
- , "SymbolicLink"
- , "Link" // special for hardlinks from tarballs
- , "BlockDevice"
- , "CharacterDevice"
- , "FIFO"
- , "Socket" ]
- , type
-
- if (st.type && -1 !== types.indexOf(st.type)) {
- st[st.type] = true
- return st.type
- }
-
- for (var i = 0, l = types.length; i < l; i ++) {
- type = types[i]
- var is = st[type] || st["is" + type]
- if (typeof is === "function") is = is.call(st)
- if (is) {
- st[type] = true
- st.type = type
- return type
- }
- }
-
- return null
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/link-reader.js b/scripts/node_modules/unzip/node_modules/fstream/lib/link-reader.js
deleted file mode 100644
index 7e7ab6ce..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/link-reader.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// Basically just a wrapper around an fs.readlink
-//
-// XXX: Enhance this to support the Link type, by keeping
-// a lookup table of {:}, so that hardlinks
-// can be preserved in tarballs.
-
-module.exports = LinkReader
-
-var fs = require("graceful-fs")
- , fstream = require("../fstream.js")
- , inherits = require("inherits")
- , mkdir = require("mkdirp")
- , Reader = require("./reader.js")
-
-inherits(LinkReader, Reader)
-
-function LinkReader (props) {
- var me = this
- if (!(me instanceof LinkReader)) throw new Error(
- "LinkReader must be called as constructor.")
-
- if (!((props.type === "Link" && props.Link) ||
- (props.type === "SymbolicLink" && props.SymbolicLink))) {
- throw new Error("Non-link type "+ props.type)
- }
-
- Reader.call(me, props)
-}
-
-// When piping a LinkReader into a LinkWriter, we have to
-// already have the linkpath property set, so that has to
-// happen *before* the "ready" event, which means we need to
-// override the _stat method.
-LinkReader.prototype._stat = function (currentStat) {
- var me = this
- fs.readlink(me._path, function (er, linkpath) {
- if (er) return me.error(er)
- me.linkpath = me.props.linkpath = linkpath
- me.emit("linkpath", linkpath)
- Reader.prototype._stat.call(me, currentStat)
- })
-}
-
-LinkReader.prototype._read = function () {
- var me = this
- if (me._paused) return
- // basically just a no-op, since we got all the info we need
- // from the _stat method
- if (!me._ended) {
- me.emit("end")
- me.emit("close")
- me._ended = true
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/link-writer.js b/scripts/node_modules/unzip/node_modules/fstream/lib/link-writer.js
deleted file mode 100644
index 5c8f1e70..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/link-writer.js
+++ /dev/null
@@ -1,95 +0,0 @@
-
-module.exports = LinkWriter
-
-var fs = require("graceful-fs")
- , Writer = require("./writer.js")
- , inherits = require("inherits")
- , path = require("path")
- , rimraf = require("rimraf")
-
-inherits(LinkWriter, Writer)
-
-function LinkWriter (props) {
- var me = this
- if (!(me instanceof LinkWriter)) throw new Error(
- "LinkWriter must be called as constructor.")
-
- // should already be established as a Link type
- if (!((props.type === "Link" && props.Link) ||
- (props.type === "SymbolicLink" && props.SymbolicLink))) {
- throw new Error("Non-link type "+ props.type)
- }
-
- if (props.linkpath === "") props.linkpath = "."
- if (!props.linkpath) {
- me.error("Need linkpath property to create " + props.type)
- }
-
- Writer.call(this, props)
-}
-
-LinkWriter.prototype._create = function () {
- // console.error(" LW _create")
- var me = this
- , hard = me.type === "Link" || process.platform === "win32"
- , link = hard ? "link" : "symlink"
- , lp = hard ? path.resolve(me.dirname, me.linkpath) : me.linkpath
-
- // can only change the link path by clobbering
- // For hard links, let's just assume that's always the case, since
- // there's no good way to read them if we don't already know.
- if (hard) return clobber(me, lp, link)
-
- fs.readlink(me._path, function (er, p) {
- // only skip creation if it's exactly the same link
- if (p && p === lp) return finish(me)
- clobber(me, lp, link)
- })
-}
-
-function clobber (me, lp, link) {
- rimraf(me._path, function (er) {
- if (er) return me.error(er)
- create(me, lp, link)
- })
-}
-
-function create (me, lp, link) {
- fs[link](lp, me._path, function (er) {
- // if this is a hard link, and we're in the process of writing out a
- // directory, it's very possible that the thing we're linking to
- // doesn't exist yet (especially if it was intended as a symlink),
- // so swallow ENOENT errors here and just soldier in.
- // Additionally, an EPERM or EACCES can happen on win32 if it's trying
- // to make a link to a directory. Again, just skip it.
- // A better solution would be to have fs.symlink be supported on
- // windows in some nice fashion.
- if (er) {
- if ((er.code === "ENOENT" ||
- er.code === "EACCES" ||
- er.code === "EPERM" ) && process.platform === "win32") {
- me.ready = true
- me.emit("ready")
- me.emit("end")
- me.emit("close")
- me.end = me._finish = function () {}
- } else return me.error(er)
- }
- finish(me)
- })
-}
-
-function finish (me) {
- me.ready = true
- me.emit("ready")
- if (me._ended && !me._finished) me._finish()
-}
-
-LinkWriter.prototype.end = function () {
- // console.error("LW finish in end")
- this._ended = true
- if (this.ready) {
- this._finished = true
- this._finish()
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/proxy-reader.js b/scripts/node_modules/unzip/node_modules/fstream/lib/proxy-reader.js
deleted file mode 100644
index a0ece34a..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/proxy-reader.js
+++ /dev/null
@@ -1,93 +0,0 @@
-// A reader for when we don't yet know what kind of thing
-// the thing is.
-
-module.exports = ProxyReader
-
-var Reader = require("./reader.js")
- , getType = require("./get-type.js")
- , inherits = require("inherits")
- , fs = require("graceful-fs")
-
-inherits(ProxyReader, Reader)
-
-function ProxyReader (props) {
- var me = this
- if (!(me instanceof ProxyReader)) throw new Error(
- "ProxyReader must be called as constructor.")
-
- me.props = props
- me._buffer = []
- me.ready = false
-
- Reader.call(me, props)
-}
-
-ProxyReader.prototype._stat = function () {
- var me = this
- , props = me.props
- // stat the thing to see what the proxy should be.
- , stat = props.follow ? "stat" : "lstat"
-
- fs[stat](props.path, function (er, current) {
- var type
- if (er || !current) {
- type = "File"
- } else {
- type = getType(current)
- }
-
- props[type] = true
- props.type = me.type = type
-
- me._old = current
- me._addProxy(Reader(props, current))
- })
-}
-
-ProxyReader.prototype._addProxy = function (proxy) {
- var me = this
- if (me._proxyTarget) {
- return me.error("proxy already set")
- }
-
- me._proxyTarget = proxy
- proxy._proxy = me
-
- ; [ "error"
- , "data"
- , "end"
- , "close"
- , "linkpath"
- , "entry"
- , "entryEnd"
- , "child"
- , "childEnd"
- , "warn"
- , "stat"
- ].forEach(function (ev) {
- // console.error("~~ proxy event", ev, me.path)
- proxy.on(ev, me.emit.bind(me, ev))
- })
-
- me.emit("proxy", proxy)
-
- proxy.on("ready", function () {
- // console.error("~~ proxy is ready!", me.path)
- me.ready = true
- me.emit("ready")
- })
-
- var calls = me._buffer
- me._buffer.length = 0
- calls.forEach(function (c) {
- proxy[c[0]].apply(proxy, c[1])
- })
-}
-
-ProxyReader.prototype.pause = function () {
- return this._proxyTarget ? this._proxyTarget.pause() : false
-}
-
-ProxyReader.prototype.resume = function () {
- return this._proxyTarget ? this._proxyTarget.resume() : false
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/proxy-writer.js b/scripts/node_modules/unzip/node_modules/fstream/lib/proxy-writer.js
deleted file mode 100644
index b0476633..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/proxy-writer.js
+++ /dev/null
@@ -1,109 +0,0 @@
-// A writer for when we don't know what kind of thing
-// the thing is. That is, it's not explicitly set,
-// so we're going to make it whatever the thing already
-// is, or "File"
-//
-// Until then, collect all events.
-
-module.exports = ProxyWriter
-
-var Writer = require("./writer.js")
- , getType = require("./get-type.js")
- , inherits = require("inherits")
- , collect = require("./collect.js")
- , fs = require("fs")
-
-inherits(ProxyWriter, Writer)
-
-function ProxyWriter (props) {
- var me = this
- if (!(me instanceof ProxyWriter)) throw new Error(
- "ProxyWriter must be called as constructor.")
-
- me.props = props
- me._needDrain = false
-
- Writer.call(me, props)
-}
-
-ProxyWriter.prototype._stat = function () {
- var me = this
- , props = me.props
- // stat the thing to see what the proxy should be.
- , stat = props.follow ? "stat" : "lstat"
-
- fs[stat](props.path, function (er, current) {
- var type
- if (er || !current) {
- type = "File"
- } else {
- type = getType(current)
- }
-
- props[type] = true
- props.type = me.type = type
-
- me._old = current
- me._addProxy(Writer(props, current))
- })
-}
-
-ProxyWriter.prototype._addProxy = function (proxy) {
- // console.error("~~ set proxy", this.path)
- var me = this
- if (me._proxy) {
- return me.error("proxy already set")
- }
-
- me._proxy = proxy
- ; [ "ready"
- , "error"
- , "close"
- , "pipe"
- , "drain"
- , "warn"
- ].forEach(function (ev) {
- proxy.on(ev, me.emit.bind(me, ev))
- })
-
- me.emit("proxy", proxy)
-
- var calls = me._buffer
- calls.forEach(function (c) {
- // console.error("~~ ~~ proxy buffered call", c[0], c[1])
- proxy[c[0]].apply(proxy, c[1])
- })
- me._buffer.length = 0
- if (me._needsDrain) me.emit("drain")
-}
-
-ProxyWriter.prototype.add = function (entry) {
- // console.error("~~ proxy add")
- collect(entry)
-
- if (!this._proxy) {
- this._buffer.push(["add", [entry]])
- this._needDrain = true
- return false
- }
- return this._proxy.add(entry)
-}
-
-ProxyWriter.prototype.write = function (c) {
- // console.error("~~ proxy write")
- if (!this._proxy) {
- this._buffer.push(["write", [c]])
- this._needDrain = true
- return false
- }
- return this._proxy.write(c)
-}
-
-ProxyWriter.prototype.end = function (c) {
- // console.error("~~ proxy end")
- if (!this._proxy) {
- this._buffer.push(["end", [c]])
- return false
- }
- return this._proxy.end(c)
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/reader.js b/scripts/node_modules/unzip/node_modules/fstream/lib/reader.js
deleted file mode 100644
index 0edb794d..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/reader.js
+++ /dev/null
@@ -1,262 +0,0 @@
-
-module.exports = Reader
-
-var fs = require("graceful-fs")
- , Stream = require("stream").Stream
- , inherits = require("inherits")
- , path = require("path")
- , getType = require("./get-type.js")
- , hardLinks = Reader.hardLinks = {}
- , Abstract = require("./abstract.js")
-
-// Must do this *before* loading the child classes
-inherits(Reader, Abstract)
-
-var DirReader = require("./dir-reader.js")
- , FileReader = require("./file-reader.js")
- , LinkReader = require("./link-reader.js")
- , SocketReader = require("./socket-reader.js")
- , ProxyReader = require("./proxy-reader.js")
-
-function Reader (props, currentStat) {
- var me = this
- if (!(me instanceof Reader)) return new Reader(props, currentStat)
-
- if (typeof props === "string") {
- props = { path: props }
- }
-
- if (!props.path) {
- me.error("Must provide a path", null, true)
- }
-
- // polymorphism.
- // call fstream.Reader(dir) to get a DirReader object, etc.
- // Note that, unlike in the Writer case, ProxyReader is going
- // to be the *normal* state of affairs, since we rarely know
- // the type of a file prior to reading it.
-
-
- var type
- , ClassType
-
- if (props.type && typeof props.type === "function") {
- type = props.type
- ClassType = type
- } else {
- type = getType(props)
- ClassType = Reader
- }
-
- if (currentStat && !type) {
- type = getType(currentStat)
- props[type] = true
- props.type = type
- }
-
- switch (type) {
- case "Directory":
- ClassType = DirReader
- break
-
- case "Link":
- // XXX hard links are just files.
- // However, it would be good to keep track of files' dev+inode
- // and nlink values, and create a HardLinkReader that emits
- // a linkpath value of the original copy, so that the tar
- // writer can preserve them.
- // ClassType = HardLinkReader
- // break
-
- case "File":
- ClassType = FileReader
- break
-
- case "SymbolicLink":
- ClassType = LinkReader
- break
-
- case "Socket":
- ClassType = SocketReader
- break
-
- case null:
- ClassType = ProxyReader
- break
- }
-
- if (!(me instanceof ClassType)) {
- return new ClassType(props)
- }
-
- Abstract.call(me)
-
- me.readable = true
- me.writable = false
-
- me.type = type
- me.props = props
- me.depth = props.depth = props.depth || 0
- me.parent = props.parent || null
- me.root = props.root || (props.parent && props.parent.root) || me
-
- me._path = me.path = path.resolve(props.path)
- if (process.platform === "win32") {
- me.path = me._path = me.path.replace(/\?/g, "_")
- if (me._path.length >= 260) {
- // how DOES one create files on the moon?
- // if the path has spaces in it, then UNC will fail.
- me._swallowErrors = true
- //if (me._path.indexOf(" ") === -1) {
- me._path = "\\\\?\\" + me.path.replace(/\//g, "\\")
- //}
- }
- }
- me.basename = props.basename = path.basename(me.path)
- me.dirname = props.dirname = path.dirname(me.path)
-
- // these have served their purpose, and are now just noisy clutter
- props.parent = props.root = null
-
- // console.error("\n\n\n%s setting size to", props.path, props.size)
- me.size = props.size
- me.filter = typeof props.filter === "function" ? props.filter : null
- if (props.sort === "alpha") props.sort = alphasort
-
- // start the ball rolling.
- // this will stat the thing, and then call me._read()
- // to start reading whatever it is.
- // console.error("calling stat", props.path, currentStat)
- me._stat(currentStat)
-}
-
-function alphasort (a, b) {
- return a === b ? 0
- : a.toLowerCase() > b.toLowerCase() ? 1
- : a.toLowerCase() < b.toLowerCase() ? -1
- : a > b ? 1
- : -1
-}
-
-Reader.prototype._stat = function (currentStat) {
- var me = this
- , props = me.props
- , stat = props.follow ? "stat" : "lstat"
- // console.error("Reader._stat", me._path, currentStat)
- if (currentStat) process.nextTick(statCb.bind(null, null, currentStat))
- else fs[stat](me._path, statCb)
-
-
- function statCb (er, props_) {
- // console.error("Reader._stat, statCb", me._path, props_, props_.nlink)
- if (er) return me.error(er)
-
- Object.keys(props_).forEach(function (k) {
- props[k] = props_[k]
- })
-
- // if it's not the expected size, then abort here.
- if (undefined !== me.size && props.size !== me.size) {
- return me.error("incorrect size")
- }
- me.size = props.size
-
- var type = getType(props)
- var handleHardlinks = props.hardlinks !== false
-
- // special little thing for handling hardlinks.
- if (handleHardlinks && type !== "Directory" && props.nlink && props.nlink > 1) {
- var k = props.dev + ":" + props.ino
- // console.error("Reader has nlink", me._path, k)
- if (hardLinks[k] === me._path || !hardLinks[k]) hardLinks[k] = me._path
- else {
- // switch into hardlink mode.
- type = me.type = me.props.type = "Link"
- me.Link = me.props.Link = true
- me.linkpath = me.props.linkpath = hardLinks[k]
- // console.error("Hardlink detected, switching mode", me._path, me.linkpath)
- // Setting __proto__ would arguably be the "correct"
- // approach here, but that just seems too wrong.
- me._stat = me._read = LinkReader.prototype._read
- }
- }
-
- if (me.type && me.type !== type) {
- me.error("Unexpected type: " + type)
- }
-
- // if the filter doesn't pass, then just skip over this one.
- // still have to emit end so that dir-walking can move on.
- if (me.filter) {
- var who = me._proxy || me
- // special handling for ProxyReaders
- if (!me.filter.call(who, who, props)) {
- if (!me._disowned) {
- me.abort()
- me.emit("end")
- me.emit("close")
- }
- return
- }
- }
-
- // last chance to abort or disown before the flow starts!
- var events = ["_stat", "stat", "ready"]
- var e = 0
- ;(function go () {
- if (me._aborted) {
- me.emit("end")
- me.emit("close")
- return
- }
-
- if (me._paused && me.type !== "Directory") {
- me.once("resume", go)
- return
- }
-
- var ev = events[e ++]
- if (!ev) {
- return me._read()
- }
- me.emit(ev, props)
- go()
- })()
- }
-}
-
-Reader.prototype.pipe = function (dest, opts) {
- var me = this
- if (typeof dest.add === "function") {
- // piping to a multi-compatible, and we've got directory entries.
- me.on("entry", function (entry) {
- var ret = dest.add(entry)
- if (false === ret) {
- me.pause()
- }
- })
- }
-
- // console.error("R Pipe apply Stream Pipe")
- return Stream.prototype.pipe.apply(this, arguments)
-}
-
-Reader.prototype.pause = function (who) {
- this._paused = true
- who = who || this
- this.emit("pause", who)
- if (this._stream) this._stream.pause(who)
-}
-
-Reader.prototype.resume = function (who) {
- this._paused = false
- who = who || this
- this.emit("resume", who)
- if (this._stream) this._stream.resume(who)
- this._read()
-}
-
-Reader.prototype._read = function () {
- this.error("Cannot read unknown type: "+this.type)
-}
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/socket-reader.js b/scripts/node_modules/unzip/node_modules/fstream/lib/socket-reader.js
deleted file mode 100644
index e89c1731..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/socket-reader.js
+++ /dev/null
@@ -1,38 +0,0 @@
-// Just get the stats, and then don't do anything.
-// You can't really "read" from a socket. You "connect" to it.
-// Mostly, this is here so that reading a dir with a socket in it
-// doesn't blow up.
-
-module.exports = SocketReader
-
-var fs = require("graceful-fs")
- , fstream = require("../fstream.js")
- , inherits = require("inherits")
- , mkdir = require("mkdirp")
- , Reader = require("./reader.js")
-
-inherits(SocketReader, Reader)
-
-function SocketReader (props) {
- var me = this
- if (!(me instanceof SocketReader)) throw new Error(
- "SocketReader must be called as constructor.")
-
- if (!(props.type === "Socket" && props.Socket)) {
- throw new Error("Non-socket type "+ props.type)
- }
-
- Reader.call(me, props)
-}
-
-SocketReader.prototype._read = function () {
- var me = this
- if (me._paused) return
- // basically just a no-op, since we got all the info we have
- // from the _stat method
- if (!me._ended) {
- me.emit("end")
- me.emit("close")
- me._ended = true
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/lib/writer.js b/scripts/node_modules/unzip/node_modules/fstream/lib/writer.js
deleted file mode 100644
index 5599fb22..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/lib/writer.js
+++ /dev/null
@@ -1,389 +0,0 @@
-
-module.exports = Writer
-
-var fs = require("graceful-fs")
- , inherits = require("inherits")
- , rimraf = require("rimraf")
- , mkdir = require("mkdirp")
- , path = require("path")
- , umask = process.platform === "win32" ? 0 : process.umask()
- , getType = require("./get-type.js")
- , Abstract = require("./abstract.js")
-
-// Must do this *before* loading the child classes
-inherits(Writer, Abstract)
-
-Writer.dirmode = 0777 & (~umask)
-Writer.filemode = 0666 & (~umask)
-
-var DirWriter = require("./dir-writer.js")
- , LinkWriter = require("./link-writer.js")
- , FileWriter = require("./file-writer.js")
- , ProxyWriter = require("./proxy-writer.js")
-
-// props is the desired state. current is optionally the current stat,
-// provided here so that subclasses can avoid statting the target
-// more than necessary.
-function Writer (props, current) {
- var me = this
-
- if (typeof props === "string") {
- props = { path: props }
- }
-
- if (!props.path) me.error("Must provide a path", null, true)
-
- // polymorphism.
- // call fstream.Writer(dir) to get a DirWriter object, etc.
- var type = getType(props)
- , ClassType = Writer
-
- switch (type) {
- case "Directory":
- ClassType = DirWriter
- break
- case "File":
- ClassType = FileWriter
- break
- case "Link":
- case "SymbolicLink":
- ClassType = LinkWriter
- break
- case null:
- // Don't know yet what type to create, so we wrap in a proxy.
- ClassType = ProxyWriter
- break
- }
-
- if (!(me instanceof ClassType)) return new ClassType(props)
-
- // now get down to business.
-
- Abstract.call(me)
-
- // props is what we want to set.
- // set some convenience properties as well.
- me.type = props.type
- me.props = props
- me.depth = props.depth || 0
- me.clobber = false === props.clobber ? props.clobber : true
- me.parent = props.parent || null
- me.root = props.root || (props.parent && props.parent.root) || me
-
- me._path = me.path = path.resolve(props.path)
- if (process.platform === "win32") {
- me.path = me._path = me.path.replace(/\?/g, "_")
- if (me._path.length >= 260) {
- me._swallowErrors = true
- me._path = "\\\\?\\" + me.path.replace(/\//g, "\\")
- }
- }
- me.basename = path.basename(props.path)
- me.dirname = path.dirname(props.path)
- me.linkpath = props.linkpath || null
-
- props.parent = props.root = null
-
- // console.error("\n\n\n%s setting size to", props.path, props.size)
- me.size = props.size
-
- if (typeof props.mode === "string") {
- props.mode = parseInt(props.mode, 8)
- }
-
- me.readable = false
- me.writable = true
-
- // buffer until ready, or while handling another entry
- me._buffer = []
- me.ready = false
-
- me.filter = typeof props.filter === "function" ? props.filter: null
-
- // start the ball rolling.
- // this checks what's there already, and then calls
- // me._create() to call the impl-specific creation stuff.
- me._stat(current)
-}
-
-// Calling this means that it's something we can't create.
-// Just assert that it's already there, otherwise raise a warning.
-Writer.prototype._create = function () {
- var me = this
- fs[me.props.follow ? "stat" : "lstat"](me._path, function (er, current) {
- if (er) {
- return me.warn("Cannot create " + me._path + "\n" +
- "Unsupported type: "+me.type, "ENOTSUP")
- }
- me._finish()
- })
-}
-
-Writer.prototype._stat = function (current) {
- var me = this
- , props = me.props
- , stat = props.follow ? "stat" : "lstat"
- , who = me._proxy || me
-
- if (current) statCb(null, current)
- else fs[stat](me._path, statCb)
-
- function statCb (er, current) {
- if (me.filter && !me.filter.call(who, who, current)) {
- me._aborted = true
- me.emit("end")
- me.emit("close")
- return
- }
-
- // if it's not there, great. We'll just create it.
- // if it is there, then we'll need to change whatever differs
- if (er || !current) {
- return create(me)
- }
-
- me._old = current
- var currentType = getType(current)
-
- // if it's a type change, then we need to clobber or error.
- // if it's not a type change, then let the impl take care of it.
- if (currentType !== me.type) {
- return rimraf(me._path, function (er) {
- if (er) return me.error(er)
- me._old = null
- create(me)
- })
- }
-
- // otherwise, just handle in the app-specific way
- // this creates a fs.WriteStream, or mkdir's, or whatever
- create(me)
- }
-}
-
-function create (me) {
- // console.error("W create", me._path, Writer.dirmode)
-
- // XXX Need to clobber non-dirs that are in the way,
- // unless { clobber: false } in the props.
- mkdir(path.dirname(me._path), Writer.dirmode, function (er, made) {
- // console.error("W created", path.dirname(me._path), er)
- if (er) return me.error(er)
-
- // later on, we have to set the mode and owner for these
- me._madeDir = made
- return me._create()
- })
-}
-
-function endChmod (me, want, current, path, cb) {
- var wantMode = want.mode
- , chmod = want.follow || me.type !== "SymbolicLink"
- ? "chmod" : "lchmod"
-
- if (!fs[chmod]) return cb()
- if (typeof wantMode !== "number") return cb()
-
- var curMode = current.mode & 0777
- wantMode = wantMode & 0777
- if (wantMode === curMode) return cb()
-
- fs[chmod](path, wantMode, cb)
-}
-
-
-function endChown (me, want, current, path, cb) {
- // Don't even try it unless root. Too easy to EPERM.
- if (process.platform === "win32") return cb()
- if (!process.getuid || !process.getuid() === 0) return cb()
- if (typeof want.uid !== "number" &&
- typeof want.gid !== "number" ) return cb()
-
- if (current.uid === want.uid &&
- current.gid === want.gid) return cb()
-
- var chown = (me.props.follow || me.type !== "SymbolicLink")
- ? "chown" : "lchown"
- if (!fs[chown]) return cb()
-
- if (typeof want.uid !== "number") want.uid = current.uid
- if (typeof want.gid !== "number") want.gid = current.gid
-
- fs[chown](path, want.uid, want.gid, cb)
-}
-
-function endUtimes (me, want, current, path, cb) {
- if (!fs.utimes || process.platform === "win32") return cb()
-
- var utimes = (want.follow || me.type !== "SymbolicLink")
- ? "utimes" : "lutimes"
-
- if (utimes === "lutimes" && !fs[utimes]) {
- utimes = "utimes"
- }
-
- if (!fs[utimes]) return cb()
-
- var curA = current.atime
- , curM = current.mtime
- , meA = want.atime
- , meM = want.mtime
-
- if (meA === undefined) meA = curA
- if (meM === undefined) meM = curM
-
- if (!isDate(meA)) meA = new Date(meA)
- if (!isDate(meM)) meA = new Date(meM)
-
- if (meA.getTime() === curA.getTime() &&
- meM.getTime() === curM.getTime()) return cb()
-
- fs[utimes](path, meA, meM, cb)
-}
-
-
-// XXX This function is beastly. Break it up!
-Writer.prototype._finish = function () {
- var me = this
-
- // console.error(" W Finish", me._path, me.size)
-
- // set up all the things.
- // At this point, we're already done writing whatever we've gotta write,
- // adding files to the dir, etc.
- var todo = 0
- var errState = null
- var done = false
-
- if (me._old) {
- // the times will almost *certainly* have changed.
- // adds the utimes syscall, but remove another stat.
- me._old.atime = new Date(0)
- me._old.mtime = new Date(0)
- // console.error(" W Finish Stale Stat", me._path, me.size)
- setProps(me._old)
- } else {
- var stat = me.props.follow ? "stat" : "lstat"
- // console.error(" W Finish Stating", me._path, me.size)
- fs[stat](me._path, function (er, current) {
- // console.error(" W Finish Stated", me._path, me.size, current)
- if (er) {
- // if we're in the process of writing out a
- // directory, it's very possible that the thing we're linking to
- // doesn't exist yet (especially if it was intended as a symlink),
- // so swallow ENOENT errors here and just soldier on.
- if (er.code === "ENOENT" &&
- (me.type === "Link" || me.type === "SymbolicLink") &&
- process.platform === "win32") {
- me.ready = true
- me.emit("ready")
- me.emit("end")
- me.emit("close")
- me.end = me._finish = function () {}
- return
- } else return me.error(er)
- }
- setProps(me._old = current)
- })
- }
-
- return
-
- function setProps (current) {
- todo += 3
- endChmod(me, me.props, current, me._path, next("chmod"))
- endChown(me, me.props, current, me._path, next("chown"))
- endUtimes(me, me.props, current, me._path, next("utimes"))
- }
-
- function next (what) {
- return function (er) {
- // console.error(" W Finish", what, todo)
- if (errState) return
- if (er) {
- er.fstream_finish_call = what
- return me.error(errState = er)
- }
- if (--todo > 0) return
- if (done) return
- done = true
-
- // we may still need to set the mode/etc. on some parent dirs
- // that were created previously. delay end/close until then.
- if (!me._madeDir) return end()
- else endMadeDir(me, me._path, end)
-
- function end (er) {
- if (er) {
- er.fstream_finish_call = "setupMadeDir"
- return me.error(er)
- }
- // all the props have been set, so we're completely done.
- me.emit("end")
- me.emit("close")
- }
- }
- }
-}
-
-function endMadeDir (me, p, cb) {
- var made = me._madeDir
- // everything *between* made and path.dirname(me._path)
- // needs to be set up. Note that this may just be one dir.
- var d = path.dirname(p)
-
- endMadeDir_(me, d, function (er) {
- if (er) return cb(er)
- if (d === made) {
- return cb()
- }
- endMadeDir(me, d, cb)
- })
-}
-
-function endMadeDir_ (me, p, cb) {
- var dirProps = {}
- Object.keys(me.props).forEach(function (k) {
- dirProps[k] = me.props[k]
-
- // only make non-readable dirs if explicitly requested.
- if (k === "mode" && me.type !== "Directory") {
- dirProps[k] = dirProps[k] | 0111
- }
- })
-
- var todo = 3
- , errState = null
- fs.stat(p, function (er, current) {
- if (er) return cb(errState = er)
- endChmod(me, dirProps, current, p, next)
- endChown(me, dirProps, current, p, next)
- endUtimes(me, dirProps, current, p, next)
- })
-
- function next (er) {
- if (errState) return
- if (er) return cb(errState = er)
- if (-- todo === 0) return cb()
- }
-}
-
-Writer.prototype.pipe = function () {
- this.error("Can't pipe from writable stream")
-}
-
-Writer.prototype.add = function () {
- this.error("Cannot add to non-Directory type")
-}
-
-Writer.prototype.write = function () {
- return true
-}
-
-function objectToString (d) {
- return Object.prototype.toString.call(d)
-}
-
-function isDate(d) {
- return typeof d === 'object' && objectToString(d) === '[object Date]';
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/.bin/mkdirp b/scripts/node_modules/unzip/node_modules/fstream/node_modules/.bin/mkdirp
deleted file mode 120000
index 017896ce..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/.bin/mkdirp
+++ /dev/null
@@ -1 +0,0 @@
-../mkdirp/bin/cmd.js
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/.bin/rimraf b/scripts/node_modules/unzip/node_modules/fstream/node_modules/.bin/rimraf
deleted file mode 120000
index 4cd49a49..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/.bin/rimraf
+++ /dev/null
@@ -1 +0,0 @@
-../rimraf/bin.js
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/.npmignore b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/.npmignore
deleted file mode 100644
index c2658d7d..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules/
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/LICENSE
deleted file mode 100644
index 19129e31..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/README.md
deleted file mode 100644
index 13a2e860..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# graceful-fs
-
-graceful-fs functions as a drop-in replacement for the fs module,
-making various improvements.
-
-The improvements are meant to normalize behavior across different
-platforms and environments, and to make filesystem access more
-resilient to errors.
-
-## Improvements over [fs module](http://api.nodejs.org/fs.html)
-
-graceful-fs:
-
-* Queues up `open` and `readdir` calls, and retries them once
- something closes if there is an EMFILE error from too many file
- descriptors.
-* fixes `lchmod` for Node versions prior to 0.6.2.
-* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
-* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
- `lchown` if the user isn't root.
-* makes `lchmod` and `lchown` become noops, if not available.
-* retries reading a file if `read` results in EAGAIN error.
-
-On Windows, it retries renaming a file for up to one second if `EACCESS`
-or `EPERM` error occurs, likely because antivirus software has locked
-the directory.
-
-## USAGE
-
-```javascript
-// use just like fs
-var fs = require('graceful-fs')
-
-// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
-```
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/fs.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/fs.js
deleted file mode 100644
index 64ad9802..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/fs.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// eeeeeevvvvviiiiiiillllll
-// more evil than monkey-patching the native builtin?
-// Not sure.
-
-var mod = require("module")
-var pre = '(function (exports, require, module, __filename, __dirname) { '
-var post = '});'
-var src = pre + process.binding('natives').fs + post
-var vm = require('vm')
-var fn = vm.runInThisContext(src)
-fn(exports, require, module, __filename, __dirname)
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js
deleted file mode 100644
index fb206b83..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/graceful-fs.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Monkey-patching the fs module.
-// It's ugly, but there is simply no other way to do this.
-var fs = module.exports = require('./fs.js')
-
-var assert = require('assert')
-
-// fix up some busted stuff, mostly on windows and old nodes
-require('./polyfills.js')
-
-var util = require('util')
-
-function noop () {}
-
-var debug = noop
-if (util.debuglog)
- debug = util.debuglog('gfs')
-else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
- debug = function() {
- var m = util.format.apply(util, arguments)
- m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
- console.error(m)
- }
-
-if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
- process.on('exit', function() {
- debug('fds', fds)
- debug(queue)
- assert.equal(queue.length, 0)
- })
-}
-
-
-var originalOpen = fs.open
-fs.open = open
-
-function open(path, flags, mode, cb) {
- if (typeof mode === "function") cb = mode, mode = null
- if (typeof cb !== "function") cb = noop
- new OpenReq(path, flags, mode, cb)
-}
-
-function OpenReq(path, flags, mode, cb) {
- this.path = path
- this.flags = flags
- this.mode = mode
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(OpenReq, Req)
-
-OpenReq.prototype.process = function() {
- originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
-}
-
-var fds = {}
-OpenReq.prototype.done = function(er, fd) {
- debug('open done', er, fd)
- if (fd)
- fds['fd' + fd] = this.path
- Req.prototype.done.call(this, er, fd)
-}
-
-
-var originalReaddir = fs.readdir
-fs.readdir = readdir
-
-function readdir(path, cb) {
- if (typeof cb !== "function") cb = noop
- new ReaddirReq(path, cb)
-}
-
-function ReaddirReq(path, cb) {
- this.path = path
- this.cb = cb
- Req.call(this)
-}
-
-util.inherits(ReaddirReq, Req)
-
-ReaddirReq.prototype.process = function() {
- originalReaddir.call(fs, this.path, this.done)
-}
-
-ReaddirReq.prototype.done = function(er, files) {
- if (files && files.sort)
- files = files.sort()
- Req.prototype.done.call(this, er, files)
- onclose()
-}
-
-
-var originalClose = fs.close
-fs.close = close
-
-function close (fd, cb) {
- debug('close', fd)
- if (typeof cb !== "function") cb = noop
- delete fds['fd' + fd]
- originalClose.call(fs, fd, function(er) {
- onclose()
- cb(er)
- })
-}
-
-
-var originalCloseSync = fs.closeSync
-fs.closeSync = closeSync
-
-function closeSync (fd) {
- try {
- return originalCloseSync(fd)
- } finally {
- onclose()
- }
-}
-
-
-// Req class
-function Req () {
- // start processing
- this.done = this.done.bind(this)
- this.failures = 0
- this.process()
-}
-
-Req.prototype.done = function (er, result) {
- var tryAgain = false
- if (er) {
- var code = er.code
- var tryAgain = code === "EMFILE" || code === "ENFILE"
- if (process.platform === "win32")
- tryAgain = tryAgain || code === "OK"
- }
-
- if (tryAgain) {
- this.failures ++
- enqueue(this)
- } else {
- var cb = this.cb
- cb(er, result)
- }
-}
-
-var queue = []
-
-function enqueue(req) {
- queue.push(req)
- debug('enqueue %d %s', queue.length, req.constructor.name, req)
-}
-
-function onclose() {
- var req = queue.shift()
- if (req) {
- debug('process', req.constructor.name, req)
- req.process()
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/package.json
deleted file mode 100644
index e310a7ba..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/package.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me"
- },
- "name": "graceful-fs",
- "description": "A drop-in replacement for fs, making various improvements.",
- "version": "3.0.8",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-graceful-fs.git"
- },
- "main": "graceful-fs.js",
- "engines": {
- "node": ">=0.4.0"
- },
- "directories": {
- "test": "test"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "keywords": [
- "fs",
- "module",
- "reading",
- "retry",
- "retries",
- "queue",
- "error",
- "errors",
- "handling",
- "EMFILE",
- "EAGAIN",
- "EINVAL",
- "EPERM",
- "EACCESS"
- ],
- "license": "ISC",
- "devDependencies": {
- "mkdirp": "^0.5.0",
- "rimraf": "^2.2.8",
- "tap": "^1.2.0"
- },
- "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8",
- "bugs": {
- "url": "https://github.com/isaacs/node-graceful-fs/issues"
- },
- "homepage": "https://github.com/isaacs/node-graceful-fs#readme",
- "_id": "graceful-fs@3.0.8",
- "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "_from": "graceful-fs@>=3.0.2 <3.1.0",
- "_npmVersion": "2.10.1",
- "_nodeVersion": "2.0.1",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22",
- "tarball": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/polyfills.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/polyfills.js
deleted file mode 100644
index 42705391..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/polyfills.js
+++ /dev/null
@@ -1,255 +0,0 @@
-var fs = require('./fs.js')
-var constants = require('constants')
-
-var origCwd = process.cwd
-var cwd = null
-process.cwd = function() {
- if (!cwd)
- cwd = origCwd.call(process)
- return cwd
-}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
-}
-
-// (re-)implement some things that are known busted or missing.
-
-// lchmod, broken prior to 0.6.2
-// back-port the fix here.
-if (constants.hasOwnProperty('O_SYMLINK') &&
- process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
- fs.lchmod = function (path, mode, callback) {
- callback = callback || noop
- fs.open( path
- , constants.O_WRONLY | constants.O_SYMLINK
- , mode
- , function (err, fd) {
- if (err) {
- callback(err)
- return
- }
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- fs.fchmod(fd, mode, function (err) {
- fs.close(fd, function(err2) {
- callback(err || err2)
- })
- })
- })
- }
-
- fs.lchmodSync = function (path, mode) {
- var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
-
- // prefer to return the chmod error, if one occurs,
- // but still try to close, and report closing errors if they occur.
- var err, err2
- try {
- var ret = fs.fchmodSync(fd, mode)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-}
-
-
-// lutimes implementation, or no-op
-if (!fs.lutimes) {
- if (constants.hasOwnProperty("O_SYMLINK")) {
- fs.lutimes = function (path, at, mt, cb) {
- fs.open(path, constants.O_SYMLINK, function (er, fd) {
- cb = cb || noop
- if (er) return cb(er)
- fs.futimes(fd, at, mt, function (er) {
- fs.close(fd, function (er2) {
- return cb(er || er2)
- })
- })
- })
- }
-
- fs.lutimesSync = function (path, at, mt) {
- var fd = fs.openSync(path, constants.O_SYMLINK)
- , err
- , err2
- , ret
-
- try {
- var ret = fs.futimesSync(fd, at, mt)
- } catch (er) {
- err = er
- }
- try {
- fs.closeSync(fd)
- } catch (er) {
- err2 = er
- }
- if (err || err2) throw (err || err2)
- return ret
- }
-
- } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
- // maybe utimensat will be bound soonish?
- fs.lutimes = function (path, at, mt, cb) {
- fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
- }
-
- fs.lutimesSync = function (path, at, mt) {
- return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
- }
-
- } else {
- fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
- fs.lutimesSync = function () {}
- }
-}
-
-
-// https://github.com/isaacs/node-graceful-fs/issues/4
-// Chown should not fail on einval or eperm if non-root.
-// It should not fail on enosys ever, as this just indicates
-// that a fs doesn't support the intended operation.
-
-fs.chown = chownFix(fs.chown)
-fs.fchown = chownFix(fs.fchown)
-fs.lchown = chownFix(fs.lchown)
-
-fs.chmod = chownFix(fs.chmod)
-fs.fchmod = chownFix(fs.fchmod)
-fs.lchmod = chownFix(fs.lchmod)
-
-fs.chownSync = chownFixSync(fs.chownSync)
-fs.fchownSync = chownFixSync(fs.fchownSync)
-fs.lchownSync = chownFixSync(fs.lchownSync)
-
-fs.chmodSync = chownFix(fs.chmodSync)
-fs.fchmodSync = chownFix(fs.fchmodSync)
-fs.lchmodSync = chownFix(fs.lchmodSync)
-
-function chownFix (orig) {
- if (!orig) return orig
- return function (target, uid, gid, cb) {
- return orig.call(fs, target, uid, gid, function (er, res) {
- if (chownErOk(er)) er = null
- cb(er, res)
- })
- }
-}
-
-function chownFixSync (orig) {
- if (!orig) return orig
- return function (target, uid, gid) {
- try {
- return orig.call(fs, target, uid, gid)
- } catch (er) {
- if (!chownErOk(er)) throw er
- }
- }
-}
-
-// ENOSYS means that the fs doesn't support the op. Just ignore
-// that, because it doesn't matter.
-//
-// if there's no getuid, or if getuid() is something other
-// than 0, and the error is EINVAL or EPERM, then just ignore
-// it.
-//
-// This specific case is a silent failure in cp, install, tar,
-// and most other unix tools that manage permissions.
-//
-// When running as root, or if other types of errors are
-// encountered, then it's strict.
-function chownErOk (er) {
- if (!er)
- return true
-
- if (er.code === "ENOSYS")
- return true
-
- var nonroot = !process.getuid || process.getuid() !== 0
- if (nonroot) {
- if (er.code === "EINVAL" || er.code === "EPERM")
- return true
- }
-
- return false
-}
-
-
-// if lchmod/lchown do not exist, then make them no-ops
-if (!fs.lchmod) {
- fs.lchmod = function (path, mode, cb) {
- process.nextTick(cb)
- }
- fs.lchmodSync = function () {}
-}
-if (!fs.lchown) {
- fs.lchown = function (path, uid, gid, cb) {
- process.nextTick(cb)
- }
- fs.lchownSync = function () {}
-}
-
-
-
-// on Windows, A/V software can lock the directory, causing this
-// to fail with an EACCES or EPERM if the directory contains newly
-// created files. Try again on failure, for up to 1 second.
-if (process.platform === "win32") {
- var rename_ = fs.rename
- fs.rename = function rename (from, to, cb) {
- var start = Date.now()
- rename_(from, to, function CB (er) {
- if (er
- && (er.code === "EACCES" || er.code === "EPERM")
- && Date.now() - start < 1000) {
- return rename_(from, to, CB)
- }
- if(cb) cb(er)
- })
- }
-}
-
-
-// if read() returns EAGAIN, then just try it again.
-var read = fs.read
-fs.read = function (fd, buffer, offset, length, position, callback_) {
- var callback
- if (callback_ && typeof callback_ === 'function') {
- var eagCounter = 0
- callback = function (er, _, __) {
- if (er && er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- return read.call(fs, fd, buffer, offset, length, position, callback)
- }
- callback_.apply(this, arguments)
- }
- }
- return read.call(fs, fd, buffer, offset, length, position, callback)
-}
-
-var readSync = fs.readSync
-fs.readSync = function (fd, buffer, offset, length, position) {
- var eagCounter = 0
- while (true) {
- try {
- return readSync.call(fs, fd, buffer, offset, length, position)
- } catch (er) {
- if (er.code === 'EAGAIN' && eagCounter < 10) {
- eagCounter ++
- continue
- }
- throw er
- }
- }
-}
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/max-open.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/max-open.js
deleted file mode 100644
index a6b9ba43..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/max-open.js
+++ /dev/null
@@ -1,69 +0,0 @@
-var test = require('tap').test
-var fs = require('../')
-
-test('open lots of stuff', function (t) {
- // Get around EBADF from libuv by making sure that stderr is opened
- // Otherwise Darwin will refuse to give us a FD for stderr!
- process.stderr.write('')
-
- // How many parallel open()'s to do
- var n = 1024
- var opens = 0
- var fds = []
- var going = true
- var closing = false
- var doneCalled = 0
-
- for (var i = 0; i < n; i++) {
- go()
- }
-
- function go() {
- opens++
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fds.push(fd)
- if (going) go()
- })
- }
-
- // should hit ulimit pretty fast
- setTimeout(function () {
- going = false
- t.equal(opens - fds.length, n)
- done()
- }, 100)
-
-
- function done () {
- if (closing) return
- doneCalled++
-
- if (fds.length === 0) {
- console.error('done called %d times', doneCalled)
- // First because of the timeout
- // Then to close the fd's opened afterwards
- // Then this time, to complete.
- // Might take multiple passes, depending on CPU speed
- // and ulimit, but at least 3 in every case.
- t.ok(doneCalled >= 2)
- return t.end()
- }
-
- closing = true
- setTimeout(function () {
- // console.error('do closing again')
- closing = false
- done()
- }, 100)
-
- // console.error('closing time')
- var closes = fds.slice(0)
- fds.length = 0
- closes.forEach(function (fd) {
- fs.close(fd, function (er) {
- if (er) throw er
- })
- })
- }
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/open.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/open.js
deleted file mode 100644
index 85732f23..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/open.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var test = require('tap').test
-var fs = require('../graceful-fs.js')
-
-test('graceful fs is monkeypatched fs', function (t) {
- t.equal(fs, require('../fs.js'))
- t.end()
-})
-
-test('open an existing file works', function (t) {
- var fd = fs.openSync(__filename, 'r')
- fs.closeSync(fd)
- fs.open(__filename, 'r', function (er, fd) {
- if (er) throw er
- fs.close(fd, function (er) {
- if (er) throw er
- t.pass('works')
- t.end()
- })
- })
-})
-
-test('open a non-existing file throws', function (t) {
- var er
- try {
- var fd = fs.openSync('this file does not exist', 'r')
- } catch (x) {
- er = x
- }
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
-
- fs.open('neither does this file', 'r', function (er, fd) {
- t.ok(er, 'should throw')
- t.notOk(fd, 'should not get an fd')
- t.equal(er.code, 'ENOENT')
- t.end()
- })
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js
deleted file mode 100644
index cb63a684..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/readdir-sort.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require("tap").test
-var fs = require("../fs.js")
-
-var readdir = fs.readdir
-fs.readdir = function(path, cb) {
- process.nextTick(function() {
- cb(null, ["b", "z", "a"])
- })
-}
-
-var g = require("../")
-
-test("readdir reorder", function (t) {
- g.readdir("whatevers", function (er, files) {
- if (er)
- throw er
- t.same(files, [ "a", "b", "z" ])
- t.end()
- })
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js
deleted file mode 100644
index 21e4c26b..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/graceful-fs/test/write-then-read.js
+++ /dev/null
@@ -1,47 +0,0 @@
-var fs = require('../');
-var rimraf = require('rimraf');
-var mkdirp = require('mkdirp');
-var test = require('tap').test;
-var p = require('path').resolve(__dirname, 'files');
-
-process.chdir(__dirname)
-
-// Make sure to reserve the stderr fd
-process.stderr.write('');
-
-var num = 4097;
-var paths = new Array(num);
-
-test('make files', function (t) {
- rimraf.sync(p);
- mkdirp.sync(p);
-
- for (var i = 0; i < num; ++i) {
- paths[i] = 'files/file-' + i;
- fs.writeFileSync(paths[i], 'content');
- }
-
- t.end();
-})
-
-test('read files', function (t) {
- // now read them
- var done = 0;
- for (var i = 0; i < num; ++i) {
- fs.readFile(paths[i], function(err, data) {
- if (err)
- throw err;
-
- ++done;
- if (done === num) {
- t.pass('success');
- t.end()
- }
- });
- }
-});
-
-test('cleanup', function (t) {
- rimraf.sync(p);
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/LICENSE
deleted file mode 100644
index dea3013d..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/LICENSE
+++ /dev/null
@@ -1,16 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/README.md
deleted file mode 100644
index b1c56658..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-Browser-friendly inheritance fully compatible with standard node.js
-[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
-
-This package exports standard `inherits` from node.js `util` module in
-node environment, but also provides alternative browser-friendly
-implementation through [browser
-field](https://gist.github.com/shtylman/4339901). Alternative
-implementation is a literal copy of standard one located in standalone
-module to avoid requiring of `util`. It also has a shim for old
-browsers with no `Object.create` support.
-
-While keeping you sure you are using standard `inherits`
-implementation in node.js environment, it allows bundlers such as
-[browserify](https://github.com/substack/node-browserify) to not
-include full `util` package to your client code if all you need is
-just `inherits` function. It worth, because browser shim for `util`
-package is large and `inherits` is often the single function you need
-from it.
-
-It's recommended to use this package instead of
-`require('util').inherits` for any code that has chances to be used
-not only in node.js but in browser too.
-
-## usage
-
-```js
-var inherits = require('inherits');
-// then use exactly as the standard one
-```
-
-## note on version ~1.0
-
-Version ~1.0 had completely different motivation and is not compatible
-neither with 2.0 nor with standard node.js `inherits`.
-
-If you are using version ~1.0 and planning to switch to ~2.0, be
-careful:
-
-* new version uses `super_` instead of `super` for referencing
- superclass
-* new version overwrites current prototype while old one preserves any
- existing fields on it
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/inherits.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/inherits.js
deleted file mode 100644
index 29f5e24f..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/inherits.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('util').inherits
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/inherits_browser.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/inherits_browser.js
deleted file mode 100644
index c1e78a75..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/inherits_browser.js
+++ /dev/null
@@ -1,23 +0,0 @@
-if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- };
-} else {
- // old school shim for old browsers
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/package.json
deleted file mode 100644
index 93d50784..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "inherits",
- "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
- "version": "2.0.1",
- "keywords": [
- "inheritance",
- "class",
- "klass",
- "oop",
- "object-oriented",
- "inherits",
- "browser",
- "browserify"
- ],
- "main": "./inherits.js",
- "browser": "./inherits_browser.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/inherits.git"
- },
- "license": "ISC",
- "scripts": {
- "test": "node test"
- },
- "bugs": {
- "url": "https://github.com/isaacs/inherits/issues"
- },
- "_id": "inherits@2.0.1",
- "dist": {
- "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
- "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
- },
- "_from": "inherits@>=2.0.1 <2.1.0",
- "_npmVersion": "1.3.8",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
- "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
- "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "readme": "ERROR: No README data found!",
- "homepage": "https://github.com/isaacs/inherits#readme"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/test.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/test.js
deleted file mode 100644
index fc53012d..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/inherits/test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var inherits = require('./inherits.js')
-var assert = require('assert')
-
-function test(c) {
- assert(c.constructor === Child)
- assert(c.constructor.super_ === Parent)
- assert(Object.getPrototypeOf(c) === Child.prototype)
- assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
- assert(c instanceof Child)
- assert(c instanceof Parent)
-}
-
-function Child() {
- Parent.call(this)
- test(this)
-}
-
-function Parent() {}
-
-inherits(Child, Parent)
-
-var c = new Child
-test(c)
-
-console.log('ok')
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/.travis.yml b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/.travis.yml
deleted file mode 100644
index 74c57bf1..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/.travis.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
- - "0.12"
- - "iojs"
-before_install:
- - npm install -g npm@~1.4.6
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/LICENSE
deleted file mode 100644
index 432d1aeb..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2010 James Halliday (mail@substack.net)
-
-This project is free software released under the MIT/X11 license:
-
-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/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/bin/cmd.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/bin/cmd.js
deleted file mode 100755
index d95de15a..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/bin/cmd.js
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env node
-
-var mkdirp = require('../');
-var minimist = require('minimist');
-var fs = require('fs');
-
-var argv = minimist(process.argv.slice(2), {
- alias: { m: 'mode', h: 'help' },
- string: [ 'mode' ]
-});
-if (argv.help) {
- fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout);
- return;
-}
-
-var paths = argv._.slice();
-var mode = argv.mode ? parseInt(argv.mode, 8) : undefined;
-
-(function next () {
- if (paths.length === 0) return;
- var p = paths.shift();
-
- if (mode === undefined) mkdirp(p, cb)
- else mkdirp(p, mode, cb)
-
- function cb (err) {
- if (err) {
- console.error(err.message);
- process.exit(1);
- }
- else next();
- }
-})();
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/bin/usage.txt b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/bin/usage.txt
deleted file mode 100644
index f952aa2c..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/bin/usage.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-usage: mkdirp [DIR1,DIR2..] {OPTIONS}
-
- Create each supplied directory including any necessary parent directories that
- don't yet exist.
-
- If the directory already exists, do nothing.
-
-OPTIONS are:
-
- -m, --mode If a directory needs to be created, set the mode as an octal
- permission string.
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/examples/pow.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/examples/pow.js
deleted file mode 100644
index e6924212..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/examples/pow.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var mkdirp = require('mkdirp');
-
-mkdirp('/tmp/foo/bar/baz', function (err) {
- if (err) console.error(err)
- else console.log('pow!')
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/index.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/index.js
deleted file mode 100644
index 6ce241b5..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/index.js
+++ /dev/null
@@ -1,98 +0,0 @@
-var path = require('path');
-var fs = require('fs');
-var _0777 = parseInt('0777', 8);
-
-module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
-
-function mkdirP (p, opts, f, made) {
- if (typeof opts === 'function') {
- f = opts;
- opts = {};
- }
- else if (!opts || typeof opts !== 'object') {
- opts = { mode: opts };
- }
-
- var mode = opts.mode;
- var xfs = opts.fs || fs;
-
- if (mode === undefined) {
- mode = _0777 & (~process.umask());
- }
- if (!made) made = null;
-
- var cb = f || function () {};
- p = path.resolve(p);
-
- xfs.mkdir(p, mode, function (er) {
- if (!er) {
- made = made || p;
- return cb(null, made);
- }
- switch (er.code) {
- case 'ENOENT':
- mkdirP(path.dirname(p), opts, function (er, made) {
- if (er) cb(er, made);
- else mkdirP(p, opts, cb, made);
- });
- break;
-
- // In the case of any other error, just see if there's a dir
- // there already. If so, then hooray! If not, then something
- // is borked.
- default:
- xfs.stat(p, function (er2, stat) {
- // if the stat fails, then that's super weird.
- // let the original error be the failure reason.
- if (er2 || !stat.isDirectory()) cb(er, made)
- else cb(null, made);
- });
- break;
- }
- });
-}
-
-mkdirP.sync = function sync (p, opts, made) {
- if (!opts || typeof opts !== 'object') {
- opts = { mode: opts };
- }
-
- var mode = opts.mode;
- var xfs = opts.fs || fs;
-
- if (mode === undefined) {
- mode = _0777 & (~process.umask());
- }
- if (!made) made = null;
-
- p = path.resolve(p);
-
- try {
- xfs.mkdirSync(p, mode);
- made = made || p;
- }
- catch (err0) {
- switch (err0.code) {
- case 'ENOENT' :
- made = sync(path.dirname(p), opts, made);
- sync(p, opts, made);
- break;
-
- // In the case of any other error, just see if there's a dir
- // there already. If so, then hooray! If not, then something
- // is borked.
- default:
- var stat;
- try {
- stat = xfs.statSync(p);
- }
- catch (err1) {
- throw err0;
- }
- if (!stat.isDirectory()) throw err0;
- break;
- }
- }
-
- return made;
-};
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/.travis.yml b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/.travis.yml
deleted file mode 100644
index cc4dba29..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/LICENSE
deleted file mode 100644
index ee27ba4b..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-This software is released under the MIT license:
-
-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/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/example/parse.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/example/parse.js
deleted file mode 100644
index abff3e8e..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/example/parse.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var argv = require('../')(process.argv.slice(2));
-console.dir(argv);
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/index.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/index.js
deleted file mode 100644
index 584f551a..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/index.js
+++ /dev/null
@@ -1,187 +0,0 @@
-module.exports = function (args, opts) {
- if (!opts) opts = {};
-
- var flags = { bools : {}, strings : {} };
-
- [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
- flags.bools[key] = true;
- });
-
- [].concat(opts.string).filter(Boolean).forEach(function (key) {
- flags.strings[key] = true;
- });
-
- var aliases = {};
- Object.keys(opts.alias || {}).forEach(function (key) {
- aliases[key] = [].concat(opts.alias[key]);
- aliases[key].forEach(function (x) {
- aliases[x] = [key].concat(aliases[key].filter(function (y) {
- return x !== y;
- }));
- });
- });
-
- var defaults = opts['default'] || {};
-
- var argv = { _ : [] };
- Object.keys(flags.bools).forEach(function (key) {
- setArg(key, defaults[key] === undefined ? false : defaults[key]);
- });
-
- var notFlags = [];
-
- if (args.indexOf('--') !== -1) {
- notFlags = args.slice(args.indexOf('--')+1);
- args = args.slice(0, args.indexOf('--'));
- }
-
- function setArg (key, val) {
- var value = !flags.strings[key] && isNumber(val)
- ? Number(val) : val
- ;
- setKey(argv, key.split('.'), value);
-
- (aliases[key] || []).forEach(function (x) {
- setKey(argv, x.split('.'), value);
- });
- }
-
- for (var i = 0; i < args.length; i++) {
- var arg = args[i];
-
- if (/^--.+=/.test(arg)) {
- // Using [\s\S] instead of . because js doesn't support the
- // 'dotall' regex modifier. See:
- // http://stackoverflow.com/a/1068308/13216
- var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
- setArg(m[1], m[2]);
- }
- else if (/^--no-.+/.test(arg)) {
- var key = arg.match(/^--no-(.+)/)[1];
- setArg(key, false);
- }
- else if (/^--.+/.test(arg)) {
- var key = arg.match(/^--(.+)/)[1];
- var next = args[i + 1];
- if (next !== undefined && !/^-/.test(next)
- && !flags.bools[key]
- && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
- setArg(key, next);
- i++;
- }
- else if (/^(true|false)$/.test(next)) {
- setArg(key, next === 'true');
- i++;
- }
- else {
- setArg(key, flags.strings[key] ? '' : true);
- }
- }
- else if (/^-[^-]+/.test(arg)) {
- var letters = arg.slice(1,-1).split('');
-
- var broken = false;
- for (var j = 0; j < letters.length; j++) {
- var next = arg.slice(j+2);
-
- if (next === '-') {
- setArg(letters[j], next)
- continue;
- }
-
- if (/[A-Za-z]/.test(letters[j])
- && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
- setArg(letters[j], next);
- broken = true;
- break;
- }
-
- if (letters[j+1] && letters[j+1].match(/\W/)) {
- setArg(letters[j], arg.slice(j+2));
- broken = true;
- break;
- }
- else {
- setArg(letters[j], flags.strings[letters[j]] ? '' : true);
- }
- }
-
- var key = arg.slice(-1)[0];
- if (!broken && key !== '-') {
- if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
- && !flags.bools[key]
- && (aliases[key] ? !flags.bools[aliases[key]] : true)) {
- setArg(key, args[i+1]);
- i++;
- }
- else if (args[i+1] && /true|false/.test(args[i+1])) {
- setArg(key, args[i+1] === 'true');
- i++;
- }
- else {
- setArg(key, flags.strings[key] ? '' : true);
- }
- }
- }
- else {
- argv._.push(
- flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
- );
- }
- }
-
- Object.keys(defaults).forEach(function (key) {
- if (!hasKey(argv, key.split('.'))) {
- setKey(argv, key.split('.'), defaults[key]);
-
- (aliases[key] || []).forEach(function (x) {
- setKey(argv, x.split('.'), defaults[key]);
- });
- }
- });
-
- notFlags.forEach(function(key) {
- argv._.push(key);
- });
-
- return argv;
-};
-
-function hasKey (obj, keys) {
- var o = obj;
- keys.slice(0,-1).forEach(function (key) {
- o = (o[key] || {});
- });
-
- var key = keys[keys.length - 1];
- return key in o;
-}
-
-function setKey (obj, keys, value) {
- var o = obj;
- keys.slice(0,-1).forEach(function (key) {
- if (o[key] === undefined) o[key] = {};
- o = o[key];
- });
-
- var key = keys[keys.length - 1];
- if (o[key] === undefined || typeof o[key] === 'boolean') {
- o[key] = value;
- }
- else if (Array.isArray(o[key])) {
- o[key].push(value);
- }
- else {
- o[key] = [ o[key], value ];
- }
-}
-
-function isNumber (x) {
- if (typeof x === 'number') return true;
- if (/^0x[0-9a-f]+$/i.test(x)) return true;
- return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
-}
-
-function longest (xs) {
- return Math.max.apply(null, xs.map(function (x) { return x.length }));
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/package.json
deleted file mode 100644
index 7cd80f4f..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/package.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "name": "minimist",
- "version": "0.0.8",
- "description": "parse argument options",
- "main": "index.js",
- "devDependencies": {
- "tape": "~1.0.4",
- "tap": "~0.4.0"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "testling": {
- "files": "test/*.js",
- "browsers": [
- "ie/6..latest",
- "ff/5",
- "firefox/latest",
- "chrome/10",
- "chrome/latest",
- "safari/5.1",
- "safari/latest",
- "opera/12"
- ]
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/minimist.git"
- },
- "homepage": "https://github.com/substack/minimist",
- "keywords": [
- "argv",
- "getopt",
- "parser",
- "optimist"
- ],
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/substack/minimist/issues"
- },
- "_id": "minimist@0.0.8",
- "dist": {
- "shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d",
- "tarball": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
- },
- "_from": "minimist@0.0.8",
- "_npmVersion": "1.4.3",
- "_npmUser": {
- "name": "substack",
- "email": "mail@substack.net"
- },
- "maintainers": [
- {
- "name": "substack",
- "email": "mail@substack.net"
- }
- ],
- "directories": {},
- "_shasum": "857fcabfc3397d2625b8228262e86aa7a011b05d",
- "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/readme.markdown b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/readme.markdown
deleted file mode 100644
index c2563532..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/readme.markdown
+++ /dev/null
@@ -1,73 +0,0 @@
-# minimist
-
-parse argument options
-
-This module is the guts of optimist's argument parser without all the
-fanciful decoration.
-
-[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
-
-[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
-
-# example
-
-``` js
-var argv = require('minimist')(process.argv.slice(2));
-console.dir(argv);
-```
-
-```
-$ node example/parse.js -a beep -b boop
-{ _: [], a: 'beep', b: 'boop' }
-```
-
-```
-$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
-{ _: [ 'foo', 'bar', 'baz' ],
- x: 3,
- y: 4,
- n: 5,
- a: true,
- b: true,
- c: true,
- beep: 'boop' }
-```
-
-# methods
-
-``` js
-var parseArgs = require('minimist')
-```
-
-## var argv = parseArgs(args, opts={})
-
-Return an argument object `argv` populated with the array arguments from `args`.
-
-`argv._` contains all the arguments that didn't have an option associated with
-them.
-
-Numeric-looking arguments will be returned as numbers unless `opts.string` or
-`opts.boolean` is set for that argument name.
-
-Any arguments after `'--'` will not be parsed and will end up in `argv._`.
-
-options can be:
-
-* `opts.string` - a string or array of strings argument names to always treat as
-strings
-* `opts.boolean` - a string or array of strings to always treat as booleans
-* `opts.alias` - an object mapping string names to strings or arrays of string
-argument names to use as aliases
-* `opts.default` - an object mapping string argument names to default values
-
-# install
-
-With [npm](https://npmjs.org) do:
-
-```
-npm install minimist
-```
-
-# license
-
-MIT
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/dash.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/dash.js
deleted file mode 100644
index 8b034b99..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/dash.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('-', function (t) {
- t.plan(5);
- t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
- t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
- t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
- t.deepEqual(
- parse([ '-b', '-' ], { boolean: 'b' }),
- { b: true, _: [ '-' ] }
- );
- t.deepEqual(
- parse([ '-s', '-' ], { string: 's' }),
- { s: '-', _: [] }
- );
-});
-
-test('-a -- b', function (t) {
- t.plan(3);
- t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
- t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/default_bool.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
deleted file mode 100644
index f0041ee4..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('boolean default true', function (t) {
- var argv = parse([], {
- boolean: 'sometrue',
- default: { sometrue: true }
- });
- t.equal(argv.sometrue, true);
- t.end();
-});
-
-test('boolean default false', function (t) {
- var argv = parse([], {
- boolean: 'somefalse',
- default: { somefalse: false }
- });
- t.equal(argv.somefalse, false);
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/dotted.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/dotted.js
deleted file mode 100644
index ef0ae349..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/dotted.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('dotted alias', function (t) {
- var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 22);
- t.equal(argv.aa.bb, 22);
- t.end();
-});
-
-test('dotted default', function (t) {
- var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
- t.equal(argv.a.b, 11);
- t.equal(argv.aa.bb, 11);
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/long.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/long.js
deleted file mode 100644
index 5d3a1e09..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/long.js
+++ /dev/null
@@ -1,31 +0,0 @@
-var test = require('tape');
-var parse = require('../');
-
-test('long opts', function (t) {
- t.deepEqual(
- parse([ '--bool' ]),
- { bool : true, _ : [] },
- 'long boolean'
- );
- t.deepEqual(
- parse([ '--pow', 'xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture sp'
- );
- t.deepEqual(
- parse([ '--pow=xixxle' ]),
- { pow : 'xixxle', _ : [] },
- 'long capture eq'
- );
- t.deepEqual(
- parse([ '--host', 'localhost', '--port', '555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures sp'
- );
- t.deepEqual(
- parse([ '--host=localhost', '--port=555' ]),
- { host : 'localhost', port : 555, _ : [] },
- 'long captures eq'
- );
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/parse.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/parse.js
deleted file mode 100644
index 8a906466..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/parse.js
+++ /dev/null
@@ -1,318 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse args', function (t) {
- t.deepEqual(
- parse([ '--no-moo' ]),
- { moo : false, _ : [] },
- 'no'
- );
- t.deepEqual(
- parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
- { v : ['a','b','c'], _ : [] },
- 'multi'
- );
- t.end();
-});
-
-test('comprehensive', function (t) {
- t.deepEqual(
- parse([
- '--name=meowmers', 'bare', '-cats', 'woo',
- '-h', 'awesome', '--multi=quux',
- '--key', 'value',
- '-b', '--bool', '--no-meep', '--multi=baz',
- '--', '--not-a-flag', 'eek'
- ]),
- {
- c : true,
- a : true,
- t : true,
- s : 'woo',
- h : 'awesome',
- b : true,
- bool : true,
- key : 'value',
- multi : [ 'quux', 'baz' ],
- meep : false,
- name : 'meowmers',
- _ : [ 'bare', '--not-a-flag', 'eek' ]
- }
- );
- t.end();
-});
-
-test('nums', function (t) {
- var argv = parse([
- '-x', '1234',
- '-y', '5.67',
- '-z', '1e7',
- '-w', '10f',
- '--hex', '0xdeadbeef',
- '789'
- ]);
- t.deepEqual(argv, {
- x : 1234,
- y : 5.67,
- z : 1e7,
- w : '10f',
- hex : 0xdeadbeef,
- _ : [ 789 ]
- });
- t.deepEqual(typeof argv.x, 'number');
- t.deepEqual(typeof argv.y, 'number');
- t.deepEqual(typeof argv.z, 'number');
- t.deepEqual(typeof argv.w, 'string');
- t.deepEqual(typeof argv.hex, 'number');
- t.deepEqual(typeof argv._[0], 'number');
- t.end();
-});
-
-test('flag boolean', function (t) {
- var argv = parse([ '-t', 'moo' ], { boolean: 't' });
- t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('flag boolean value', function (t) {
- var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
- boolean: [ 't', 'verbose' ],
- default: { verbose: true }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: true,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-});
-
-test('flag boolean default false', function (t) {
- var argv = parse(['moo'], {
- boolean: ['t', 'verbose'],
- default: { verbose: false, t: false }
- });
-
- t.deepEqual(argv, {
- verbose: false,
- t: false,
- _: ['moo']
- });
-
- t.deepEqual(typeof argv.verbose, 'boolean');
- t.deepEqual(typeof argv.t, 'boolean');
- t.end();
-
-});
-
-test('boolean groups', function (t) {
- var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
- boolean: ['x','y','z']
- });
-
- t.deepEqual(argv, {
- x : true,
- y : false,
- z : true,
- _ : [ 'one', 'two', 'three' ]
- });
-
- t.deepEqual(typeof argv.x, 'boolean');
- t.deepEqual(typeof argv.y, 'boolean');
- t.deepEqual(typeof argv.z, 'boolean');
- t.end();
-});
-
-test('newlines in params' , function (t) {
- var args = parse([ '-s', "X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
-
- // reproduce in bash:
- // VALUE="new
- // line"
- // node program.js --s="$VALUE"
- args = parse([ "--s=X\nX" ])
- t.deepEqual(args, { _ : [], s : "X\nX" });
- t.end();
-});
-
-test('strings' , function (t) {
- var s = parse([ '-s', '0001234' ], { string: 's' }).s;
- t.equal(s, '0001234');
- t.equal(typeof s, 'string');
-
- var x = parse([ '-x', '56' ], { string: 'x' }).x;
- t.equal(x, '56');
- t.equal(typeof x, 'string');
- t.end();
-});
-
-test('stringArgs', function (t) {
- var s = parse([ ' ', ' ' ], { string: '_' })._;
- t.same(s.length, 2);
- t.same(typeof s[0], 'string');
- t.same(s[0], ' ');
- t.same(typeof s[1], 'string');
- t.same(s[1], ' ');
- t.end();
-});
-
-test('empty strings', function(t) {
- var s = parse([ '-s' ], { string: 's' }).s;
- t.equal(s, '');
- t.equal(typeof s, 'string');
-
- var str = parse([ '--str' ], { string: 'str' }).str;
- t.equal(str, '');
- t.equal(typeof str, 'string');
-
- var letters = parse([ '-art' ], {
- string: [ 'a', 't' ]
- });
-
- t.equal(letters.a, '');
- t.equal(letters.r, true);
- t.equal(letters.t, '');
-
- t.end();
-});
-
-
-test('slashBreak', function (t) {
- t.same(
- parse([ '-I/foo/bar/baz' ]),
- { I : '/foo/bar/baz', _ : [] }
- );
- t.same(
- parse([ '-xyz/foo/bar/baz' ]),
- { x : true, y : true, z : '/foo/bar/baz', _ : [] }
- );
- t.end();
-});
-
-test('alias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: 'zoom' }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('multiAlias', function (t) {
- var argv = parse([ '-f', '11', '--zoom', '55' ], {
- alias: { z: [ 'zm', 'zoom' ] }
- });
- t.equal(argv.zoom, 55);
- t.equal(argv.z, argv.zoom);
- t.equal(argv.z, argv.zm);
- t.equal(argv.f, 11);
- t.end();
-});
-
-test('nested dotted objects', function (t) {
- var argv = parse([
- '--foo.bar', '3', '--foo.baz', '4',
- '--foo.quux.quibble', '5', '--foo.quux.o_O',
- '--beep.boop'
- ]);
-
- t.same(argv.foo, {
- bar : 3,
- baz : 4,
- quux : {
- quibble : 5,
- o_O : true
- }
- });
- t.same(argv.beep, { boop : true });
- t.end();
-});
-
-test('boolean and alias with chainable api', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- herp: { alias: 'h', boolean: true }
- };
- var aliasedArgv = parse(aliased, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var propertyArgv = parse(regular, {
- boolean: 'herp',
- alias: { h: 'herp' }
- });
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias with options hash', function (t) {
- var aliased = [ '-h', 'derp' ];
- var regular = [ '--herp', 'derp' ];
- var opts = {
- alias: { 'h': 'herp' },
- boolean: 'herp'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ 'derp' ]
- };
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-test('boolean and alias using explicit true', function (t) {
- var aliased = [ '-h', 'true' ];
- var regular = [ '--herp', 'true' ];
- var opts = {
- alias: { h: 'herp' },
- boolean: 'h'
- };
- var aliasedArgv = parse(aliased, opts);
- var propertyArgv = parse(regular, opts);
- var expected = {
- herp: true,
- h: true,
- '_': [ ]
- };
-
- t.same(aliasedArgv, expected);
- t.same(propertyArgv, expected);
- t.end();
-});
-
-// regression, see https://github.com/substack/node-optimist/issues/71
-test('boolean and --x=true', function(t) {
- var parsed = parse(['--boool', '--other=true'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'true');
-
- parsed = parse(['--boool', '--other=false'], {
- boolean: 'boool'
- });
-
- t.same(parsed.boool, true);
- t.same(parsed.other, 'false');
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
deleted file mode 100644
index 21851b03..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('parse with modifier functions' , function (t) {
- t.plan(1);
-
- var argv = parse([ '-b', '123' ], { boolean: 'b' });
- t.deepEqual(argv, { b: true, _: ['123'] });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/short.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/short.js
deleted file mode 100644
index d513a1c2..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/short.js
+++ /dev/null
@@ -1,67 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('numeric short args', function (t) {
- t.plan(2);
- t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
- t.deepEqual(
- parse([ '-123', '456' ]),
- { 1: true, 2: true, 3: 456, _: [] }
- );
-});
-
-test('short', function (t) {
- t.deepEqual(
- parse([ '-b' ]),
- { b : true, _ : [] },
- 'short boolean'
- );
- t.deepEqual(
- parse([ 'foo', 'bar', 'baz' ]),
- { _ : [ 'foo', 'bar', 'baz' ] },
- 'bare'
- );
- t.deepEqual(
- parse([ '-cats' ]),
- { c : true, a : true, t : true, s : true, _ : [] },
- 'group'
- );
- t.deepEqual(
- parse([ '-cats', 'meow' ]),
- { c : true, a : true, t : true, s : 'meow', _ : [] },
- 'short group next'
- );
- t.deepEqual(
- parse([ '-h', 'localhost' ]),
- { h : 'localhost', _ : [] },
- 'short capture'
- );
- t.deepEqual(
- parse([ '-h', 'localhost', '-p', '555' ]),
- { h : 'localhost', p : 555, _ : [] },
- 'short captures'
- );
- t.end();
-});
-
-test('mixed short bool and capture', function (t) {
- t.same(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
-
-test('short and long', function (t) {
- t.deepEqual(
- parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
- {
- f : true, p : 555, h : 'localhost',
- _ : [ 'script.js' ]
- }
- );
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/whitespace.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
deleted file mode 100644
index 8a52a58c..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var parse = require('../');
-var test = require('tape');
-
-test('whitespace should be whitespace' , function (t) {
- t.plan(1);
- var x = parse([ '-x', '\t' ]).x;
- t.equal(x, '\t');
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/package.json
deleted file mode 100644
index 70a6cbad..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "name": "mkdirp",
- "description": "Recursively mkdir, like `mkdir -p`",
- "version": "0.5.1",
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "main": "index.js",
- "keywords": [
- "mkdir",
- "directory"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/substack/node-mkdirp.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "dependencies": {
- "minimist": "0.0.8"
- },
- "devDependencies": {
- "tap": "1",
- "mock-fs": "2 >=2.7.0"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "license": "MIT",
- "gitHead": "d4eff0f06093aed4f387e88e9fc301cb76beedc7",
- "bugs": {
- "url": "https://github.com/substack/node-mkdirp/issues"
- },
- "homepage": "https://github.com/substack/node-mkdirp#readme",
- "_id": "mkdirp@0.5.1",
- "_shasum": "30057438eac6cf7f8c4767f38648d6697d75c903",
- "_from": "mkdirp@>=0.5.0 <0.6.0",
- "_npmVersion": "2.9.0",
- "_nodeVersion": "2.0.0",
- "_npmUser": {
- "name": "substack",
- "email": "substack@gmail.com"
- },
- "dist": {
- "shasum": "30057438eac6cf7f8c4767f38648d6697d75c903",
- "tarball": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
- },
- "maintainers": [
- {
- "name": "substack",
- "email": "mail@substack.net"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/readme.markdown b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/readme.markdown
deleted file mode 100644
index 3cc13153..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/readme.markdown
+++ /dev/null
@@ -1,100 +0,0 @@
-# mkdirp
-
-Like `mkdir -p`, but in node.js!
-
-[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)
-
-# example
-
-## pow.js
-
-```js
-var mkdirp = require('mkdirp');
-
-mkdirp('/tmp/foo/bar/baz', function (err) {
- if (err) console.error(err)
- else console.log('pow!')
-});
-```
-
-Output
-
-```
-pow!
-```
-
-And now /tmp/foo/bar/baz exists, huzzah!
-
-# methods
-
-```js
-var mkdirp = require('mkdirp');
-```
-
-## mkdirp(dir, opts, cb)
-
-Create a new directory and any necessary subdirectories at `dir` with octal
-permission string `opts.mode`. If `opts` is a non-object, it will be treated as
-the `opts.mode`.
-
-If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-`cb(err, made)` fires with the error or the first directory `made`
-that had to be created, if any.
-
-You can optionally pass in an alternate `fs` implementation by passing in
-`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and
-`opts.fs.stat(path, cb)`.
-
-## mkdirp.sync(dir, opts)
-
-Synchronously create a new directory and any necessary subdirectories at `dir`
-with octal permission string `opts.mode`. If `opts` is a non-object, it will be
-treated as the `opts.mode`.
-
-If `opts.mode` isn't specified, it defaults to `0777 & (~process.umask())`.
-
-Returns the first directory that had to be created, if any.
-
-You can optionally pass in an alternate `fs` implementation by passing in
-`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and
-`opts.fs.statSync(path)`.
-
-# usage
-
-This package also ships with a `mkdirp` command.
-
-```
-usage: mkdirp [DIR1,DIR2..] {OPTIONS}
-
- Create each supplied directory including any necessary parent directories that
- don't yet exist.
-
- If the directory already exists, do nothing.
-
-OPTIONS are:
-
- -m, --mode If a directory needs to be created, set the mode as an octal
- permission string.
-
-```
-
-# install
-
-With [npm](http://npmjs.org) do:
-
-```
-npm install mkdirp
-```
-
-to get the library, or
-
-```
-npm install -g mkdirp
-```
-
-to get the command.
-
-# license
-
-MIT
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/chmod.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/chmod.js
deleted file mode 100644
index 6a404b93..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/chmod.js
+++ /dev/null
@@ -1,41 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-var _0744 = parseInt('0744', 8);
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
- var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- ps.push(dir);
-}
-
-var file = ps.join('/');
-
-test('chmod-pre', function (t) {
- var mode = _0744
- mkdirp(file, mode, function (er) {
- t.ifError(er, 'should not error');
- fs.stat(file, function (er, stat) {
- t.ifError(er, 'should exist');
- t.ok(stat && stat.isDirectory(), 'should be directory');
- t.equal(stat && stat.mode & _0777, mode, 'should be 0744');
- t.end();
- });
- });
-});
-
-test('chmod', function (t) {
- var mode = _0755
- mkdirp(file, mode, function (er) {
- t.ifError(er, 'should not error');
- fs.stat(file, function (er, stat) {
- t.ifError(er, 'should exist');
- t.ok(stat && stat.isDirectory(), 'should be directory');
- t.end();
- });
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/clobber.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/clobber.js
deleted file mode 100644
index 2433b9ad..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/clobber.js
+++ /dev/null
@@ -1,38 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-var _0755 = parseInt('0755', 8);
-
-var ps = [ '', 'tmp' ];
-
-for (var i = 0; i < 25; i++) {
- var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- ps.push(dir);
-}
-
-var file = ps.join('/');
-
-// a file in the way
-var itw = ps.slice(0, 3).join('/');
-
-
-test('clobber-pre', function (t) {
- console.error("about to write to "+itw)
- fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.');
-
- fs.stat(itw, function (er, stat) {
- t.ifError(er)
- t.ok(stat && stat.isFile(), 'should be file')
- t.end()
- })
-})
-
-test('clobber', function (t) {
- t.plan(2);
- mkdirp(file, _0755, function (err) {
- t.ok(err);
- t.equal(err.code, 'ENOTDIR');
- t.end();
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/mkdirp.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/mkdirp.js
deleted file mode 100644
index eaa8921c..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/mkdirp.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('woo', function (t) {
- t.plan(5);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- })
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/opts_fs.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/opts_fs.js
deleted file mode 100644
index 97186b62..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/opts_fs.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var test = require('tap').test;
-var mockfs = require('mock-fs');
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('opts.fs', function (t) {
- t.plan(5);
-
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/beep/boop/' + [x,y,z].join('/');
- var xfs = mockfs.fs();
-
- mkdirp(file, { fs: xfs, mode: _0755 }, function (err) {
- t.ifError(err);
- xfs.exists(file, function (ex) {
- t.ok(ex, 'created file');
- xfs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/opts_fs_sync.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/opts_fs_sync.js
deleted file mode 100644
index 6c370aa6..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/opts_fs_sync.js
+++ /dev/null
@@ -1,27 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var test = require('tap').test;
-var mockfs = require('mock-fs');
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('opts.fs sync', function (t) {
- t.plan(4);
-
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/beep/boop/' + [x,y,z].join('/');
- var xfs = mockfs.fs();
-
- mkdirp.sync(file, { fs: xfs, mode: _0755 });
- xfs.exists(file, function (ex) {
- t.ok(ex, 'created file');
- xfs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/perm.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/perm.js
deleted file mode 100644
index fbce44b8..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/perm.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('async perm', function (t) {
- t.plan(5);
- var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);
-
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- })
- });
-});
-
-test('async root perm', function (t) {
- mkdirp('/tmp', _0755, function (err) {
- if (err) t.fail(err);
- t.end();
- });
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/perm_sync.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/perm_sync.js
deleted file mode 100644
index 398229fe..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/perm_sync.js
+++ /dev/null
@@ -1,36 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('sync perm', function (t) {
- t.plan(4);
- var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';
-
- mkdirp.sync(file, _0755);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
-
-test('sync root perm', function (t) {
- t.plan(3);
-
- var file = '/tmp';
- mkdirp.sync(file, _0755);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/race.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/race.js
deleted file mode 100644
index b0b9e183..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/race.js
+++ /dev/null
@@ -1,37 +0,0 @@
-var mkdirp = require('../').mkdirp;
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('race', function (t) {
- t.plan(10);
- var ps = [ '', 'tmp' ];
-
- for (var i = 0; i < 25; i++) {
- var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- ps.push(dir);
- }
- var file = ps.join('/');
-
- var res = 2;
- mk(file);
-
- mk(file);
-
- function mk (file, cb) {
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- })
- });
- }
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/rel.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/rel.js
deleted file mode 100644
index 4ddb3427..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/rel.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('rel', function (t) {
- t.plan(5);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var cwd = process.cwd();
- process.chdir('/tmp');
-
- var file = [x,y,z].join('/');
-
- mkdirp(file, _0755, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- process.chdir(cwd);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- })
- })
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/return.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/return.js
deleted file mode 100644
index bce68e56..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/return.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
- t.plan(4);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- // should return the first dir created.
- // By this point, it would be profoundly surprising if /tmp didn't
- // already exist, since every other test makes things in there.
- mkdirp(file, function (err, made) {
- t.ifError(err);
- t.equal(made, '/tmp/' + x);
- mkdirp(file, function (err, made) {
- t.ifError(err);
- t.equal(made, null);
- });
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/return_sync.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/return_sync.js
deleted file mode 100644
index 7c222d35..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/return_sync.js
+++ /dev/null
@@ -1,24 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-
-test('return value', function (t) {
- t.plan(2);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- // should return the first dir created.
- // By this point, it would be profoundly surprising if /tmp didn't
- // already exist, since every other test makes things in there.
- // Note that this will throw on failure, which will fail the test.
- var made = mkdirp.sync(file);
- t.equal(made, '/tmp/' + x);
-
- // making the same file again should have no effect.
- made = mkdirp.sync(file);
- t.equal(made, null);
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/root.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/root.js
deleted file mode 100644
index 9e7d079d..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/root.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var test = require('tap').test;
-var _0755 = parseInt('0755', 8);
-
-test('root', function (t) {
- // '/' on unix, 'c:/' on windows.
- var file = path.resolve('/');
-
- mkdirp(file, _0755, function (err) {
- if (err) throw err
- fs.stat(file, function (er, stat) {
- if (er) throw er
- t.ok(stat.isDirectory(), 'target is a directory');
- t.end();
- })
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/sync.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/sync.js
deleted file mode 100644
index 8c8dc938..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('sync', function (t) {
- t.plan(4);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- try {
- mkdirp.sync(file, _0755);
- } catch (err) {
- t.fail(err);
- return t.end();
- }
-
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0755);
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/umask.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/umask.js
deleted file mode 100644
index 2033c63a..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/umask.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('implicit mode from umask', function (t) {
- t.plan(5);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- mkdirp(file, function (err) {
- t.ifError(err);
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, _0777 & (~process.umask()));
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- })
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/umask_sync.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/umask_sync.js
deleted file mode 100644
index 11a76147..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/mkdirp/test/umask_sync.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var mkdirp = require('../');
-var path = require('path');
-var fs = require('fs');
-var exists = fs.exists || path.exists;
-var test = require('tap').test;
-var _0777 = parseInt('0777', 8);
-var _0755 = parseInt('0755', 8);
-
-test('umask sync modes', function (t) {
- t.plan(4);
- var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
- var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
-
- var file = '/tmp/' + [x,y,z].join('/');
-
- try {
- mkdirp.sync(file);
- } catch (err) {
- t.fail(err);
- return t.end();
- }
-
- exists(file, function (ex) {
- t.ok(ex, 'file created');
- fs.stat(file, function (err, stat) {
- t.ifError(err);
- t.equal(stat.mode & _0777, (_0777 & (~process.umask())));
- t.ok(stat.isDirectory(), 'target not a directory');
- });
- });
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/LICENSE
deleted file mode 100644
index 19129e31..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/README.md
deleted file mode 100644
index 18659f67..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-[![Build Status](https://travis-ci.org/isaacs/rimraf.svg?branch=master)](https://travis-ci.org/isaacs/rimraf) [![Dependency Status](https://david-dm.org/isaacs/rimraf.svg)](https://david-dm.org/isaacs/rimraf) [![devDependency Status](https://david-dm.org/isaacs/rimraf/dev-status.svg)](https://david-dm.org/isaacs/rimraf#info=devDependencies)
-
-The [UNIX command](http://en.wikipedia.org/wiki/Rm_(Unix)) `rm -rf` for node.
-
-Install with `npm install rimraf`, or just drop rimraf.js somewhere.
-
-## API
-
-`rimraf(f, callback)`
-
-The callback will be called with an error if there is one. Certain
-errors are handled for you:
-
-* Windows: `EBUSY` and `ENOTEMPTY` - rimraf will back off a maximum of
- `opts.maxBusyTries` times before giving up, adding 100ms of wait
- between each attempt. The default `maxBusyTries` is 3.
-* `ENOENT` - If the file doesn't exist, rimraf will return
- successfully, since your desired outcome is already the case.
-* `EMFILE` - Since `readdir` requires opening a file descriptor, it's
- possible to hit `EMFILE` if too many file descriptors are in use.
- In the sync case, there's nothing to be done for this. But in the
- async case, rimraf will gradually back off with timeouts up to
- `opts.emfileWait` ms, which defaults to 1000.
-
-## rimraf.sync
-
-It can remove stuff synchronously, too. But that's not so good. Use
-the async API. It's better.
-
-## CLI
-
-If installed with `npm install rimraf -g` it can be used as a global
-command `rimraf [ ...]` which is useful for cross platform support.
-
-## mkdirp
-
-If you need to create a directory recursively, check out
-[mkdirp](https://github.com/substack/node-mkdirp).
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/bin.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/bin.js
deleted file mode 100755
index 1bd5a0d1..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/bin.js
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env node
-
-var rimraf = require('./')
-
-var help = false
-var dashdash = false
-var args = process.argv.slice(2).filter(function(arg) {
- if (dashdash)
- return !!arg
- else if (arg === '--')
- dashdash = true
- else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
- help = true
- else
- return !!arg
-});
-
-if (help || args.length === 0) {
- // If they didn't ask for help, then this is not a "success"
- var log = help ? console.log : console.error
- log('Usage: rimraf [ ...]')
- log('')
- log(' Deletes all files and folders at "path" recursively.')
- log('')
- log('Options:')
- log('')
- log(' -h, --help Display this usage info')
- process.exit(help ? 0 : 1)
-} else
- go(0)
-
-function go (n) {
- if (n >= args.length)
- return
- rimraf(args[n], function (er) {
- if (er)
- throw er
- go(n+1)
- })
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/LICENSE
deleted file mode 100644
index 19129e31..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/README.md
deleted file mode 100644
index 063cf950..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/README.md
+++ /dev/null
@@ -1,377 +0,0 @@
-[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Dependency Status](https://david-dm.org/isaacs/node-glob.svg)](https://david-dm.org/isaacs/node-glob) [![devDependency Status](https://david-dm.org/isaacs/node-glob/dev-status.svg)](https://david-dm.org/isaacs/node-glob#info=devDependencies) [![optionalDependency Status](https://david-dm.org/isaacs/node-glob/optional-status.svg)](https://david-dm.org/isaacs/node-glob#info=optionalDependencies)
-
-# Glob
-
-Match files using the patterns the shell uses, like stars and stuff.
-
-This is a glob implementation in JavaScript. It uses the `minimatch`
-library to do its matching.
-
-![](oh-my-glob.gif)
-
-## Usage
-
-```javascript
-var glob = require("glob")
-
-// options is optional
-glob("**/*.js", options, function (er, files) {
- // files is an array of filenames.
- // If the `nonull` option is set, and nothing
- // was found, then files is ["**/*.js"]
- // er is an error object or null.
-})
-```
-
-## Glob Primer
-
-"Globs" are the patterns you type when you do stuff like `ls *.js` on
-the command line, or put `build/*` in a `.gitignore` file.
-
-Before parsing the path part patterns, braced sections are expanded
-into a set. Braced sections start with `{` and end with `}`, with any
-number of comma-delimited sections within. Braced sections may contain
-slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`.
-
-The following characters have special magic meaning when used in a
-path portion:
-
-* `*` Matches 0 or more characters in a single path portion
-* `?` Matches 1 character
-* `[...]` Matches a range of characters, similar to a RegExp range.
- If the first character of the range is `!` or `^` then it matches
- any character not in the range.
-* `!(pattern|pattern|pattern)` Matches anything that does not match
- any of the patterns provided.
-* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the
- patterns provided.
-* `+(pattern|pattern|pattern)` Matches one or more occurrences of the
- patterns provided.
-* `*(a|b|c)` Matches zero or more occurrences of the patterns provided
-* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns
- provided
-* `**` If a "globstar" is alone in a path portion, then it matches
- zero or more directories and subdirectories searching for matches.
- It does not crawl symlinked directories.
-
-### Dots
-
-If a file or directory path portion has a `.` as the first character,
-then it will not match any glob pattern unless that pattern's
-corresponding path part also has a `.` as its first character.
-
-For example, the pattern `a/.*/c` would match the file at `a/.b/c`.
-However the pattern `a/*/c` would not, because `*` does not start with
-a dot character.
-
-You can make glob treat dots as normal characters by setting
-`dot:true` in the options.
-
-### Basename Matching
-
-If you set `matchBase:true` in the options, and the pattern has no
-slashes in it, then it will seek for any file anywhere in the tree
-with a matching basename. For example, `*.js` would match
-`test/simple/basic.js`.
-
-### Negation
-
-The intent for negation would be for a pattern starting with `!` to
-match everything that *doesn't* match the supplied pattern. However,
-the implementation is weird, and for the time being, this should be
-avoided. The behavior is deprecated in version 5, and will be removed
-entirely in version 6.
-
-### Empty Sets
-
-If no matching files are found, then an empty array is returned. This
-differs from the shell, where the pattern itself is returned. For
-example:
-
- $ echo a*s*d*f
- a*s*d*f
-
-To get the bash-style behavior, set the `nonull:true` in the options.
-
-### See Also:
-
-* `man sh`
-* `man bash` (Search for "Pattern Matching")
-* `man 3 fnmatch`
-* `man 5 gitignore`
-* [minimatch documentation](https://github.com/isaacs/minimatch)
-
-## glob.hasMagic(pattern, [options])
-
-Returns `true` if there are any special characters in the pattern, and
-`false` otherwise.
-
-Note that the options affect the results. If `noext:true` is set in
-the options object, then `+(a|b)` will not be considered a magic
-pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}`
-then that is considered magical, unless `nobrace:true` is set in the
-options.
-
-## glob(pattern, [options], cb)
-
-* `pattern` {String} Pattern to be matched
-* `options` {Object}
-* `cb` {Function}
- * `err` {Error | null}
- * `matches` {Array} filenames found matching the pattern
-
-Perform an asynchronous glob search.
-
-## glob.sync(pattern, [options])
-
-* `pattern` {String} Pattern to be matched
-* `options` {Object}
-* return: {Array} filenames found matching the pattern
-
-Perform a synchronous glob search.
-
-## Class: glob.Glob
-
-Create a Glob object by instantiating the `glob.Glob` class.
-
-```javascript
-var Glob = require("glob").Glob
-var mg = new Glob(pattern, options, cb)
-```
-
-It's an EventEmitter, and starts walking the filesystem to find matches
-immediately.
-
-### new glob.Glob(pattern, [options], [cb])
-
-* `pattern` {String} pattern to search for
-* `options` {Object}
-* `cb` {Function} Called when an error occurs, or matches are found
- * `err` {Error | null}
- * `matches` {Array} filenames found matching the pattern
-
-Note that if the `sync` flag is set in the options, then matches will
-be immediately available on the `g.found` member.
-
-### Properties
-
-* `minimatch` The minimatch object that the glob uses.
-* `options` The options object passed in.
-* `aborted` Boolean which is set to true when calling `abort()`. There
- is no way at this time to continue a glob search after aborting, but
- you can re-use the statCache to avoid having to duplicate syscalls.
-* `cache` Convenience object. Each field has the following possible
- values:
- * `false` - Path does not exist
- * `true` - Path exists
- * `'DIR'` - Path exists, and is not a directory
- * `'FILE'` - Path exists, and is a directory
- * `[file, entries, ...]` - Path exists, is a directory, and the
- array value is the results of `fs.readdir`
-* `statCache` Cache of `fs.stat` results, to prevent statting the same
- path multiple times.
-* `symlinks` A record of which paths are symbolic links, which is
- relevant in resolving `**` patterns.
-* `realpathCache` An optional object which is passed to `fs.realpath`
- to minimize unnecessary syscalls. It is stored on the instantiated
- Glob object, and may be re-used.
-
-### Events
-
-* `end` When the matching is finished, this is emitted with all the
- matches found. If the `nonull` option is set, and no match was found,
- then the `matches` list contains the original pattern. The matches
- are sorted, unless the `nosort` flag is set.
-* `match` Every time a match is found, this is emitted with the matched.
-* `error` Emitted when an unexpected error is encountered, or whenever
- any fs error occurs if `options.strict` is set.
-* `abort` When `abort()` is called, this event is raised.
-
-### Methods
-
-* `pause` Temporarily stop the search
-* `resume` Resume the search
-* `abort` Stop the search forever
-
-### Options
-
-All the options that can be passed to Minimatch can also be passed to
-Glob to change pattern matching behavior. Also, some have been added,
-or have glob-specific ramifications.
-
-All options are false by default, unless otherwise noted.
-
-All options are added to the Glob object, as well.
-
-If you are running many `glob` operations, you can pass a Glob object
-as the `options` argument to a subsequent operation to shortcut some
-`stat` and `readdir` calls. At the very least, you may pass in shared
-`symlinks`, `statCache`, `realpathCache`, and `cache` options, so that
-parallel glob operations will be sped up by sharing information about
-the filesystem.
-
-* `cwd` The current working directory in which to search. Defaults
- to `process.cwd()`.
-* `root` The place where patterns starting with `/` will be mounted
- onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix
- systems, and `C:\` or some such on Windows.)
-* `dot` Include `.dot` files in normal matches and `globstar` matches.
- Note that an explicit dot in a portion of the pattern will always
- match dot files.
-* `nomount` By default, a pattern starting with a forward-slash will be
- "mounted" onto the root setting, so that a valid filesystem path is
- returned. Set this flag to disable that behavior.
-* `mark` Add a `/` character to directory matches. Note that this
- requires additional stat calls.
-* `nosort` Don't sort the results.
-* `stat` Set to true to stat *all* results. This reduces performance
- somewhat, and is completely unnecessary, unless `readdir` is presumed
- to be an untrustworthy indicator of file existence.
-* `silent` When an unusual error is encountered when attempting to
- read a directory, a warning will be printed to stderr. Set the
- `silent` option to true to suppress these warnings.
-* `strict` When an unusual error is encountered when attempting to
- read a directory, the process will just continue on in search of
- other matches. Set the `strict` option to raise an error in these
- cases.
-* `cache` See `cache` property above. Pass in a previously generated
- cache object to save some fs calls.
-* `statCache` A cache of results of filesystem information, to prevent
- unnecessary stat calls. While it should not normally be necessary
- to set this, you may pass the statCache from one glob() call to the
- options object of another, if you know that the filesystem will not
- change between calls. (See "Race Conditions" below.)
-* `symlinks` A cache of known symbolic links. You may pass in a
- previously generated `symlinks` object to save `lstat` calls when
- resolving `**` matches.
-* `sync` DEPRECATED: use `glob.sync(pattern, opts)` instead.
-* `nounique` In some cases, brace-expanded patterns can result in the
- same file showing up multiple times in the result set. By default,
- this implementation prevents duplicates in the result set. Set this
- flag to disable that behavior.
-* `nonull` Set to never return an empty set, instead returning a set
- containing the pattern itself. This is the default in glob(3).
-* `debug` Set to enable debug logging in minimatch and glob.
-* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets.
-* `noglobstar` Do not match `**` against multiple filenames. (Ie,
- treat it as a normal `*` instead.)
-* `noext` Do not match `+(a|b)` "extglob" patterns.
-* `nocase` Perform a case-insensitive match. Note: on
- case-insensitive filesystems, non-magic patterns will match by
- default, since `stat` and `readdir` will not raise errors.
-* `matchBase` Perform a basename-only match if the pattern does not
- contain any slash characters. That is, `*.js` would be treated as
- equivalent to `**/*.js`, matching all js files in all directories.
-* `nodir` Do not match directories, only files. (Note: to match
- *only* directories, simply put a `/` at the end of the pattern.)
-* `ignore` Add a pattern or an array of patterns to exclude matches.
-* `follow` Follow symlinked directories when expanding `**` patterns.
- Note that this can result in a lot of duplicate references in the
- presence of cyclic links.
-* `realpath` Set to true to call `fs.realpath` on all of the results.
- In the case of a symlink that cannot be resolved, the full absolute
- path to the matched entry is returned (though it will usually be a
- broken symlink)
-* `nonegate` Suppress deprecated `negate` behavior. (See below.)
- Default=true
-* `nocomment` Suppress deprecated `comment` behavior. (See below.)
- Default=true
-
-## Comparisons to other fnmatch/glob implementations
-
-While strict compliance with the existing standards is a worthwhile
-goal, some discrepancies exist between node-glob and other
-implementations, and are intentional.
-
-The double-star character `**` is supported by default, unless the
-`noglobstar` flag is set. This is supported in the manner of bsdglob
-and bash 4.3, where `**` only has special significance if it is the only
-thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
-`a/**b` will not.
-
-Note that symlinked directories are not crawled as part of a `**`,
-though their contents may match against subsequent portions of the
-pattern. This prevents infinite loops and duplicates and the like.
-
-If an escaped pattern has no matches, and the `nonull` flag is set,
-then glob returns the pattern as-provided, rather than
-interpreting the character escapes. For example,
-`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
-`"*a?"`. This is akin to setting the `nullglob` option in bash, except
-that it does not resolve escaped pattern characters.
-
-If brace expansion is not disabled, then it is performed before any
-other interpretation of the glob pattern. Thus, a pattern like
-`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
-**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
-checked for validity. Since those two are valid, matching proceeds.
-
-### Comments and Negation
-
-**Note**: In version 5 of this module, negation and comments are
-**disabled** by default. You can explicitly set `nonegate:false` or
-`nocomment:false` to re-enable them. They are going away entirely in
-version 6.
-
-The intent for negation would be for a pattern starting with `!` to
-match everything that *doesn't* match the supplied pattern. However,
-the implementation is weird. It is better to use the `ignore` option
-to set a pattern or set of patterns to exclude from matches. If you
-want the "everything except *x*" type of behavior, you can use `**` as
-the main pattern, and set an `ignore` for the things to exclude.
-
-The comments feature is added in minimatch, primarily to more easily
-support use cases like ignore files, where a `#` at the start of a
-line makes the pattern "empty". However, in the context of a
-straightforward filesystem globber, "comments" don't make much sense.
-
-## Windows
-
-**Please only use forward-slashes in glob expressions.**
-
-Though windows uses either `/` or `\` as its path separator, only `/`
-characters are used by this glob implementation. You must use
-forward-slashes **only** in glob expressions. Back-slashes will always
-be interpreted as escape characters, not path separators.
-
-Results from absolute patterns such as `/foo/*` are mounted onto the
-root setting using `path.join`. On windows, this will by default result
-in `/foo/*` matching `C:\foo\bar.txt`.
-
-## Race Conditions
-
-Glob searching, by its very nature, is susceptible to race conditions,
-since it relies on directory walking and such.
-
-As a result, it is possible that a file that exists when glob looks for
-it may have been deleted or modified by the time it returns the result.
-
-As part of its internal implementation, this program caches all stat
-and readdir calls that it makes, in order to cut down on system
-overhead. However, this also makes it even more susceptible to races,
-especially if the cache or statCache objects are reused between glob
-calls.
-
-Users are thus advised not to use a glob result as a guarantee of
-filesystem state in the face of rapid changes. For the vast majority
-of operations, this is never a problem.
-
-## Contributing
-
-Any change to behavior (including bugfixes) must come with a test.
-
-Patches that fail tests or reduce performance will be rejected.
-
-```
-# to run tests
-npm test
-
-# to re-generate test fixtures
-npm run test-regen
-
-# to benchmark against bash/zsh
-npm run bench
-
-# to profile javascript
-npm run prof
-```
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/common.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/common.js
deleted file mode 100644
index e36a631c..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/common.js
+++ /dev/null
@@ -1,245 +0,0 @@
-exports.alphasort = alphasort
-exports.alphasorti = alphasorti
-exports.setopts = setopts
-exports.ownProp = ownProp
-exports.makeAbs = makeAbs
-exports.finish = finish
-exports.mark = mark
-exports.isIgnored = isIgnored
-exports.childrenIgnored = childrenIgnored
-
-function ownProp (obj, field) {
- return Object.prototype.hasOwnProperty.call(obj, field)
-}
-
-var path = require("path")
-var minimatch = require("minimatch")
-var isAbsolute = require("path-is-absolute")
-var Minimatch = minimatch.Minimatch
-
-function alphasorti (a, b) {
- return a.toLowerCase().localeCompare(b.toLowerCase())
-}
-
-function alphasort (a, b) {
- return a.localeCompare(b)
-}
-
-function setupIgnores (self, options) {
- self.ignore = options.ignore || []
-
- if (!Array.isArray(self.ignore))
- self.ignore = [self.ignore]
-
- if (self.ignore.length) {
- self.ignore = self.ignore.map(ignoreMap)
- }
-}
-
-function ignoreMap (pattern) {
- var gmatcher = null
- if (pattern.slice(-3) === '/**') {
- var gpattern = pattern.replace(/(\/\*\*)+$/, '')
- gmatcher = new Minimatch(gpattern)
- }
-
- return {
- matcher: new Minimatch(pattern),
- gmatcher: gmatcher
- }
-}
-
-function setopts (self, pattern, options) {
- if (!options)
- options = {}
-
- // base-matching: just use globstar for that.
- if (options.matchBase && -1 === pattern.indexOf("/")) {
- if (options.noglobstar) {
- throw new Error("base matching requires globstar")
- }
- pattern = "**/" + pattern
- }
-
- self.silent = !!options.silent
- self.pattern = pattern
- self.strict = options.strict !== false
- self.realpath = !!options.realpath
- self.realpathCache = options.realpathCache || Object.create(null)
- self.follow = !!options.follow
- self.dot = !!options.dot
- self.mark = !!options.mark
- self.nodir = !!options.nodir
- if (self.nodir)
- self.mark = true
- self.sync = !!options.sync
- self.nounique = !!options.nounique
- self.nonull = !!options.nonull
- self.nosort = !!options.nosort
- self.nocase = !!options.nocase
- self.stat = !!options.stat
- self.noprocess = !!options.noprocess
-
- self.maxLength = options.maxLength || Infinity
- self.cache = options.cache || Object.create(null)
- self.statCache = options.statCache || Object.create(null)
- self.symlinks = options.symlinks || Object.create(null)
-
- setupIgnores(self, options)
-
- self.changedCwd = false
- var cwd = process.cwd()
- if (!ownProp(options, "cwd"))
- self.cwd = cwd
- else {
- self.cwd = options.cwd
- self.changedCwd = path.resolve(options.cwd) !== cwd
- }
-
- self.root = options.root || path.resolve(self.cwd, "/")
- self.root = path.resolve(self.root)
- if (process.platform === "win32")
- self.root = self.root.replace(/\\/g, "/")
-
- self.nomount = !!options.nomount
-
- // disable comments and negation unless the user explicitly
- // passes in false as the option.
- options.nonegate = options.nonegate === false ? false : true
- options.nocomment = options.nocomment === false ? false : true
- deprecationWarning(options)
-
- self.minimatch = new Minimatch(pattern, options)
- self.options = self.minimatch.options
-}
-
-// TODO(isaacs): remove entirely in v6
-// exported to reset in tests
-exports.deprecationWarned
-function deprecationWarning(options) {
- if (!options.nonegate || !options.nocomment) {
- if (process.noDeprecation !== true && !exports.deprecationWarned) {
- var msg = 'glob WARNING: comments and negation will be disabled in v6'
- if (process.throwDeprecation)
- throw new Error(msg)
- else if (process.traceDeprecation)
- console.trace(msg)
- else
- console.error(msg)
-
- exports.deprecationWarned = true
- }
- }
-}
-
-function finish (self) {
- var nou = self.nounique
- var all = nou ? [] : Object.create(null)
-
- for (var i = 0, l = self.matches.length; i < l; i ++) {
- var matches = self.matches[i]
- if (!matches || Object.keys(matches).length === 0) {
- if (self.nonull) {
- // do like the shell, and spit out the literal glob
- var literal = self.minimatch.globSet[i]
- if (nou)
- all.push(literal)
- else
- all[literal] = true
- }
- } else {
- // had matches
- var m = Object.keys(matches)
- if (nou)
- all.push.apply(all, m)
- else
- m.forEach(function (m) {
- all[m] = true
- })
- }
- }
-
- if (!nou)
- all = Object.keys(all)
-
- if (!self.nosort)
- all = all.sort(self.nocase ? alphasorti : alphasort)
-
- // at *some* point we statted all of these
- if (self.mark) {
- for (var i = 0; i < all.length; i++) {
- all[i] = self._mark(all[i])
- }
- if (self.nodir) {
- all = all.filter(function (e) {
- return !(/\/$/.test(e))
- })
- }
- }
-
- if (self.ignore.length)
- all = all.filter(function(m) {
- return !isIgnored(self, m)
- })
-
- self.found = all
-}
-
-function mark (self, p) {
- var abs = makeAbs(self, p)
- var c = self.cache[abs]
- var m = p
- if (c) {
- var isDir = c === 'DIR' || Array.isArray(c)
- var slash = p.slice(-1) === '/'
-
- if (isDir && !slash)
- m += '/'
- else if (!isDir && slash)
- m = m.slice(0, -1)
-
- if (m !== p) {
- var mabs = makeAbs(self, m)
- self.statCache[mabs] = self.statCache[abs]
- self.cache[mabs] = self.cache[abs]
- }
- }
-
- return m
-}
-
-// lotta situps...
-function makeAbs (self, f) {
- var abs = f
- if (f.charAt(0) === '/') {
- abs = path.join(self.root, f)
- } else if (isAbsolute(f) || f === '') {
- abs = f
- } else if (self.changedCwd) {
- abs = path.resolve(self.cwd, f)
- } else {
- abs = path.resolve(f)
- }
- return abs
-}
-
-
-// Return true, if pattern ends with globstar '**', for the accompanying parent directory.
-// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
-function isIgnored (self, path) {
- if (!self.ignore.length)
- return false
-
- return self.ignore.some(function(item) {
- return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
- })
-}
-
-function childrenIgnored (self, path) {
- if (!self.ignore.length)
- return false
-
- return self.ignore.some(function(item) {
- return !!(item.gmatcher && item.gmatcher.match(path))
- })
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/glob.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/glob.js
deleted file mode 100644
index 022d2ac8..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/glob.js
+++ /dev/null
@@ -1,752 +0,0 @@
-// Approach:
-//
-// 1. Get the minimatch set
-// 2. For each pattern in the set, PROCESS(pattern, false)
-// 3. Store matches per-set, then uniq them
-//
-// PROCESS(pattern, inGlobStar)
-// Get the first [n] items from pattern that are all strings
-// Join these together. This is PREFIX.
-// If there is no more remaining, then stat(PREFIX) and
-// add to matches if it succeeds. END.
-//
-// If inGlobStar and PREFIX is symlink and points to dir
-// set ENTRIES = []
-// else readdir(PREFIX) as ENTRIES
-// If fail, END
-//
-// with ENTRIES
-// If pattern[n] is GLOBSTAR
-// // handle the case where the globstar match is empty
-// // by pruning it out, and testing the resulting pattern
-// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
-// // handle other cases.
-// for ENTRY in ENTRIES (not dotfiles)
-// // attach globstar + tail onto the entry
-// // Mark that this entry is a globstar match
-// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
-//
-// else // not globstar
-// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
-// Test ENTRY against pattern[n]
-// If fails, continue
-// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
-//
-// Caveat:
-// Cache all stats and readdirs results to minimize syscall. Since all
-// we ever care about is existence and directory-ness, we can just keep
-// `true` for files, and [children,...] for directories, or `false` for
-// things that don't exist.
-
-module.exports = glob
-
-var fs = require('fs')
-var minimatch = require('minimatch')
-var Minimatch = minimatch.Minimatch
-var inherits = require('inherits')
-var EE = require('events').EventEmitter
-var path = require('path')
-var assert = require('assert')
-var isAbsolute = require('path-is-absolute')
-var globSync = require('./sync.js')
-var common = require('./common.js')
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
-var setopts = common.setopts
-var ownProp = common.ownProp
-var inflight = require('inflight')
-var util = require('util')
-var childrenIgnored = common.childrenIgnored
-var isIgnored = common.isIgnored
-
-var once = require('once')
-
-function glob (pattern, options, cb) {
- if (typeof options === 'function') cb = options, options = {}
- if (!options) options = {}
-
- if (options.sync) {
- if (cb)
- throw new TypeError('callback provided to sync glob')
- return globSync(pattern, options)
- }
-
- return new Glob(pattern, options, cb)
-}
-
-glob.sync = globSync
-var GlobSync = glob.GlobSync = globSync.GlobSync
-
-// old api surface
-glob.glob = glob
-
-glob.hasMagic = function (pattern, options_) {
- var options = util._extend({}, options_)
- options.noprocess = true
-
- var g = new Glob(pattern, options)
- var set = g.minimatch.set
- if (set.length > 1)
- return true
-
- for (var j = 0; j < set[0].length; j++) {
- if (typeof set[0][j] !== 'string')
- return true
- }
-
- return false
-}
-
-glob.Glob = Glob
-inherits(Glob, EE)
-function Glob (pattern, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = null
- }
-
- if (options && options.sync) {
- if (cb)
- throw new TypeError('callback provided to sync glob')
- return new GlobSync(pattern, options)
- }
-
- if (!(this instanceof Glob))
- return new Glob(pattern, options, cb)
-
- setopts(this, pattern, options)
- this._didRealPath = false
-
- // process each pattern in the minimatch set
- var n = this.minimatch.set.length
-
- // The matches are stored as {: true,...} so that
- // duplicates are automagically pruned.
- // Later, we do an Object.keys() on these.
- // Keep them as a list so we can fill in when nonull is set.
- this.matches = new Array(n)
-
- if (typeof cb === 'function') {
- cb = once(cb)
- this.on('error', cb)
- this.on('end', function (matches) {
- cb(null, matches)
- })
- }
-
- var self = this
- var n = this.minimatch.set.length
- this._processing = 0
- this.matches = new Array(n)
-
- this._emitQueue = []
- this._processQueue = []
- this.paused = false
-
- if (this.noprocess)
- return this
-
- if (n === 0)
- return done()
-
- for (var i = 0; i < n; i ++) {
- this._process(this.minimatch.set[i], i, false, done)
- }
-
- function done () {
- --self._processing
- if (self._processing <= 0)
- self._finish()
- }
-}
-
-Glob.prototype._finish = function () {
- assert(this instanceof Glob)
- if (this.aborted)
- return
-
- if (this.realpath && !this._didRealpath)
- return this._realpath()
-
- common.finish(this)
- this.emit('end', this.found)
-}
-
-Glob.prototype._realpath = function () {
- if (this._didRealpath)
- return
-
- this._didRealpath = true
-
- var n = this.matches.length
- if (n === 0)
- return this._finish()
-
- var self = this
- for (var i = 0; i < this.matches.length; i++)
- this._realpathSet(i, next)
-
- function next () {
- if (--n === 0)
- self._finish()
- }
-}
-
-Glob.prototype._realpathSet = function (index, cb) {
- var matchset = this.matches[index]
- if (!matchset)
- return cb()
-
- var found = Object.keys(matchset)
- var self = this
- var n = found.length
-
- if (n === 0)
- return cb()
-
- var set = this.matches[index] = Object.create(null)
- found.forEach(function (p, i) {
- // If there's a problem with the stat, then it means that
- // one or more of the links in the realpath couldn't be
- // resolved. just return the abs value in that case.
- p = self._makeAbs(p)
- fs.realpath(p, self.realpathCache, function (er, real) {
- if (!er)
- set[real] = true
- else if (er.syscall === 'stat')
- set[p] = true
- else
- self.emit('error', er) // srsly wtf right here
-
- if (--n === 0) {
- self.matches[index] = set
- cb()
- }
- })
- })
-}
-
-Glob.prototype._mark = function (p) {
- return common.mark(this, p)
-}
-
-Glob.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
-}
-
-Glob.prototype.abort = function () {
- this.aborted = true
- this.emit('abort')
-}
-
-Glob.prototype.pause = function () {
- if (!this.paused) {
- this.paused = true
- this.emit('pause')
- }
-}
-
-Glob.prototype.resume = function () {
- if (this.paused) {
- this.emit('resume')
- this.paused = false
- if (this._emitQueue.length) {
- var eq = this._emitQueue.slice(0)
- this._emitQueue.length = 0
- for (var i = 0; i < eq.length; i ++) {
- var e = eq[i]
- this._emitMatch(e[0], e[1])
- }
- }
- if (this._processQueue.length) {
- var pq = this._processQueue.slice(0)
- this._processQueue.length = 0
- for (var i = 0; i < pq.length; i ++) {
- var p = pq[i]
- this._processing--
- this._process(p[0], p[1], p[2], p[3])
- }
- }
- }
-}
-
-Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
- assert(this instanceof Glob)
- assert(typeof cb === 'function')
-
- if (this.aborted)
- return
-
- this._processing++
- if (this.paused) {
- this._processQueue.push([pattern, index, inGlobStar, cb])
- return
- }
-
- //console.error('PROCESS %d', this._processing, pattern)
-
- // Get the first [n] parts of pattern that are all strings.
- var n = 0
- while (typeof pattern[n] === 'string') {
- n ++
- }
- // now n is the index of the first one that is *not* a string.
-
- // see if there's anything else
- var prefix
- switch (n) {
- // if not, then this is rather simple
- case pattern.length:
- this._processSimple(pattern.join('/'), index, cb)
- return
-
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
-
- default:
- // pattern has some string bits in the front.
- // whatever it starts with, whether that's 'absolute' like /foo/bar,
- // or 'relative' like '../baz'
- prefix = pattern.slice(0, n).join('/')
- break
- }
-
- var remain = pattern.slice(n)
-
- // get the list of entries.
- var read
- if (prefix === null)
- read = '.'
- else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
- if (!prefix || !isAbsolute(prefix))
- prefix = '/' + prefix
- read = prefix
- } else
- read = prefix
-
- var abs = this._makeAbs(read)
-
- //if ignored, skip _processing
- if (childrenIgnored(this, read))
- return cb()
-
- var isGlobStar = remain[0] === minimatch.GLOBSTAR
- if (isGlobStar)
- this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)
- else
- this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)
-}
-
-Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
- var self = this
- this._readdir(abs, inGlobStar, function (er, entries) {
- return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
- })
-}
-
-Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
-
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return cb()
-
- // It will only match dot entries if it starts with a dot, or if
- // dot is set. Stuff like @(.foo|.bar) isn't allowed.
- var pn = remain[0]
- var negate = !!this.minimatch.negate
- var rawGlob = pn._glob
- var dotOk = this.dot || rawGlob.charAt(0) === '.'
-
- var matchedEntries = []
- for (var i = 0; i < entries.length; i++) {
- var e = entries[i]
- if (e.charAt(0) !== '.' || dotOk) {
- var m
- if (negate && !prefix) {
- m = !e.match(pn)
- } else {
- m = e.match(pn)
- }
- if (m)
- matchedEntries.push(e)
- }
- }
-
- //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
-
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return cb()
-
- // if this is the last remaining pattern bit, then no need for
- // an additional stat *unless* the user has specified mark or
- // stat explicitly. We know they exist, since readdir returned
- // them.
-
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
-
- if (e.charAt(0) === '/' && !this.nomount) {
- e = path.join(this.root, e)
- }
- this._emitMatch(index, e)
- }
- // This was the last one, and no stats were needed
- return cb()
- }
-
- // now test all matched entries as stand-ins for that part
- // of the pattern.
- remain.shift()
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- var newPattern
- if (prefix) {
- if (prefix !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
- this._process([e].concat(remain), index, inGlobStar, cb)
- }
- cb()
-}
-
-Glob.prototype._emitMatch = function (index, e) {
- if (this.aborted)
- return
-
- if (this.matches[index][e])
- return
-
- if (isIgnored(this, e))
- return
-
- if (this.paused) {
- this._emitQueue.push([index, e])
- return
- }
-
- var abs = this._makeAbs(e)
-
- if (this.nodir) {
- var c = this.cache[abs]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
-
- if (this.mark)
- e = this._mark(e)
-
- this.matches[index][e] = true
-
- var st = this.statCache[abs]
- if (st)
- this.emit('stat', e, st)
-
- this.emit('match', e)
-}
-
-Glob.prototype._readdirInGlobStar = function (abs, cb) {
- if (this.aborted)
- return
-
- // follow all symlinked directories forever
- // just proceed as if this is a non-globstar situation
- if (this.follow)
- return this._readdir(abs, false, cb)
-
- var lstatkey = 'lstat\0' + abs
- var self = this
- var lstatcb = inflight(lstatkey, lstatcb_)
-
- if (lstatcb)
- fs.lstat(abs, lstatcb)
-
- function lstatcb_ (er, lstat) {
- if (er)
- return cb()
-
- var isSym = lstat.isSymbolicLink()
- self.symlinks[abs] = isSym
-
- // If it's not a symlink or a dir, then it's definitely a regular file.
- // don't bother doing a readdir in that case.
- if (!isSym && !lstat.isDirectory()) {
- self.cache[abs] = 'FILE'
- cb()
- } else
- self._readdir(abs, false, cb)
- }
-}
-
-Glob.prototype._readdir = function (abs, inGlobStar, cb) {
- if (this.aborted)
- return
-
- cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb)
- if (!cb)
- return
-
- //console.error('RD %j %j', +inGlobStar, abs)
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs, cb)
-
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return cb()
-
- if (Array.isArray(c))
- return cb(null, c)
- }
-
- var self = this
- fs.readdir(abs, readdirCb(this, abs, cb))
-}
-
-function readdirCb (self, abs, cb) {
- return function (er, entries) {
- if (er)
- self._readdirError(abs, er, cb)
- else
- self._readdirEntries(abs, entries, cb)
- }
-}
-
-Glob.prototype._readdirEntries = function (abs, entries, cb) {
- if (this.aborted)
- return
-
- // if we haven't asked to stat everything, then just
- // assume that everything in there exists, so we can avoid
- // having to stat it a second time.
- if (!this.mark && !this.stat) {
- for (var i = 0; i < entries.length; i ++) {
- var e = entries[i]
- if (abs === '/')
- e = abs + e
- else
- e = abs + '/' + e
- this.cache[e] = true
- }
- }
-
- this.cache[abs] = entries
- return cb(null, entries)
-}
-
-Glob.prototype._readdirError = function (f, er, cb) {
- if (this.aborted)
- return
-
- // handle errors, and cache the information
- switch (er.code) {
- case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
- case 'ENOTDIR': // totally normal. means it *does* exist.
- this.cache[this._makeAbs(f)] = 'FILE'
- break
-
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
-
- default: // some unusual error. Treat as failure.
- this.cache[this._makeAbs(f)] = false
- if (this.strict) {
- this.emit('error', er)
- // If the error is handled, then we abort
- // if not, we threw out of here
- this.abort()
- }
- if (!this.silent)
- console.error('glob error', er)
- break
- }
-
- return cb()
-}
-
-Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
- var self = this
- this._readdir(abs, inGlobStar, function (er, entries) {
- self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)
- })
-}
-
-
-Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
- //console.error('pgs2', prefix, remain[0], entries)
-
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return cb()
-
- // test without the globstar, and with every child both below
- // and replacing the globstar.
- var remainWithoutGlobStar = remain.slice(1)
- var gspref = prefix ? [ prefix ] : []
- var noGlobStar = gspref.concat(remainWithoutGlobStar)
-
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false, cb)
-
- var isSym = this.symlinks[abs]
- var len = entries.length
-
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return cb()
-
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
-
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true, cb)
-
- var below = gspref.concat(entries[i], remain)
- this._process(below, index, true, cb)
- }
-
- cb()
-}
-
-Glob.prototype._processSimple = function (prefix, index, cb) {
- // XXX review this. Shouldn't it be doing the mounting etc
- // before doing stat? kinda weird?
- var self = this
- this._stat(prefix, function (er, exists) {
- self._processSimple2(prefix, index, er, exists, cb)
- })
-}
-Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
-
- //console.error('ps2', prefix, exists)
-
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- // If it doesn't exist, then just mark the lack of results
- if (!exists)
- return cb()
-
- if (prefix && isAbsolute(prefix) && !this.nomount) {
- var trail = /[\/\\]$/.test(prefix)
- if (prefix.charAt(0) === '/') {
- prefix = path.join(this.root, prefix)
- } else {
- prefix = path.resolve(this.root, prefix)
- if (trail)
- prefix += '/'
- }
- }
-
- if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
-
- // Mark this as a match
- this._emitMatch(index, prefix)
- cb()
-}
-
-// Returns either 'DIR', 'FILE', or false
-Glob.prototype._stat = function (f, cb) {
- var abs = this._makeAbs(f)
- var needDir = f.slice(-1) === '/'
-
- if (f.length > this.maxLength)
- return cb()
-
- if (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
-
- if (Array.isArray(c))
- c = 'DIR'
-
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return cb(null, c)
-
- if (needDir && c === 'FILE')
- return cb()
-
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
-
- var exists
- var stat = this.statCache[abs]
- if (stat !== undefined) {
- if (stat === false)
- return cb(null, stat)
- else {
- var type = stat.isDirectory() ? 'DIR' : 'FILE'
- if (needDir && type === 'FILE')
- return cb()
- else
- return cb(null, type, stat)
- }
- }
-
- var self = this
- var statcb = inflight('stat\0' + abs, lstatcb_)
- if (statcb)
- fs.lstat(abs, statcb)
-
- function lstatcb_ (er, lstat) {
- if (lstat && lstat.isSymbolicLink()) {
- // If it's a symlink, then treat it as the target, unless
- // the target does not exist, then treat it as a file.
- return fs.stat(abs, function (er, stat) {
- if (er)
- self._stat2(f, abs, null, lstat, cb)
- else
- self._stat2(f, abs, er, stat, cb)
- })
- } else {
- self._stat2(f, abs, er, lstat, cb)
- }
- }
-}
-
-Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
- if (er) {
- this.statCache[abs] = false
- return cb()
- }
-
- var needDir = f.slice(-1) === '/'
- this.statCache[abs] = stat
-
- if (abs.slice(-1) === '/' && !stat.isDirectory())
- return cb(null, false, stat)
-
- var c = stat.isDirectory() ? 'DIR' : 'FILE'
- this.cache[abs] = this.cache[abs] || c
-
- if (needDir && c !== 'DIR')
- return cb()
-
- return cb(null, c, stat)
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/.eslintrc b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/.eslintrc
deleted file mode 100644
index b7a1550e..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/.eslintrc
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "env" : {
- "node" : true
- },
- "rules" : {
- "semi": [2, "never"],
- "strict": 0,
- "quotes": [1, "single", "avoid-escape"],
- "no-use-before-define": 0,
- "curly": 0,
- "no-underscore-dangle": 0,
- "no-lonely-if": 1,
- "no-unused-vars": [2, {"vars" : "all", "args" : "after-used"}],
- "no-mixed-requires": 0,
- "space-infix-ops": 0
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/LICENSE
deleted file mode 100644
index 05eeeb88..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/README.md
deleted file mode 100644
index 6dc89291..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# inflight
-
-Add callbacks to requests in flight to avoid async duplication
-
-## USAGE
-
-```javascript
-var inflight = require('inflight')
-
-// some request that does some stuff
-function req(key, callback) {
- // key is any random string. like a url or filename or whatever.
- //
- // will return either a falsey value, indicating that the
- // request for this key is already in flight, or a new callback
- // which when called will call all callbacks passed to inflightk
- // with the same key
- callback = inflight(key, callback)
-
- // If we got a falsey value back, then there's already a req going
- if (!callback) return
-
- // this is where you'd fetch the url or whatever
- // callback is also once()-ified, so it can safely be assigned
- // to multiple events etc. First call wins.
- setTimeout(function() {
- callback(null, key)
- }, 100)
-}
-
-// only assigns a single setTimeout
-// when it dings, all cbs get called
-req('foo', cb1)
-req('foo', cb2)
-req('foo', cb3)
-req('foo', cb4)
-```
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/inflight.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/inflight.js
deleted file mode 100644
index 8bc96cbd..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/inflight.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var wrappy = require('wrappy')
-var reqs = Object.create(null)
-var once = require('once')
-
-module.exports = wrappy(inflight)
-
-function inflight (key, cb) {
- if (reqs[key]) {
- reqs[key].push(cb)
- return null
- } else {
- reqs[key] = [cb]
- return makeres(key)
- }
-}
-
-function makeres (key) {
- return once(function RES () {
- var cbs = reqs[key]
- var len = cbs.length
- var args = slice(arguments)
- for (var i = 0; i < len; i++) {
- cbs[i].apply(null, args)
- }
- if (cbs.length > len) {
- // added more in the interim.
- // de-zalgo, just in case, but don't call again.
- cbs.splice(0, len)
- process.nextTick(function () {
- RES.apply(null, args)
- })
- } else {
- delete reqs[key]
- }
- })
-}
-
-function slice (args) {
- var length = args.length
- var array = []
-
- for (var i = 0; i < length; i++) array[i] = args[i]
- return array
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE
deleted file mode 100644
index 19129e31..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md
deleted file mode 100644
index 98eab252..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# wrappy
-
-Callback wrapping utility
-
-## USAGE
-
-```javascript
-var wrappy = require("wrappy")
-
-// var wrapper = wrappy(wrapperFunction)
-
-// make sure a cb is called only once
-// See also: http://npm.im/once for this specific use case
-var once = wrappy(function (cb) {
- var called = false
- return function () {
- if (called) return
- called = true
- return cb.apply(this, arguments)
- }
-})
-
-function printBoo () {
- console.log('boo')
-}
-// has some rando property
-printBoo.iAmBooPrinter = true
-
-var onlyPrintOnce = once(printBoo)
-
-onlyPrintOnce() // prints 'boo'
-onlyPrintOnce() // does nothing
-
-// random property is retained!
-assert.equal(onlyPrintOnce.iAmBooPrinter, true)
-```
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json
deleted file mode 100644
index 5a07040a..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "wrappy",
- "version": "1.0.1",
- "description": "Callback wrapping utility",
- "main": "wrappy.js",
- "directories": {
- "test": "test"
- },
- "dependencies": {},
- "devDependencies": {
- "tap": "^0.4.12"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/npm/wrappy.git"
- },
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/npm/wrappy/issues"
- },
- "homepage": "https://github.com/npm/wrappy",
- "gitHead": "006a8cbac6b99988315834c207896eed71fd069a",
- "_id": "wrappy@1.0.1",
- "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
- "_from": "wrappy@>=1.0.0 <2.0.0",
- "_npmVersion": "2.0.0",
- "_nodeVersion": "0.10.31",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "dist": {
- "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
- "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
- },
- "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js
deleted file mode 100644
index 5ed0fcdf..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var test = require('tap').test
-var wrappy = require('../wrappy.js')
-
-test('basic', function (t) {
- function onceifier (cb) {
- var called = false
- return function () {
- if (called) return
- called = true
- return cb.apply(this, arguments)
- }
- }
- onceifier.iAmOnce = {}
- var once = wrappy(onceifier)
- t.equal(once.iAmOnce, onceifier.iAmOnce)
-
- var called = 0
- function boo () {
- t.equal(called, 0)
- called++
- }
- // has some rando property
- boo.iAmBoo = true
-
- var onlyPrintOnce = once(boo)
-
- onlyPrintOnce() // prints 'boo'
- onlyPrintOnce() // does nothing
- t.equal(called, 1)
-
- // random property is retained!
- t.equal(onlyPrintOnce.iAmBoo, true)
-
- var logs = []
- var logwrap = wrappy(function (msg, cb) {
- logs.push(msg + ' wrapping cb')
- return function () {
- logs.push(msg + ' before cb')
- var ret = cb.apply(this, arguments)
- logs.push(msg + ' after cb')
- }
- })
-
- var c = logwrap('foo', function () {
- t.same(logs, [ 'foo wrapping cb', 'foo before cb' ])
- })
- c()
- t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ])
-
- t.end()
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js
deleted file mode 100644
index bb7e7d6f..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Returns a wrapper function that returns a wrapped callback
-// The wrapper function should do some stuff, and return a
-// presumably different callback function.
-// This makes sure that own properties are retained, so that
-// decorations and such are not lost along the way.
-module.exports = wrappy
-function wrappy (fn, cb) {
- if (fn && cb) return wrappy(fn)(cb)
-
- if (typeof fn !== 'function')
- throw new TypeError('need wrapper function')
-
- Object.keys(fn).forEach(function (k) {
- wrapper[k] = fn[k]
- })
-
- return wrapper
-
- function wrapper() {
- var args = new Array(arguments.length)
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i]
- }
- var ret = fn.apply(this, args)
- var cb = args[args.length-1]
- if (typeof ret === 'function' && ret !== cb) {
- Object.keys(cb).forEach(function (k) {
- ret[k] = cb[k]
- })
- }
- return ret
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/package.json
deleted file mode 100644
index fd0da2da..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/package.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "name": "inflight",
- "version": "1.0.4",
- "description": "Add callbacks to requests in flight to avoid async duplication",
- "main": "inflight.js",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- },
- "devDependencies": {
- "tap": "^0.4.10"
- },
- "scripts": {
- "test": "tap test.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/inflight.git"
- },
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "bugs": {
- "url": "https://github.com/isaacs/inflight/issues"
- },
- "homepage": "https://github.com/isaacs/inflight",
- "license": "ISC",
- "gitHead": "c7b5531d572a867064d4a1da9e013e8910b7d1ba",
- "_id": "inflight@1.0.4",
- "_shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
- "_from": "inflight@>=1.0.4 <2.0.0",
- "_npmVersion": "2.1.3",
- "_nodeVersion": "0.10.32",
- "_npmUser": {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- {
- "name": "othiym23",
- "email": "ogd@aoaioxxysz.net"
- },
- {
- "name": "iarna",
- "email": "me@re-becca.org"
- }
- ],
- "dist": {
- "shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
- "tarball": "http://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/test.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/test.js
deleted file mode 100644
index 2bb75b38..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/inflight/test.js
+++ /dev/null
@@ -1,97 +0,0 @@
-var test = require('tap').test
-var inf = require('./inflight.js')
-
-
-function req (key, cb) {
- cb = inf(key, cb)
- if (cb) setTimeout(function () {
- cb(key)
- cb(key)
- })
- return cb
-}
-
-test('basic', function (t) {
- var calleda = false
- var a = req('key', function (k) {
- t.notOk(calleda)
- calleda = true
- t.equal(k, 'key')
- if (calledb) t.end()
- })
- t.ok(a, 'first returned cb function')
-
- var calledb = false
- var b = req('key', function (k) {
- t.notOk(calledb)
- calledb = true
- t.equal(k, 'key')
- if (calleda) t.end()
- })
-
- t.notOk(b, 'second should get falsey inflight response')
-})
-
-test('timing', function (t) {
- var expect = [
- 'method one',
- 'start one',
- 'end one',
- 'two',
- 'tick',
- 'three'
- ]
- var i = 0
-
- function log (m) {
- t.equal(m, expect[i], m + ' === ' + expect[i])
- ++i
- if (i === expect.length)
- t.end()
- }
-
- function method (name, cb) {
- log('method ' + name)
- process.nextTick(cb)
- }
-
- var one = inf('foo', function () {
- log('start one')
- var three = inf('foo', function () {
- log('three')
- })
- if (three) method('three', three)
- log('end one')
- })
-
- method('one', one)
-
- var two = inf('foo', function () {
- log('two')
- })
- if (two) method('one', two)
-
- process.nextTick(log.bind(null, 'tick'))
-})
-
-test('parameters', function (t) {
- t.plan(8)
-
- var a = inf('key', function (first, second, third) {
- t.equal(first, 1)
- t.equal(second, 2)
- t.equal(third, 3)
- })
- t.ok(a, 'first returned cb function')
-
- var b = inf('key', function (first, second, third) {
- t.equal(first, 1)
- t.equal(second, 2)
- t.equal(third, 3)
- })
- t.notOk(b, 'second should get falsey inflight response')
-
- setTimeout(function () {
- a(1, 2, 3)
- })
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/LICENSE
deleted file mode 100644
index 19129e31..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/README.md
deleted file mode 100644
index d458bc2e..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/README.md
+++ /dev/null
@@ -1,216 +0,0 @@
-# minimatch
-
-A minimal matching utility.
-
-[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)
-
-
-This is the matching library used internally by npm.
-
-It works by converting glob expressions into JavaScript `RegExp`
-objects.
-
-## Usage
-
-```javascript
-var minimatch = require("minimatch")
-
-minimatch("bar.foo", "*.foo") // true!
-minimatch("bar.foo", "*.bar") // false!
-minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy!
-```
-
-## Features
-
-Supports these glob features:
-
-* Brace Expansion
-* Extended glob matching
-* "Globstar" `**` matching
-
-See:
-
-* `man sh`
-* `man bash`
-* `man 3 fnmatch`
-* `man 5 gitignore`
-
-## Minimatch Class
-
-Create a minimatch object by instanting the `minimatch.Minimatch` class.
-
-```javascript
-var Minimatch = require("minimatch").Minimatch
-var mm = new Minimatch(pattern, options)
-```
-
-### Properties
-
-* `pattern` The original pattern the minimatch object represents.
-* `options` The options supplied to the constructor.
-* `set` A 2-dimensional array of regexp or string expressions.
- Each row in the
- array corresponds to a brace-expanded pattern. Each item in the row
- corresponds to a single path-part. For example, the pattern
- `{a,b/c}/d` would expand to a set of patterns like:
-
- [ [ a, d ]
- , [ b, c, d ] ]
-
- If a portion of the pattern doesn't have any "magic" in it
- (that is, it's something like `"foo"` rather than `fo*o?`), then it
- will be left as a string rather than converted to a regular
- expression.
-
-* `regexp` Created by the `makeRe` method. A single regular expression
- expressing the entire pattern. This is useful in cases where you wish
- to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.
-* `negate` True if the pattern is negated.
-* `comment` True if the pattern is a comment.
-* `empty` True if the pattern is `""`.
-
-### Methods
-
-* `makeRe` Generate the `regexp` member if necessary, and return it.
- Will return `false` if the pattern is invalid.
-* `match(fname)` Return true if the filename matches the pattern, or
- false otherwise.
-* `matchOne(fileArray, patternArray, partial)` Take a `/`-split
- filename, and match it against a single row in the `regExpSet`. This
- method is mainly for internal use, but is exposed so that it can be
- used by a glob-walker that needs to avoid excessive filesystem calls.
-
-All other methods are internal, and will be called as necessary.
-
-## Functions
-
-The top-level exported function has a `cache` property, which is an LRU
-cache set to store 100 items. So, calling these methods repeatedly
-with the same pattern and options will use the same Minimatch object,
-saving the cost of parsing it multiple times.
-
-### minimatch(path, pattern, options)
-
-Main export. Tests a path against the pattern using the options.
-
-```javascript
-var isJS = minimatch(file, "*.js", { matchBase: true })
-```
-
-### minimatch.filter(pattern, options)
-
-Returns a function that tests its
-supplied argument, suitable for use with `Array.filter`. Example:
-
-```javascript
-var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true}))
-```
-
-### minimatch.match(list, pattern, options)
-
-Match against the list of
-files, in the style of fnmatch or glob. If nothing is matched, and
-options.nonull is set, then return a list containing the pattern itself.
-
-```javascript
-var javascripts = minimatch.match(fileList, "*.js", {matchBase: true}))
-```
-
-### minimatch.makeRe(pattern, options)
-
-Make a regular expression object from the pattern.
-
-## Options
-
-All options are `false` by default.
-
-### debug
-
-Dump a ton of stuff to stderr.
-
-### nobrace
-
-Do not expand `{a,b}` and `{1..3}` brace sets.
-
-### noglobstar
-
-Disable `**` matching against multiple folder names.
-
-### dot
-
-Allow patterns to match filenames starting with a period, even if
-the pattern does not explicitly have a period in that spot.
-
-Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`
-is set.
-
-### noext
-
-Disable "extglob" style patterns like `+(a|b)`.
-
-### nocase
-
-Perform a case-insensitive match.
-
-### nonull
-
-When a match is not found by `minimatch.match`, return a list containing
-the pattern itself if this option is set. When not set, an empty list
-is returned if there are no matches.
-
-### matchBase
-
-If set, then patterns without slashes will be matched
-against the basename of the path if it contains slashes. For example,
-`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.
-
-### nocomment
-
-Suppress the behavior of treating `#` at the start of a pattern as a
-comment.
-
-### nonegate
-
-Suppress the behavior of treating a leading `!` character as negation.
-
-### flipNegate
-
-Returns from negate expressions the same as if they were not negated.
-(Ie, true on a hit, false on a miss.)
-
-
-## Comparisons to other fnmatch/glob implementations
-
-While strict compliance with the existing standards is a worthwhile
-goal, some discrepancies exist between minimatch and other
-implementations, and are intentional.
-
-If the pattern starts with a `!` character, then it is negated. Set the
-`nonegate` flag to suppress this behavior, and treat leading `!`
-characters normally. This is perhaps relevant if you wish to start the
-pattern with a negative extglob pattern like `!(a|B)`. Multiple `!`
-characters at the start of a pattern will negate the pattern multiple
-times.
-
-If a pattern starts with `#`, then it is treated as a comment, and
-will not match anything. Use `\#` to match a literal `#` at the
-start of a line, or set the `nocomment` flag to suppress this behavior.
-
-The double-star character `**` is supported by default, unless the
-`noglobstar` flag is set. This is supported in the manner of bsdglob
-and bash 4.1, where `**` only has special significance if it is the only
-thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
-`a/**b` will not.
-
-If an escaped pattern has no matches, and the `nonull` flag is set,
-then minimatch.match returns the pattern as-provided, rather than
-interpreting the character escapes. For example,
-`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
-`"*a?"`. This is akin to setting the `nullglob` option in bash, except
-that it does not resolve escaped pattern characters.
-
-If brace expansion is not disabled, then it is performed before any
-other interpretation of the glob pattern. Thus, a pattern like
-`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
-**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
-checked for validity. Since those two are valid, matching proceeds.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/browser.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/browser.js
deleted file mode 100644
index 7d051592..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/browser.js
+++ /dev/null
@@ -1,1159 +0,0 @@
-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.minimatch = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o any number of characters
-var star = qmark + '*?'
-
-// ** when dots are allowed. Anything goes, except .. and .
-// not (^ or / followed by one or two dots followed by $ or /),
-// followed by anything, any number of times.
-var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'
-
-// not a ^ or / followed by a dot,
-// followed by anything, any number of times.
-var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
-
-// characters that need to be escaped in RegExp.
-var reSpecials = charSet('().*{}+?[]^$\\!')
-
-// "abc" -> { a:true, b:true, c:true }
-function charSet (s) {
- return s.split('').reduce(function (set, c) {
- set[c] = true
- return set
- }, {})
-}
-
-// normalizes slashes.
-var slashSplit = /\/+/
-
-minimatch.filter = filter
-function filter (pattern, options) {
- options = options || {}
- return function (p, i, list) {
- return minimatch(p, pattern, options)
- }
-}
-
-function ext (a, b) {
- a = a || {}
- b = b || {}
- var t = {}
- Object.keys(b).forEach(function (k) {
- t[k] = b[k]
- })
- Object.keys(a).forEach(function (k) {
- t[k] = a[k]
- })
- return t
-}
-
-minimatch.defaults = function (def) {
- if (!def || !Object.keys(def).length) return minimatch
-
- var orig = minimatch
-
- var m = function minimatch (p, pattern, options) {
- return orig.minimatch(p, pattern, ext(def, options))
- }
-
- m.Minimatch = function Minimatch (pattern, options) {
- return new orig.Minimatch(pattern, ext(def, options))
- }
-
- return m
-}
-
-Minimatch.defaults = function (def) {
- if (!def || !Object.keys(def).length) return Minimatch
- return minimatch.defaults(def).Minimatch
-}
-
-function minimatch (p, pattern, options) {
- if (typeof pattern !== 'string') {
- throw new TypeError('glob pattern string required')
- }
-
- if (!options) options = {}
-
- // shortcut: comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === '#') {
- return false
- }
-
- // "" only matches ""
- if (pattern.trim() === '') return p === ''
-
- return new Minimatch(pattern, options).match(p)
-}
-
-function Minimatch (pattern, options) {
- if (!(this instanceof Minimatch)) {
- return new Minimatch(pattern, options)
- }
-
- if (typeof pattern !== 'string') {
- throw new TypeError('glob pattern string required')
- }
-
- if (!options) options = {}
- pattern = pattern.trim()
-
- // windows support: need to use /, not \
- if (path.sep !== '/') {
- pattern = pattern.split(path.sep).join('/')
- }
-
- this.options = options
- this.set = []
- this.pattern = pattern
- this.regexp = null
- this.negate = false
- this.comment = false
- this.empty = false
-
- // make the set of regexps etc.
- this.make()
-}
-
-Minimatch.prototype.debug = function () {}
-
-Minimatch.prototype.make = make
-function make () {
- // don't do it more than once.
- if (this._made) return
-
- var pattern = this.pattern
- var options = this.options
-
- // empty patterns and comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === '#') {
- this.comment = true
- return
- }
- if (!pattern) {
- this.empty = true
- return
- }
-
- // step 1: figure out negation, etc.
- this.parseNegate()
-
- // step 2: expand braces
- var set = this.globSet = this.braceExpand()
-
- if (options.debug) this.debug = console.error
-
- this.debug(this.pattern, set)
-
- // step 3: now we have a set, so turn each one into a series of path-portion
- // matching patterns.
- // These will be regexps, except in the case of "**", which is
- // set to the GLOBSTAR object for globstar behavior,
- // and will not contain any / characters
- set = this.globParts = set.map(function (s) {
- return s.split(slashSplit)
- })
-
- this.debug(this.pattern, set)
-
- // glob --> regexps
- set = set.map(function (s, si, set) {
- return s.map(this.parse, this)
- }, this)
-
- this.debug(this.pattern, set)
-
- // filter out everything that didn't compile properly.
- set = set.filter(function (s) {
- return s.indexOf(false) === -1
- })
-
- this.debug(this.pattern, set)
-
- this.set = set
-}
-
-Minimatch.prototype.parseNegate = parseNegate
-function parseNegate () {
- var pattern = this.pattern
- var negate = false
- var options = this.options
- var negateOffset = 0
-
- if (options.nonegate) return
-
- for (var i = 0, l = pattern.length
- ; i < l && pattern.charAt(i) === '!'
- ; i++) {
- negate = !negate
- negateOffset++
- }
-
- if (negateOffset) this.pattern = pattern.substr(negateOffset)
- this.negate = negate
-}
-
-// Brace expansion:
-// a{b,c}d -> abd acd
-// a{b,}c -> abc ac
-// a{0..3}d -> a0d a1d a2d a3d
-// a{b,c{d,e}f}g -> abg acdfg acefg
-// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
-//
-// Invalid sets are not expanded.
-// a{2..}b -> a{2..}b
-// a{b}c -> a{b}c
-minimatch.braceExpand = function (pattern, options) {
- return braceExpand(pattern, options)
-}
-
-Minimatch.prototype.braceExpand = braceExpand
-
-function braceExpand (pattern, options) {
- if (!options) {
- if (this instanceof Minimatch) {
- options = this.options
- } else {
- options = {}
- }
- }
-
- pattern = typeof pattern === 'undefined'
- ? this.pattern : pattern
-
- if (typeof pattern === 'undefined') {
- throw new Error('undefined pattern')
- }
-
- if (options.nobrace ||
- !pattern.match(/\{.*\}/)) {
- // shortcut. no need to expand.
- return [pattern]
- }
-
- return expand(pattern)
-}
-
-// parse a component of the expanded set.
-// At this point, no pattern may contain "/" in it
-// so we're going to return a 2d array, where each entry is the full
-// pattern, split on '/', and then turned into a regular expression.
-// A regexp is made at the end which joins each array with an
-// escaped /, and another full one which joins each regexp with |.
-//
-// Following the lead of Bash 4.1, note that "**" only has special meaning
-// when it is the *only* thing in a path portion. Otherwise, any series
-// of * is equivalent to a single *. Globstar behavior is enabled by
-// default, and can be disabled by setting options.noglobstar.
-Minimatch.prototype.parse = parse
-var SUBPARSE = {}
-function parse (pattern, isSub) {
- var options = this.options
-
- // shortcuts
- if (!options.noglobstar && pattern === '**') return GLOBSTAR
- if (pattern === '') return ''
-
- var re = ''
- var hasMagic = !!options.nocase
- var escaping = false
- // ? => one single character
- var patternListStack = []
- var negativeLists = []
- var plType
- var stateChar
- var inClass = false
- var reClassStart = -1
- var classStart = -1
- // . and .. never match anything that doesn't start with .,
- // even when options.dot is set.
- var patternStart = pattern.charAt(0) === '.' ? '' // anything
- // not (start or / followed by . or .. followed by / or end)
- : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))'
- : '(?!\\.)'
- var self = this
-
- function clearStateChar () {
- if (stateChar) {
- // we had some state-tracking character
- // that wasn't consumed by this pass.
- switch (stateChar) {
- case '*':
- re += star
- hasMagic = true
- break
- case '?':
- re += qmark
- hasMagic = true
- break
- default:
- re += '\\' + stateChar
- break
- }
- self.debug('clearStateChar %j %j', stateChar, re)
- stateChar = false
- }
- }
-
- for (var i = 0, len = pattern.length, c
- ; (i < len) && (c = pattern.charAt(i))
- ; i++) {
- this.debug('%s\t%s %s %j', pattern, i, re, c)
-
- // skip over any that are escaped.
- if (escaping && reSpecials[c]) {
- re += '\\' + c
- escaping = false
- continue
- }
-
- switch (c) {
- case '/':
- // completely not allowed, even escaped.
- // Should already be path-split by now.
- return false
-
- case '\\':
- clearStateChar()
- escaping = true
- continue
-
- // the various stateChar values
- // for the "extglob" stuff.
- case '?':
- case '*':
- case '+':
- case '@':
- case '!':
- this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
-
- // all of those are literals inside a class, except that
- // the glob [!a] means [^a] in regexp
- if (inClass) {
- this.debug(' in class')
- if (c === '!' && i === classStart + 1) c = '^'
- re += c
- continue
- }
-
- // if we already have a stateChar, then it means
- // that there was something like ** or +? in there.
- // Handle the stateChar, then proceed with this one.
- self.debug('call clearStateChar %j', stateChar)
- clearStateChar()
- stateChar = c
- // if extglob is disabled, then +(asdf|foo) isn't a thing.
- // just clear the statechar *now*, rather than even diving into
- // the patternList stuff.
- if (options.noext) clearStateChar()
- continue
-
- case '(':
- if (inClass) {
- re += '('
- continue
- }
-
- if (!stateChar) {
- re += '\\('
- continue
- }
-
- plType = stateChar
- patternListStack.push({
- type: plType,
- start: i - 1,
- reStart: re.length
- })
- // negation is (?:(?!js)[^/]*)
- re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
- this.debug('plType %j %j', stateChar, re)
- stateChar = false
- continue
-
- case ')':
- if (inClass || !patternListStack.length) {
- re += '\\)'
- continue
- }
-
- clearStateChar()
- hasMagic = true
- re += ')'
- var pl = patternListStack.pop()
- plType = pl.type
- // negation is (?:(?!js)[^/]*)
- // The others are (?:)
- switch (plType) {
- case '!':
- negativeLists.push(pl)
- re += ')[^/]*?)'
- pl.reEnd = re.length
- break
- case '?':
- case '+':
- case '*':
- re += plType
- break
- case '@': break // the default anyway
- }
- continue
-
- case '|':
- if (inClass || !patternListStack.length || escaping) {
- re += '\\|'
- escaping = false
- continue
- }
-
- clearStateChar()
- re += '|'
- continue
-
- // these are mostly the same in regexp and glob
- case '[':
- // swallow any state-tracking char before the [
- clearStateChar()
-
- if (inClass) {
- re += '\\' + c
- continue
- }
-
- inClass = true
- classStart = i
- reClassStart = re.length
- re += c
- continue
-
- case ']':
- // a right bracket shall lose its special
- // meaning and represent itself in
- // a bracket expression if it occurs
- // first in the list. -- POSIX.2 2.8.3.2
- if (i === classStart + 1 || !inClass) {
- re += '\\' + c
- escaping = false
- continue
- }
-
- // handle the case where we left a class open.
- // "[z-a]" is valid, equivalent to "\[z-a\]"
- if (inClass) {
- // split where the last [ was, make sure we don't have
- // an invalid re. if so, re-walk the contents of the
- // would-be class to re-translate any characters that
- // were passed through as-is
- // TODO: It would probably be faster to determine this
- // without a try/catch and a new RegExp, but it's tricky
- // to do safely. For now, this is safe and works.
- var cs = pattern.substring(classStart + 1, i)
- try {
- RegExp('[' + cs + ']')
- } catch (er) {
- // not a valid class!
- var sp = this.parse(cs, SUBPARSE)
- re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
- hasMagic = hasMagic || sp[1]
- inClass = false
- continue
- }
- }
-
- // finish up the class.
- hasMagic = true
- inClass = false
- re += c
- continue
-
- default:
- // swallow any state char that wasn't consumed
- clearStateChar()
-
- if (escaping) {
- // no need
- escaping = false
- } else if (reSpecials[c]
- && !(c === '^' && inClass)) {
- re += '\\'
- }
-
- re += c
-
- } // switch
- } // for
-
- // handle the case where we left a class open.
- // "[abc" is valid, equivalent to "\[abc"
- if (inClass) {
- // split where the last [ was, and escape it
- // this is a huge pita. We now have to re-walk
- // the contents of the would-be class to re-translate
- // any characters that were passed through as-is
- cs = pattern.substr(classStart + 1)
- sp = this.parse(cs, SUBPARSE)
- re = re.substr(0, reClassStart) + '\\[' + sp[0]
- hasMagic = hasMagic || sp[1]
- }
-
- // handle the case where we had a +( thing at the *end*
- // of the pattern.
- // each pattern list stack adds 3 chars, and we need to go through
- // and escape any | chars that were passed through as-is for the regexp.
- // Go through and escape them, taking care not to double-escape any
- // | chars that were already escaped.
- for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
- var tail = re.slice(pl.reStart + 3)
- // maybe some even number of \, then maybe 1 \, followed by a |
- tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
- if (!$2) {
- // the | isn't already escaped, so escape it.
- $2 = '\\'
- }
-
- // need to escape all those slashes *again*, without escaping the
- // one that we need for escaping the | character. As it works out,
- // escaping an even number of slashes can be done by simply repeating
- // it exactly after itself. That's why this trick works.
- //
- // I am sorry that you have to see this.
- return $1 + $1 + $2 + '|'
- })
-
- this.debug('tail=%j\n %s', tail, tail)
- var t = pl.type === '*' ? star
- : pl.type === '?' ? qmark
- : '\\' + pl.type
-
- hasMagic = true
- re = re.slice(0, pl.reStart) + t + '\\(' + tail
- }
-
- // handle trailing things that only matter at the very end.
- clearStateChar()
- if (escaping) {
- // trailing \\
- re += '\\\\'
- }
-
- // only need to apply the nodot start if the re starts with
- // something that could conceivably capture a dot
- var addPatternStart = false
- switch (re.charAt(0)) {
- case '.':
- case '[':
- case '(': addPatternStart = true
- }
-
- // Hack to work around lack of negative lookbehind in JS
- // A pattern like: *.!(x).!(y|z) needs to ensure that a name
- // like 'a.xyz.yz' doesn't match. So, the first negative
- // lookahead, has to look ALL the way ahead, to the end of
- // the pattern.
- for (var n = negativeLists.length - 1; n > -1; n--) {
- var nl = negativeLists[n]
-
- var nlBefore = re.slice(0, nl.reStart)
- var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
- var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
- var nlAfter = re.slice(nl.reEnd)
-
- nlLast += nlAfter
-
- // Handle nested stuff like *(*.js|!(*.json)), where open parens
- // mean that we should *not* include the ) in the bit that is considered
- // "after" the negated section.
- var openParensBefore = nlBefore.split('(').length - 1
- var cleanAfter = nlAfter
- for (i = 0; i < openParensBefore; i++) {
- cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
- }
- nlAfter = cleanAfter
-
- var dollar = ''
- if (nlAfter === '' && isSub !== SUBPARSE) {
- dollar = '$'
- }
- var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
- re = newRe
- }
-
- // if the re is not "" at this point, then we need to make sure
- // it doesn't match against an empty path part.
- // Otherwise a/* will match a/, which it should not.
- if (re !== '' && hasMagic) {
- re = '(?=.)' + re
- }
-
- if (addPatternStart) {
- re = patternStart + re
- }
-
- // parsing just a piece of a larger pattern.
- if (isSub === SUBPARSE) {
- return [re, hasMagic]
- }
-
- // skip the regexp for non-magical patterns
- // unescape anything in it, though, so that it'll be
- // an exact match against a file etc.
- if (!hasMagic) {
- return globUnescape(pattern)
- }
-
- var flags = options.nocase ? 'i' : ''
- var regExp = new RegExp('^' + re + '$', flags)
-
- regExp._glob = pattern
- regExp._src = re
-
- return regExp
-}
-
-minimatch.makeRe = function (pattern, options) {
- return new Minimatch(pattern, options || {}).makeRe()
-}
-
-Minimatch.prototype.makeRe = makeRe
-function makeRe () {
- if (this.regexp || this.regexp === false) return this.regexp
-
- // at this point, this.set is a 2d array of partial
- // pattern strings, or "**".
- //
- // It's better to use .match(). This function shouldn't
- // be used, really, but it's pretty convenient sometimes,
- // when you just want to work with a regex.
- var set = this.set
-
- if (!set.length) {
- this.regexp = false
- return this.regexp
- }
- var options = this.options
-
- var twoStar = options.noglobstar ? star
- : options.dot ? twoStarDot
- : twoStarNoDot
- var flags = options.nocase ? 'i' : ''
-
- var re = set.map(function (pattern) {
- return pattern.map(function (p) {
- return (p === GLOBSTAR) ? twoStar
- : (typeof p === 'string') ? regExpEscape(p)
- : p._src
- }).join('\\\/')
- }).join('|')
-
- // must match entire pattern
- // ending in a * or ** will make it less strict.
- re = '^(?:' + re + ')$'
-
- // can match anything, as long as it's not this.
- if (this.negate) re = '^(?!' + re + ').*$'
-
- try {
- this.regexp = new RegExp(re, flags)
- } catch (ex) {
- this.regexp = false
- }
- return this.regexp
-}
-
-minimatch.match = function (list, pattern, options) {
- options = options || {}
- var mm = new Minimatch(pattern, options)
- list = list.filter(function (f) {
- return mm.match(f)
- })
- if (mm.options.nonull && !list.length) {
- list.push(pattern)
- }
- return list
-}
-
-Minimatch.prototype.match = match
-function match (f, partial) {
- this.debug('match', f, this.pattern)
- // short-circuit in the case of busted things.
- // comments, etc.
- if (this.comment) return false
- if (this.empty) return f === ''
-
- if (f === '/' && partial) return true
-
- var options = this.options
-
- // windows: need to use /, not \
- if (path.sep !== '/') {
- f = f.split(path.sep).join('/')
- }
-
- // treat the test path as a set of pathparts.
- f = f.split(slashSplit)
- this.debug(this.pattern, 'split', f)
-
- // just ONE of the pattern sets in this.set needs to match
- // in order for it to be valid. If negating, then just one
- // match means that we have failed.
- // Either way, return on the first hit.
-
- var set = this.set
- this.debug(this.pattern, 'set', set)
-
- // Find the basename of the path by looking for the last non-empty segment
- var filename
- var i
- for (i = f.length - 1; i >= 0; i--) {
- filename = f[i]
- if (filename) break
- }
-
- for (i = 0; i < set.length; i++) {
- var pattern = set[i]
- var file = f
- if (options.matchBase && pattern.length === 1) {
- file = [filename]
- }
- var hit = this.matchOne(file, pattern, partial)
- if (hit) {
- if (options.flipNegate) return true
- return !this.negate
- }
- }
-
- // didn't get any hits. this is success if it's a negative
- // pattern, failure otherwise.
- if (options.flipNegate) return false
- return this.negate
-}
-
-// set partial to true to test if, for example,
-// "/a/b" matches the start of "/*/b/*/d"
-// Partial means, if you run out of file before you run
-// out of pattern, then that's fine, as long as all
-// the parts match.
-Minimatch.prototype.matchOne = function (file, pattern, partial) {
- var options = this.options
-
- this.debug('matchOne',
- { 'this': this, file: file, pattern: pattern })
-
- this.debug('matchOne', file.length, pattern.length)
-
- for (var fi = 0,
- pi = 0,
- fl = file.length,
- pl = pattern.length
- ; (fi < fl) && (pi < pl)
- ; fi++, pi++) {
- this.debug('matchOne loop')
- var p = pattern[pi]
- var f = file[fi]
-
- this.debug(pattern, p, f)
-
- // should be impossible.
- // some invalid regexp stuff in the set.
- if (p === false) return false
-
- if (p === GLOBSTAR) {
- this.debug('GLOBSTAR', [pattern, p, f])
-
- // "**"
- // a/**/b/**/c would match the following:
- // a/b/x/y/z/c
- // a/x/y/z/b/c
- // a/b/x/b/x/c
- // a/b/c
- // To do this, take the rest of the pattern after
- // the **, and see if it would match the file remainder.
- // If so, return success.
- // If not, the ** "swallows" a segment, and try again.
- // This is recursively awful.
- //
- // a/**/b/**/c matching a/b/x/y/z/c
- // - a matches a
- // - doublestar
- // - matchOne(b/x/y/z/c, b/**/c)
- // - b matches b
- // - doublestar
- // - matchOne(x/y/z/c, c) -> no
- // - matchOne(y/z/c, c) -> no
- // - matchOne(z/c, c) -> no
- // - matchOne(c, c) yes, hit
- var fr = fi
- var pr = pi + 1
- if (pr === pl) {
- this.debug('** at the end')
- // a ** at the end will just swallow the rest.
- // We have found a match.
- // however, it will not swallow /.x, unless
- // options.dot is set.
- // . and .. are *never* matched by **, for explosively
- // exponential reasons.
- for (; fi < fl; fi++) {
- if (file[fi] === '.' || file[fi] === '..' ||
- (!options.dot && file[fi].charAt(0) === '.')) return false
- }
- return true
- }
-
- // ok, let's see if we can swallow whatever we can.
- while (fr < fl) {
- var swallowee = file[fr]
-
- this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
-
- // XXX remove this slice. Just pass the start index.
- if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
- this.debug('globstar found match!', fr, fl, swallowee)
- // found a match.
- return true
- } else {
- // can't swallow "." or ".." ever.
- // can only swallow ".foo" when explicitly asked.
- if (swallowee === '.' || swallowee === '..' ||
- (!options.dot && swallowee.charAt(0) === '.')) {
- this.debug('dot detected!', file, fr, pattern, pr)
- break
- }
-
- // ** swallows a segment, and continue.
- this.debug('globstar swallow a segment, and continue')
- fr++
- }
- }
-
- // no match was found.
- // However, in partial mode, we can't say this is necessarily over.
- // If there's more *pattern* left, then
- if (partial) {
- // ran out of file
- this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
- if (fr === fl) return true
- }
- return false
- }
-
- // something other than **
- // non-magic patterns just have to match exactly
- // patterns with magic have been turned into regexps.
- var hit
- if (typeof p === 'string') {
- if (options.nocase) {
- hit = f.toLowerCase() === p.toLowerCase()
- } else {
- hit = f === p
- }
- this.debug('string match', p, f, hit)
- } else {
- hit = f.match(p)
- this.debug('pattern match', p, f, hit)
- }
-
- if (!hit) return false
- }
-
- // Note: ending in / means that we'll get a final ""
- // at the end of the pattern. This can only match a
- // corresponding "" at the end of the file.
- // If the file ends in /, then it can only match a
- // a pattern that ends in /, unless the pattern just
- // doesn't have any more for it. But, a/b/ should *not*
- // match "a/b/*", even though "" matches against the
- // [^/]*? pattern, except in partial mode, where it might
- // simply not be reached yet.
- // However, a/b/ should still satisfy a/*
-
- // now either we fell off the end of the pattern, or we're done.
- if (fi === fl && pi === pl) {
- // ran out of pattern and filename at the same time.
- // an exact hit!
- return true
- } else if (fi === fl) {
- // ran out of file, but still had pattern left.
- // this is ok if we're doing the match as part of
- // a glob fs traversal.
- return partial
- } else if (pi === pl) {
- // ran out of pattern, still have file left.
- // this is only acceptable if we're on the very last
- // empty segment of a file with a trailing slash.
- // a/* should match a/b/
- var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
- return emptyFileEnd
- }
-
- // should be unreachable.
- throw new Error('wtf?')
-}
-
-// replace stuff like \* with *
-function globUnescape (s) {
- return s.replace(/\\(.)/g, '$1')
-}
-
-function regExpEscape (s) {
- return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
-}
-
-},{"brace-expansion":2,"path":undefined}],2:[function(require,module,exports){
-var concatMap = require('concat-map');
-var balanced = require('balanced-match');
-
-module.exports = expandTop;
-
-var escSlash = '\0SLASH'+Math.random()+'\0';
-var escOpen = '\0OPEN'+Math.random()+'\0';
-var escClose = '\0CLOSE'+Math.random()+'\0';
-var escComma = '\0COMMA'+Math.random()+'\0';
-var escPeriod = '\0PERIOD'+Math.random()+'\0';
-
-function numeric(str) {
- return parseInt(str, 10) == str
- ? parseInt(str, 10)
- : str.charCodeAt(0);
-}
-
-function escapeBraces(str) {
- return str.split('\\\\').join(escSlash)
- .split('\\{').join(escOpen)
- .split('\\}').join(escClose)
- .split('\\,').join(escComma)
- .split('\\.').join(escPeriod);
-}
-
-function unescapeBraces(str) {
- return str.split(escSlash).join('\\')
- .split(escOpen).join('{')
- .split(escClose).join('}')
- .split(escComma).join(',')
- .split(escPeriod).join('.');
-}
-
-
-// Basically just str.split(","), but handling cases
-// where we have nested braced sections, which should be
-// treated as individual members, like {a,{b,c},d}
-function parseCommaParts(str) {
- if (!str)
- return [''];
-
- var parts = [];
- var m = balanced('{', '}', str);
-
- if (!m)
- return str.split(',');
-
- var pre = m.pre;
- var body = m.body;
- var post = m.post;
- var p = pre.split(',');
-
- p[p.length-1] += '{' + body + '}';
- var postParts = parseCommaParts(post);
- if (post.length) {
- p[p.length-1] += postParts.shift();
- p.push.apply(p, postParts);
- }
-
- parts.push.apply(parts, p);
-
- return parts;
-}
-
-function expandTop(str) {
- if (!str)
- return [];
-
- var expansions = expand(escapeBraces(str));
- return expansions.filter(identity).map(unescapeBraces);
-}
-
-function identity(e) {
- return e;
-}
-
-function embrace(str) {
- return '{' + str + '}';
-}
-function isPadded(el) {
- return /^-?0\d/.test(el);
-}
-
-function lte(i, y) {
- return i <= y;
-}
-function gte(i, y) {
- return i >= y;
-}
-
-function expand(str) {
- var expansions = [];
-
- var m = balanced('{', '}', str);
- if (!m || /\$$/.test(m.pre)) return [str];
-
- var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
- var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
- var isSequence = isNumericSequence || isAlphaSequence;
- var isOptions = /^(.*,)+(.+)?$/.test(m.body);
- if (!isSequence && !isOptions) {
- // {a},b}
- if (m.post.match(/,.*}/)) {
- str = m.pre + '{' + m.body + escClose + m.post;
- return expand(str);
- }
- return [str];
- }
-
- var n;
- if (isSequence) {
- n = m.body.split(/\.\./);
- } else {
- n = parseCommaParts(m.body);
- if (n.length === 1) {
- // x{{a,b}}y ==> x{a}y x{b}y
- n = expand(n[0]).map(embrace);
- if (n.length === 1) {
- var post = m.post.length
- ? expand(m.post)
- : [''];
- return post.map(function(p) {
- return m.pre + n[0] + p;
- });
- }
- }
- }
-
- // at this point, n is the parts, and we know it's not a comma set
- // with a single entry.
-
- // no need to expand pre, since it is guaranteed to be free of brace-sets
- var pre = m.pre;
- var post = m.post.length
- ? expand(m.post)
- : [''];
-
- var N;
-
- if (isSequence) {
- var x = numeric(n[0]);
- var y = numeric(n[1]);
- var width = Math.max(n[0].length, n[1].length)
- var incr = n.length == 3
- ? Math.abs(numeric(n[2]))
- : 1;
- var test = lte;
- var reverse = y < x;
- if (reverse) {
- incr *= -1;
- test = gte;
- }
- var pad = n.some(isPadded);
-
- N = [];
-
- for (var i = x; test(i, y); i += incr) {
- var c;
- if (isAlphaSequence) {
- c = String.fromCharCode(i);
- if (c === '\\')
- c = '';
- } else {
- c = String(i);
- if (pad) {
- var need = width - c.length;
- if (need > 0) {
- var z = new Array(need + 1).join('0');
- if (i < 0)
- c = '-' + z + c.slice(1);
- else
- c = z + c;
- }
- }
- }
- N.push(c);
- }
- } else {
- N = concatMap(n, function(el) { return expand(el) });
- }
-
- for (var j = 0; j < N.length; j++) {
- for (var k = 0; k < post.length; k++) {
- expansions.push([pre, N[j], post[k]].join(''))
- }
- }
-
- return expansions;
-}
-
-
-},{"balanced-match":3,"concat-map":4}],3:[function(require,module,exports){
-module.exports = balanced;
-function balanced(a, b, str) {
- var bal = 0;
- var m = {};
- var ended = false;
-
- for (var i = 0; i < str.length; i++) {
- if (a == str.substr(i, a.length)) {
- if (!('start' in m)) m.start = i;
- bal++;
- }
- else if (b == str.substr(i, b.length) && 'start' in m) {
- ended = true;
- bal--;
- if (!bal) {
- m.end = i;
- m.pre = str.substr(0, m.start);
- m.body = (m.end - m.start > 1)
- ? str.substring(m.start + a.length, m.end)
- : '';
- m.post = str.slice(m.end + b.length);
- return m;
- }
- }
- }
-
- // if we opened more than we closed, find the one we closed
- if (bal && ended) {
- var start = m.start + a.length;
- m = balanced(a, b, str.substr(start));
- if (m) {
- m.start += start;
- m.end += start;
- m.pre = str.slice(0, start) + m.pre;
- }
- return m;
- }
-}
-
-},{}],4:[function(require,module,exports){
-module.exports = function (xs, fn) {
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- var x = fn(xs[i], i);
- if (Array.isArray(x)) res.push.apply(res, x);
- else res.push(x);
- }
- return res;
-};
-
-},{}]},{},[1])(1)
-});
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/minimatch.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/minimatch.js
deleted file mode 100644
index ec4c05c5..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/minimatch.js
+++ /dev/null
@@ -1,912 +0,0 @@
-module.exports = minimatch
-minimatch.Minimatch = Minimatch
-
-var path = { sep: '/' }
-try {
- path = require('path')
-} catch (er) {}
-
-var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
-var expand = require('brace-expansion')
-
-// any single thing other than /
-// don't need to escape / when using new RegExp()
-var qmark = '[^/]'
-
-// * => any number of characters
-var star = qmark + '*?'
-
-// ** when dots are allowed. Anything goes, except .. and .
-// not (^ or / followed by one or two dots followed by $ or /),
-// followed by anything, any number of times.
-var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'
-
-// not a ^ or / followed by a dot,
-// followed by anything, any number of times.
-var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
-
-// characters that need to be escaped in RegExp.
-var reSpecials = charSet('().*{}+?[]^$\\!')
-
-// "abc" -> { a:true, b:true, c:true }
-function charSet (s) {
- return s.split('').reduce(function (set, c) {
- set[c] = true
- return set
- }, {})
-}
-
-// normalizes slashes.
-var slashSplit = /\/+/
-
-minimatch.filter = filter
-function filter (pattern, options) {
- options = options || {}
- return function (p, i, list) {
- return minimatch(p, pattern, options)
- }
-}
-
-function ext (a, b) {
- a = a || {}
- b = b || {}
- var t = {}
- Object.keys(b).forEach(function (k) {
- t[k] = b[k]
- })
- Object.keys(a).forEach(function (k) {
- t[k] = a[k]
- })
- return t
-}
-
-minimatch.defaults = function (def) {
- if (!def || !Object.keys(def).length) return minimatch
-
- var orig = minimatch
-
- var m = function minimatch (p, pattern, options) {
- return orig.minimatch(p, pattern, ext(def, options))
- }
-
- m.Minimatch = function Minimatch (pattern, options) {
- return new orig.Minimatch(pattern, ext(def, options))
- }
-
- return m
-}
-
-Minimatch.defaults = function (def) {
- if (!def || !Object.keys(def).length) return Minimatch
- return minimatch.defaults(def).Minimatch
-}
-
-function minimatch (p, pattern, options) {
- if (typeof pattern !== 'string') {
- throw new TypeError('glob pattern string required')
- }
-
- if (!options) options = {}
-
- // shortcut: comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === '#') {
- return false
- }
-
- // "" only matches ""
- if (pattern.trim() === '') return p === ''
-
- return new Minimatch(pattern, options).match(p)
-}
-
-function Minimatch (pattern, options) {
- if (!(this instanceof Minimatch)) {
- return new Minimatch(pattern, options)
- }
-
- if (typeof pattern !== 'string') {
- throw new TypeError('glob pattern string required')
- }
-
- if (!options) options = {}
- pattern = pattern.trim()
-
- // windows support: need to use /, not \
- if (path.sep !== '/') {
- pattern = pattern.split(path.sep).join('/')
- }
-
- this.options = options
- this.set = []
- this.pattern = pattern
- this.regexp = null
- this.negate = false
- this.comment = false
- this.empty = false
-
- // make the set of regexps etc.
- this.make()
-}
-
-Minimatch.prototype.debug = function () {}
-
-Minimatch.prototype.make = make
-function make () {
- // don't do it more than once.
- if (this._made) return
-
- var pattern = this.pattern
- var options = this.options
-
- // empty patterns and comments match nothing.
- if (!options.nocomment && pattern.charAt(0) === '#') {
- this.comment = true
- return
- }
- if (!pattern) {
- this.empty = true
- return
- }
-
- // step 1: figure out negation, etc.
- this.parseNegate()
-
- // step 2: expand braces
- var set = this.globSet = this.braceExpand()
-
- if (options.debug) this.debug = console.error
-
- this.debug(this.pattern, set)
-
- // step 3: now we have a set, so turn each one into a series of path-portion
- // matching patterns.
- // These will be regexps, except in the case of "**", which is
- // set to the GLOBSTAR object for globstar behavior,
- // and will not contain any / characters
- set = this.globParts = set.map(function (s) {
- return s.split(slashSplit)
- })
-
- this.debug(this.pattern, set)
-
- // glob --> regexps
- set = set.map(function (s, si, set) {
- return s.map(this.parse, this)
- }, this)
-
- this.debug(this.pattern, set)
-
- // filter out everything that didn't compile properly.
- set = set.filter(function (s) {
- return s.indexOf(false) === -1
- })
-
- this.debug(this.pattern, set)
-
- this.set = set
-}
-
-Minimatch.prototype.parseNegate = parseNegate
-function parseNegate () {
- var pattern = this.pattern
- var negate = false
- var options = this.options
- var negateOffset = 0
-
- if (options.nonegate) return
-
- for (var i = 0, l = pattern.length
- ; i < l && pattern.charAt(i) === '!'
- ; i++) {
- negate = !negate
- negateOffset++
- }
-
- if (negateOffset) this.pattern = pattern.substr(negateOffset)
- this.negate = negate
-}
-
-// Brace expansion:
-// a{b,c}d -> abd acd
-// a{b,}c -> abc ac
-// a{0..3}d -> a0d a1d a2d a3d
-// a{b,c{d,e}f}g -> abg acdfg acefg
-// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
-//
-// Invalid sets are not expanded.
-// a{2..}b -> a{2..}b
-// a{b}c -> a{b}c
-minimatch.braceExpand = function (pattern, options) {
- return braceExpand(pattern, options)
-}
-
-Minimatch.prototype.braceExpand = braceExpand
-
-function braceExpand (pattern, options) {
- if (!options) {
- if (this instanceof Minimatch) {
- options = this.options
- } else {
- options = {}
- }
- }
-
- pattern = typeof pattern === 'undefined'
- ? this.pattern : pattern
-
- if (typeof pattern === 'undefined') {
- throw new Error('undefined pattern')
- }
-
- if (options.nobrace ||
- !pattern.match(/\{.*\}/)) {
- // shortcut. no need to expand.
- return [pattern]
- }
-
- return expand(pattern)
-}
-
-// parse a component of the expanded set.
-// At this point, no pattern may contain "/" in it
-// so we're going to return a 2d array, where each entry is the full
-// pattern, split on '/', and then turned into a regular expression.
-// A regexp is made at the end which joins each array with an
-// escaped /, and another full one which joins each regexp with |.
-//
-// Following the lead of Bash 4.1, note that "**" only has special meaning
-// when it is the *only* thing in a path portion. Otherwise, any series
-// of * is equivalent to a single *. Globstar behavior is enabled by
-// default, and can be disabled by setting options.noglobstar.
-Minimatch.prototype.parse = parse
-var SUBPARSE = {}
-function parse (pattern, isSub) {
- var options = this.options
-
- // shortcuts
- if (!options.noglobstar && pattern === '**') return GLOBSTAR
- if (pattern === '') return ''
-
- var re = ''
- var hasMagic = !!options.nocase
- var escaping = false
- // ? => one single character
- var patternListStack = []
- var negativeLists = []
- var plType
- var stateChar
- var inClass = false
- var reClassStart = -1
- var classStart = -1
- // . and .. never match anything that doesn't start with .,
- // even when options.dot is set.
- var patternStart = pattern.charAt(0) === '.' ? '' // anything
- // not (start or / followed by . or .. followed by / or end)
- : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))'
- : '(?!\\.)'
- var self = this
-
- function clearStateChar () {
- if (stateChar) {
- // we had some state-tracking character
- // that wasn't consumed by this pass.
- switch (stateChar) {
- case '*':
- re += star
- hasMagic = true
- break
- case '?':
- re += qmark
- hasMagic = true
- break
- default:
- re += '\\' + stateChar
- break
- }
- self.debug('clearStateChar %j %j', stateChar, re)
- stateChar = false
- }
- }
-
- for (var i = 0, len = pattern.length, c
- ; (i < len) && (c = pattern.charAt(i))
- ; i++) {
- this.debug('%s\t%s %s %j', pattern, i, re, c)
-
- // skip over any that are escaped.
- if (escaping && reSpecials[c]) {
- re += '\\' + c
- escaping = false
- continue
- }
-
- switch (c) {
- case '/':
- // completely not allowed, even escaped.
- // Should already be path-split by now.
- return false
-
- case '\\':
- clearStateChar()
- escaping = true
- continue
-
- // the various stateChar values
- // for the "extglob" stuff.
- case '?':
- case '*':
- case '+':
- case '@':
- case '!':
- this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
-
- // all of those are literals inside a class, except that
- // the glob [!a] means [^a] in regexp
- if (inClass) {
- this.debug(' in class')
- if (c === '!' && i === classStart + 1) c = '^'
- re += c
- continue
- }
-
- // if we already have a stateChar, then it means
- // that there was something like ** or +? in there.
- // Handle the stateChar, then proceed with this one.
- self.debug('call clearStateChar %j', stateChar)
- clearStateChar()
- stateChar = c
- // if extglob is disabled, then +(asdf|foo) isn't a thing.
- // just clear the statechar *now*, rather than even diving into
- // the patternList stuff.
- if (options.noext) clearStateChar()
- continue
-
- case '(':
- if (inClass) {
- re += '('
- continue
- }
-
- if (!stateChar) {
- re += '\\('
- continue
- }
-
- plType = stateChar
- patternListStack.push({
- type: plType,
- start: i - 1,
- reStart: re.length
- })
- // negation is (?:(?!js)[^/]*)
- re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
- this.debug('plType %j %j', stateChar, re)
- stateChar = false
- continue
-
- case ')':
- if (inClass || !patternListStack.length) {
- re += '\\)'
- continue
- }
-
- clearStateChar()
- hasMagic = true
- re += ')'
- var pl = patternListStack.pop()
- plType = pl.type
- // negation is (?:(?!js)[^/]*)
- // The others are (?:)
- switch (plType) {
- case '!':
- negativeLists.push(pl)
- re += ')[^/]*?)'
- pl.reEnd = re.length
- break
- case '?':
- case '+':
- case '*':
- re += plType
- break
- case '@': break // the default anyway
- }
- continue
-
- case '|':
- if (inClass || !patternListStack.length || escaping) {
- re += '\\|'
- escaping = false
- continue
- }
-
- clearStateChar()
- re += '|'
- continue
-
- // these are mostly the same in regexp and glob
- case '[':
- // swallow any state-tracking char before the [
- clearStateChar()
-
- if (inClass) {
- re += '\\' + c
- continue
- }
-
- inClass = true
- classStart = i
- reClassStart = re.length
- re += c
- continue
-
- case ']':
- // a right bracket shall lose its special
- // meaning and represent itself in
- // a bracket expression if it occurs
- // first in the list. -- POSIX.2 2.8.3.2
- if (i === classStart + 1 || !inClass) {
- re += '\\' + c
- escaping = false
- continue
- }
-
- // handle the case where we left a class open.
- // "[z-a]" is valid, equivalent to "\[z-a\]"
- if (inClass) {
- // split where the last [ was, make sure we don't have
- // an invalid re. if so, re-walk the contents of the
- // would-be class to re-translate any characters that
- // were passed through as-is
- // TODO: It would probably be faster to determine this
- // without a try/catch and a new RegExp, but it's tricky
- // to do safely. For now, this is safe and works.
- var cs = pattern.substring(classStart + 1, i)
- try {
- RegExp('[' + cs + ']')
- } catch (er) {
- // not a valid class!
- var sp = this.parse(cs, SUBPARSE)
- re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
- hasMagic = hasMagic || sp[1]
- inClass = false
- continue
- }
- }
-
- // finish up the class.
- hasMagic = true
- inClass = false
- re += c
- continue
-
- default:
- // swallow any state char that wasn't consumed
- clearStateChar()
-
- if (escaping) {
- // no need
- escaping = false
- } else if (reSpecials[c]
- && !(c === '^' && inClass)) {
- re += '\\'
- }
-
- re += c
-
- } // switch
- } // for
-
- // handle the case where we left a class open.
- // "[abc" is valid, equivalent to "\[abc"
- if (inClass) {
- // split where the last [ was, and escape it
- // this is a huge pita. We now have to re-walk
- // the contents of the would-be class to re-translate
- // any characters that were passed through as-is
- cs = pattern.substr(classStart + 1)
- sp = this.parse(cs, SUBPARSE)
- re = re.substr(0, reClassStart) + '\\[' + sp[0]
- hasMagic = hasMagic || sp[1]
- }
-
- // handle the case where we had a +( thing at the *end*
- // of the pattern.
- // each pattern list stack adds 3 chars, and we need to go through
- // and escape any | chars that were passed through as-is for the regexp.
- // Go through and escape them, taking care not to double-escape any
- // | chars that were already escaped.
- for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
- var tail = re.slice(pl.reStart + 3)
- // maybe some even number of \, then maybe 1 \, followed by a |
- tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
- if (!$2) {
- // the | isn't already escaped, so escape it.
- $2 = '\\'
- }
-
- // need to escape all those slashes *again*, without escaping the
- // one that we need for escaping the | character. As it works out,
- // escaping an even number of slashes can be done by simply repeating
- // it exactly after itself. That's why this trick works.
- //
- // I am sorry that you have to see this.
- return $1 + $1 + $2 + '|'
- })
-
- this.debug('tail=%j\n %s', tail, tail)
- var t = pl.type === '*' ? star
- : pl.type === '?' ? qmark
- : '\\' + pl.type
-
- hasMagic = true
- re = re.slice(0, pl.reStart) + t + '\\(' + tail
- }
-
- // handle trailing things that only matter at the very end.
- clearStateChar()
- if (escaping) {
- // trailing \\
- re += '\\\\'
- }
-
- // only need to apply the nodot start if the re starts with
- // something that could conceivably capture a dot
- var addPatternStart = false
- switch (re.charAt(0)) {
- case '.':
- case '[':
- case '(': addPatternStart = true
- }
-
- // Hack to work around lack of negative lookbehind in JS
- // A pattern like: *.!(x).!(y|z) needs to ensure that a name
- // like 'a.xyz.yz' doesn't match. So, the first negative
- // lookahead, has to look ALL the way ahead, to the end of
- // the pattern.
- for (var n = negativeLists.length - 1; n > -1; n--) {
- var nl = negativeLists[n]
-
- var nlBefore = re.slice(0, nl.reStart)
- var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
- var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
- var nlAfter = re.slice(nl.reEnd)
-
- nlLast += nlAfter
-
- // Handle nested stuff like *(*.js|!(*.json)), where open parens
- // mean that we should *not* include the ) in the bit that is considered
- // "after" the negated section.
- var openParensBefore = nlBefore.split('(').length - 1
- var cleanAfter = nlAfter
- for (i = 0; i < openParensBefore; i++) {
- cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
- }
- nlAfter = cleanAfter
-
- var dollar = ''
- if (nlAfter === '' && isSub !== SUBPARSE) {
- dollar = '$'
- }
- var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
- re = newRe
- }
-
- // if the re is not "" at this point, then we need to make sure
- // it doesn't match against an empty path part.
- // Otherwise a/* will match a/, which it should not.
- if (re !== '' && hasMagic) {
- re = '(?=.)' + re
- }
-
- if (addPatternStart) {
- re = patternStart + re
- }
-
- // parsing just a piece of a larger pattern.
- if (isSub === SUBPARSE) {
- return [re, hasMagic]
- }
-
- // skip the regexp for non-magical patterns
- // unescape anything in it, though, so that it'll be
- // an exact match against a file etc.
- if (!hasMagic) {
- return globUnescape(pattern)
- }
-
- var flags = options.nocase ? 'i' : ''
- var regExp = new RegExp('^' + re + '$', flags)
-
- regExp._glob = pattern
- regExp._src = re
-
- return regExp
-}
-
-minimatch.makeRe = function (pattern, options) {
- return new Minimatch(pattern, options || {}).makeRe()
-}
-
-Minimatch.prototype.makeRe = makeRe
-function makeRe () {
- if (this.regexp || this.regexp === false) return this.regexp
-
- // at this point, this.set is a 2d array of partial
- // pattern strings, or "**".
- //
- // It's better to use .match(). This function shouldn't
- // be used, really, but it's pretty convenient sometimes,
- // when you just want to work with a regex.
- var set = this.set
-
- if (!set.length) {
- this.regexp = false
- return this.regexp
- }
- var options = this.options
-
- var twoStar = options.noglobstar ? star
- : options.dot ? twoStarDot
- : twoStarNoDot
- var flags = options.nocase ? 'i' : ''
-
- var re = set.map(function (pattern) {
- return pattern.map(function (p) {
- return (p === GLOBSTAR) ? twoStar
- : (typeof p === 'string') ? regExpEscape(p)
- : p._src
- }).join('\\\/')
- }).join('|')
-
- // must match entire pattern
- // ending in a * or ** will make it less strict.
- re = '^(?:' + re + ')$'
-
- // can match anything, as long as it's not this.
- if (this.negate) re = '^(?!' + re + ').*$'
-
- try {
- this.regexp = new RegExp(re, flags)
- } catch (ex) {
- this.regexp = false
- }
- return this.regexp
-}
-
-minimatch.match = function (list, pattern, options) {
- options = options || {}
- var mm = new Minimatch(pattern, options)
- list = list.filter(function (f) {
- return mm.match(f)
- })
- if (mm.options.nonull && !list.length) {
- list.push(pattern)
- }
- return list
-}
-
-Minimatch.prototype.match = match
-function match (f, partial) {
- this.debug('match', f, this.pattern)
- // short-circuit in the case of busted things.
- // comments, etc.
- if (this.comment) return false
- if (this.empty) return f === ''
-
- if (f === '/' && partial) return true
-
- var options = this.options
-
- // windows: need to use /, not \
- if (path.sep !== '/') {
- f = f.split(path.sep).join('/')
- }
-
- // treat the test path as a set of pathparts.
- f = f.split(slashSplit)
- this.debug(this.pattern, 'split', f)
-
- // just ONE of the pattern sets in this.set needs to match
- // in order for it to be valid. If negating, then just one
- // match means that we have failed.
- // Either way, return on the first hit.
-
- var set = this.set
- this.debug(this.pattern, 'set', set)
-
- // Find the basename of the path by looking for the last non-empty segment
- var filename
- var i
- for (i = f.length - 1; i >= 0; i--) {
- filename = f[i]
- if (filename) break
- }
-
- for (i = 0; i < set.length; i++) {
- var pattern = set[i]
- var file = f
- if (options.matchBase && pattern.length === 1) {
- file = [filename]
- }
- var hit = this.matchOne(file, pattern, partial)
- if (hit) {
- if (options.flipNegate) return true
- return !this.negate
- }
- }
-
- // didn't get any hits. this is success if it's a negative
- // pattern, failure otherwise.
- if (options.flipNegate) return false
- return this.negate
-}
-
-// set partial to true to test if, for example,
-// "/a/b" matches the start of "/*/b/*/d"
-// Partial means, if you run out of file before you run
-// out of pattern, then that's fine, as long as all
-// the parts match.
-Minimatch.prototype.matchOne = function (file, pattern, partial) {
- var options = this.options
-
- this.debug('matchOne',
- { 'this': this, file: file, pattern: pattern })
-
- this.debug('matchOne', file.length, pattern.length)
-
- for (var fi = 0,
- pi = 0,
- fl = file.length,
- pl = pattern.length
- ; (fi < fl) && (pi < pl)
- ; fi++, pi++) {
- this.debug('matchOne loop')
- var p = pattern[pi]
- var f = file[fi]
-
- this.debug(pattern, p, f)
-
- // should be impossible.
- // some invalid regexp stuff in the set.
- if (p === false) return false
-
- if (p === GLOBSTAR) {
- this.debug('GLOBSTAR', [pattern, p, f])
-
- // "**"
- // a/**/b/**/c would match the following:
- // a/b/x/y/z/c
- // a/x/y/z/b/c
- // a/b/x/b/x/c
- // a/b/c
- // To do this, take the rest of the pattern after
- // the **, and see if it would match the file remainder.
- // If so, return success.
- // If not, the ** "swallows" a segment, and try again.
- // This is recursively awful.
- //
- // a/**/b/**/c matching a/b/x/y/z/c
- // - a matches a
- // - doublestar
- // - matchOne(b/x/y/z/c, b/**/c)
- // - b matches b
- // - doublestar
- // - matchOne(x/y/z/c, c) -> no
- // - matchOne(y/z/c, c) -> no
- // - matchOne(z/c, c) -> no
- // - matchOne(c, c) yes, hit
- var fr = fi
- var pr = pi + 1
- if (pr === pl) {
- this.debug('** at the end')
- // a ** at the end will just swallow the rest.
- // We have found a match.
- // however, it will not swallow /.x, unless
- // options.dot is set.
- // . and .. are *never* matched by **, for explosively
- // exponential reasons.
- for (; fi < fl; fi++) {
- if (file[fi] === '.' || file[fi] === '..' ||
- (!options.dot && file[fi].charAt(0) === '.')) return false
- }
- return true
- }
-
- // ok, let's see if we can swallow whatever we can.
- while (fr < fl) {
- var swallowee = file[fr]
-
- this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
-
- // XXX remove this slice. Just pass the start index.
- if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
- this.debug('globstar found match!', fr, fl, swallowee)
- // found a match.
- return true
- } else {
- // can't swallow "." or ".." ever.
- // can only swallow ".foo" when explicitly asked.
- if (swallowee === '.' || swallowee === '..' ||
- (!options.dot && swallowee.charAt(0) === '.')) {
- this.debug('dot detected!', file, fr, pattern, pr)
- break
- }
-
- // ** swallows a segment, and continue.
- this.debug('globstar swallow a segment, and continue')
- fr++
- }
- }
-
- // no match was found.
- // However, in partial mode, we can't say this is necessarily over.
- // If there's more *pattern* left, then
- if (partial) {
- // ran out of file
- this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
- if (fr === fl) return true
- }
- return false
- }
-
- // something other than **
- // non-magic patterns just have to match exactly
- // patterns with magic have been turned into regexps.
- var hit
- if (typeof p === 'string') {
- if (options.nocase) {
- hit = f.toLowerCase() === p.toLowerCase()
- } else {
- hit = f === p
- }
- this.debug('string match', p, f, hit)
- } else {
- hit = f.match(p)
- this.debug('pattern match', p, f, hit)
- }
-
- if (!hit) return false
- }
-
- // Note: ending in / means that we'll get a final ""
- // at the end of the pattern. This can only match a
- // corresponding "" at the end of the file.
- // If the file ends in /, then it can only match a
- // a pattern that ends in /, unless the pattern just
- // doesn't have any more for it. But, a/b/ should *not*
- // match "a/b/*", even though "" matches against the
- // [^/]*? pattern, except in partial mode, where it might
- // simply not be reached yet.
- // However, a/b/ should still satisfy a/*
-
- // now either we fell off the end of the pattern, or we're done.
- if (fi === fl && pi === pl) {
- // ran out of pattern and filename at the same time.
- // an exact hit!
- return true
- } else if (fi === fl) {
- // ran out of file, but still had pattern left.
- // this is ok if we're doing the match as part of
- // a glob fs traversal.
- return partial
- } else if (pi === pl) {
- // ran out of pattern, still have file left.
- // this is only acceptable if we're on the very last
- // empty segment of a file with a trailing slash.
- // a/* should match a/b/
- var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
- return emptyFileEnd
- }
-
- // should be unreachable.
- throw new Error('wtf?')
-}
-
-// replace stuff like \* with *
-function globUnescape (s) {
- return s.replace(/\\(.)/g, '$1')
-}
-
-function regExpEscape (s) {
- return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore
deleted file mode 100644
index 249bc20e..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-*.sw*
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml
deleted file mode 100644
index 6e5919de..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md
deleted file mode 100644
index 62bc7bae..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md
+++ /dev/null
@@ -1,121 +0,0 @@
-# brace-expansion
-
-[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html),
-as known from sh/bash, in JavaScript.
-
-[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion)
-
-[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion)
-
-## Example
-
-```js
-var expand = require('brace-expansion');
-
-expand('file-{a,b,c}.jpg')
-// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
-
-expand('-v{,,}')
-// => ['-v', '-v', '-v']
-
-expand('file{0..2}.jpg')
-// => ['file0.jpg', 'file1.jpg', 'file2.jpg']
-
-expand('file-{a..c}.jpg')
-// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
-
-expand('file{2..0}.jpg')
-// => ['file2.jpg', 'file1.jpg', 'file0.jpg']
-
-expand('file{0..4..2}.jpg')
-// => ['file0.jpg', 'file2.jpg', 'file4.jpg']
-
-expand('file-{a..e..2}.jpg')
-// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg']
-
-expand('file{00..10..5}.jpg')
-// => ['file00.jpg', 'file05.jpg', 'file10.jpg']
-
-expand('{{A..C},{a..c}}')
-// => ['A', 'B', 'C', 'a', 'b', 'c']
-
-expand('ppp{,config,oe{,conf}}')
-// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf']
-```
-
-## API
-
-```js
-var expand = require('brace-expansion');
-```
-
-### var expanded = expand(str)
-
-Return an array of all possible and valid expansions of `str`. If none are
-found, `[str]` is returned.
-
-Valid expansions are:
-
-```js
-/^(.*,)+(.+)?$/
-// {a,b,...}
-```
-
-A comma seperated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
-
-```js
-/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
-// {x..y[..incr]}
-```
-
-A numeric sequence from `x` to `y` inclusive, with optional increment.
-If `x` or `y` start with a leading `0`, all the numbers will be padded
-to have equal length. Negative numbers and backwards iteration work too.
-
-```js
-/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
-// {x..y[..incr]}
-```
-
-An alphabetic sequence from `x` to `y` inclusive, with optional increment.
-`x` and `y` must be exactly one character, and if given, `incr` must be a
-number.
-
-For compatibility reasons, the string `${` is not eligible for brace expansion.
-
-## Installation
-
-With [npm](https://npmjs.org) do:
-
-```bash
-npm install brace-expansion
-```
-
-## Contributors
-
-- [Julian Gruber](https://github.com/juliangruber)
-- [Isaac Z. Schlueter](https://github.com/isaacs)
-
-## License
-
-(MIT)
-
-Copyright (c) 2013 Julian Gruber <julian@juliangruber.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/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js
deleted file mode 100644
index 60ecfc74..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var expand = require('./');
-
-console.log(expand('http://any.org/archive{1996..1999}/vol{1..4}/part{a,b,c}.html'));
-console.log(expand('http://www.numericals.com/file{1..100..10}.txt'));
-console.log(expand('http://www.letters.com/file{a..z..2}.txt'));
-console.log(expand('mkdir /usr/local/src/bash/{old,new,dist,bugs}'));
-console.log(expand('chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}'));
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js
deleted file mode 100644
index a23104e9..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js
+++ /dev/null
@@ -1,191 +0,0 @@
-var concatMap = require('concat-map');
-var balanced = require('balanced-match');
-
-module.exports = expandTop;
-
-var escSlash = '\0SLASH'+Math.random()+'\0';
-var escOpen = '\0OPEN'+Math.random()+'\0';
-var escClose = '\0CLOSE'+Math.random()+'\0';
-var escComma = '\0COMMA'+Math.random()+'\0';
-var escPeriod = '\0PERIOD'+Math.random()+'\0';
-
-function numeric(str) {
- return parseInt(str, 10) == str
- ? parseInt(str, 10)
- : str.charCodeAt(0);
-}
-
-function escapeBraces(str) {
- return str.split('\\\\').join(escSlash)
- .split('\\{').join(escOpen)
- .split('\\}').join(escClose)
- .split('\\,').join(escComma)
- .split('\\.').join(escPeriod);
-}
-
-function unescapeBraces(str) {
- return str.split(escSlash).join('\\')
- .split(escOpen).join('{')
- .split(escClose).join('}')
- .split(escComma).join(',')
- .split(escPeriod).join('.');
-}
-
-
-// Basically just str.split(","), but handling cases
-// where we have nested braced sections, which should be
-// treated as individual members, like {a,{b,c},d}
-function parseCommaParts(str) {
- if (!str)
- return [''];
-
- var parts = [];
- var m = balanced('{', '}', str);
-
- if (!m)
- return str.split(',');
-
- var pre = m.pre;
- var body = m.body;
- var post = m.post;
- var p = pre.split(',');
-
- p[p.length-1] += '{' + body + '}';
- var postParts = parseCommaParts(post);
- if (post.length) {
- p[p.length-1] += postParts.shift();
- p.push.apply(p, postParts);
- }
-
- parts.push.apply(parts, p);
-
- return parts;
-}
-
-function expandTop(str) {
- if (!str)
- return [];
-
- return expand(escapeBraces(str), true).map(unescapeBraces);
-}
-
-function identity(e) {
- return e;
-}
-
-function embrace(str) {
- return '{' + str + '}';
-}
-function isPadded(el) {
- return /^-?0\d/.test(el);
-}
-
-function lte(i, y) {
- return i <= y;
-}
-function gte(i, y) {
- return i >= y;
-}
-
-function expand(str, isTop) {
- var expansions = [];
-
- var m = balanced('{', '}', str);
- if (!m || /\$$/.test(m.pre)) return [str];
-
- var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
- var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
- var isSequence = isNumericSequence || isAlphaSequence;
- var isOptions = /^(.*,)+(.+)?$/.test(m.body);
- if (!isSequence && !isOptions) {
- // {a},b}
- if (m.post.match(/,.*}/)) {
- str = m.pre + '{' + m.body + escClose + m.post;
- return expand(str);
- }
- return [str];
- }
-
- var n;
- if (isSequence) {
- n = m.body.split(/\.\./);
- } else {
- n = parseCommaParts(m.body);
- if (n.length === 1) {
- // x{{a,b}}y ==> x{a}y x{b}y
- n = expand(n[0], false).map(embrace);
- if (n.length === 1) {
- var post = m.post.length
- ? expand(m.post, false)
- : [''];
- return post.map(function(p) {
- return m.pre + n[0] + p;
- });
- }
- }
- }
-
- // at this point, n is the parts, and we know it's not a comma set
- // with a single entry.
-
- // no need to expand pre, since it is guaranteed to be free of brace-sets
- var pre = m.pre;
- var post = m.post.length
- ? expand(m.post, false)
- : [''];
-
- var N;
-
- if (isSequence) {
- var x = numeric(n[0]);
- var y = numeric(n[1]);
- var width = Math.max(n[0].length, n[1].length)
- var incr = n.length == 3
- ? Math.abs(numeric(n[2]))
- : 1;
- var test = lte;
- var reverse = y < x;
- if (reverse) {
- incr *= -1;
- test = gte;
- }
- var pad = n.some(isPadded);
-
- N = [];
-
- for (var i = x; test(i, y); i += incr) {
- var c;
- if (isAlphaSequence) {
- c = String.fromCharCode(i);
- if (c === '\\')
- c = '';
- } else {
- c = String(i);
- if (pad) {
- var need = width - c.length;
- if (need > 0) {
- var z = new Array(need + 1).join('0');
- if (i < 0)
- c = '-' + z + c.slice(1);
- else
- c = z + c;
- }
- }
- }
- N.push(c);
- }
- } else {
- N = concatMap(n, function(el) { return expand(el, false) });
- }
-
- for (var j = 0; j < N.length; j++) {
- for (var k = 0; k < post.length; k++) {
- var expansion = pre + N[j] + post[k];
- if (!isTop || isSequence || expansion)
- expansions.push(expansion);
- }
- }
-
- return expansions;
-}
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore
deleted file mode 100644
index fd4f2b06..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-node_modules
-.DS_Store
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml
deleted file mode 100644
index cc4dba29..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - "0.8"
- - "0.10"
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile
deleted file mode 100644
index fa5da71a..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-
-test:
- @node_modules/.bin/tape test/*.js
-
-.PHONY: test
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md
deleted file mode 100644
index 2aff0ebf..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# balanced-match
-
-Match balanced string pairs, like `{` and `}` or `` and ` `.
-
-[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match)
-[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match)
-
-[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match)
-
-## Example
-
-Get the first matching pair of braces:
-
-```js
-var balanced = require('balanced-match');
-
-console.log(balanced('{', '}', 'pre{in{nested}}post'));
-console.log(balanced('{', '}', 'pre{first}between{second}post'));
-```
-
-The matches are:
-
-```bash
-$ node example.js
-{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }
-{ start: 3,
- end: 9,
- pre: 'pre',
- body: 'first',
- post: 'between{second}post' }
-```
-
-## API
-
-### var m = balanced(a, b, str)
-
-For the first non-nested matching pair of `a` and `b` in `str`, return an
-object with those keys:
-
-* **start** the index of the first match of `a`
-* **end** the index of the matching `b`
-* **pre** the preamble, `a` and `b` not included
-* **body** the match, `a` and `b` not included
-* **post** the postscript, `a` and `b` not included
-
-If there's no match, `undefined` will be returned.
-
-If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']`.
-
-## Installation
-
-With [npm](https://npmjs.org) do:
-
-```bash
-npm install balanced-match
-```
-
-## License
-
-(MIT)
-
-Copyright (c) 2013 Julian Gruber <julian@juliangruber.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/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js
deleted file mode 100644
index c02ad348..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var balanced = require('./');
-
-console.log(balanced('{', '}', 'pre{in{nested}}post'));
-console.log(balanced('{', '}', 'pre{first}between{second}post'));
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js
deleted file mode 100644
index d165ae81..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-module.exports = balanced;
-function balanced(a, b, str) {
- var bal = 0;
- var m = {};
- var ended = false;
-
- for (var i = 0; i < str.length; i++) {
- if (a == str.substr(i, a.length)) {
- if (!('start' in m)) m.start = i;
- bal++;
- }
- else if (b == str.substr(i, b.length) && 'start' in m) {
- ended = true;
- bal--;
- if (!bal) {
- m.end = i;
- m.pre = str.substr(0, m.start);
- m.body = (m.end - m.start > 1)
- ? str.substring(m.start + a.length, m.end)
- : '';
- m.post = str.slice(m.end + b.length);
- return m;
- }
- }
- }
-
- // if we opened more than we closed, find the one we closed
- if (bal && ended) {
- var start = m.start + a.length;
- m = balanced(a, b, str.substr(start));
- if (m) {
- m.start += start;
- m.end += start;
- m.pre = str.slice(0, start) + m.pre;
- }
- return m;
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json
deleted file mode 100644
index ede6efef..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "name": "balanced-match",
- "description": "Match balanced character pairs, like \"{\" and \"}\"",
- "version": "0.2.0",
- "repository": {
- "type": "git",
- "url": "git://github.com/juliangruber/balanced-match.git"
- },
- "homepage": "https://github.com/juliangruber/balanced-match",
- "main": "index.js",
- "scripts": {
- "test": "make test"
- },
- "dependencies": {},
- "devDependencies": {
- "tape": "~1.1.1"
- },
- "keywords": [
- "match",
- "regexp",
- "test",
- "balanced",
- "parse"
- ],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT",
- "testling": {
- "files": "test/*.js",
- "browsers": [
- "ie/8..latest",
- "firefox/20..latest",
- "firefox/nightly",
- "chrome/25..latest",
- "chrome/canary",
- "opera/12..latest",
- "opera/next",
- "safari/5.1..latest",
- "ipad/6.0..latest",
- "iphone/6.0..latest",
- "android-browser/4.2..latest"
- ]
- },
- "gitHead": "ba40ed78e7114a4a67c51da768a100184dead39c",
- "bugs": {
- "url": "https://github.com/juliangruber/balanced-match/issues"
- },
- "_id": "balanced-match@0.2.0",
- "_shasum": "38f6730c03aab6d5edbb52bd934885e756d71674",
- "_from": "balanced-match@>=0.2.0 <0.3.0",
- "_npmVersion": "2.1.8",
- "_nodeVersion": "0.10.32",
- "_npmUser": {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- },
- "maintainers": [
- {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- }
- ],
- "dist": {
- "shasum": "38f6730c03aab6d5edbb52bd934885e756d71674",
- "tarball": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js
deleted file mode 100644
index 36bfd399..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js
+++ /dev/null
@@ -1,56 +0,0 @@
-var test = require('tape');
-var balanced = require('..');
-
-test('balanced', function(t) {
- t.deepEqual(balanced('{', '}', 'pre{in{nest}}post'), {
- start: 3,
- end: 12,
- pre: 'pre',
- body: 'in{nest}',
- post: 'post'
- });
- t.deepEqual(balanced('{', '}', '{{{{{{{{{in}post'), {
- start: 8,
- end: 11,
- pre: '{{{{{{{{',
- body: 'in',
- post: 'post'
- });
- t.deepEqual(balanced('{', '}', 'pre{body{in}post'), {
- start: 8,
- end: 11,
- pre: 'pre{body',
- body: 'in',
- post: 'post'
- });
- t.deepEqual(balanced('{', '}', 'pre}{in{nest}}post'), {
- start: 4,
- end: 13,
- pre: 'pre}',
- body: 'in{nest}',
- post: 'post'
- });
- t.deepEqual(balanced('{', '}', 'pre{body}between{body2}post'), {
- start: 3,
- end: 8,
- pre: 'pre',
- body: 'body',
- post: 'between{body2}post'
- });
- t.notOk(balanced('{', '}', 'nope'), 'should be notOk');
- t.deepEqual(balanced('', ' ', 'preinnest post'), {
- start: 3,
- end: 19,
- pre: 'pre',
- body: 'innest ',
- post: 'post'
- });
- t.deepEqual(balanced('', ' ', 'preinnest post'), {
- start: 7,
- end: 23,
- pre: 'pre',
- body: 'innest ',
- post: 'post'
- });
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml
deleted file mode 100644
index f1d0f13c..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-language: node_js
-node_js:
- - 0.4
- - 0.6
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE
deleted file mode 100644
index ee27ba4b..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-This software is released under the MIT license:
-
-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/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown
deleted file mode 100644
index 408f70a1..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown
+++ /dev/null
@@ -1,62 +0,0 @@
-concat-map
-==========
-
-Concatenative mapdashery.
-
-[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map)
-
-[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map)
-
-example
-=======
-
-``` js
-var concatMap = require('concat-map');
-var xs = [ 1, 2, 3, 4, 5, 6 ];
-var ys = concatMap(xs, function (x) {
- return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
-});
-console.dir(ys);
-```
-
-***
-
-```
-[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]
-```
-
-methods
-=======
-
-``` js
-var concatMap = require('concat-map')
-```
-
-concatMap(xs, fn)
------------------
-
-Return an array of concatenated elements by calling `fn(x, i)` for each element
-`x` and each index `i` in the array `xs`.
-
-When `fn(x, i)` returns an array, its result will be concatenated with the
-result array. If `fn(x, i)` returns anything else, that value will be pushed
-onto the end of the result array.
-
-install
-=======
-
-With [npm](http://npmjs.org) do:
-
-```
-npm install concat-map
-```
-
-license
-=======
-
-MIT
-
-notes
-=====
-
-This module was written while sitting high above the ground in a tree.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js
deleted file mode 100644
index 33656217..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var concatMap = require('../');
-var xs = [ 1, 2, 3, 4, 5, 6 ];
-var ys = concatMap(xs, function (x) {
- return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
-});
-console.dir(ys);
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js
deleted file mode 100644
index b29a7812..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js
+++ /dev/null
@@ -1,13 +0,0 @@
-module.exports = function (xs, fn) {
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- var x = fn(xs[i], i);
- if (isArray(x)) res.push.apply(res, x);
- else res.push(x);
- }
- return res;
-};
-
-var isArray = Array.isArray || function (xs) {
- return Object.prototype.toString.call(xs) === '[object Array]';
-};
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json
deleted file mode 100644
index b5161380..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "name": "concat-map",
- "description": "concatenative mapdashery",
- "version": "0.0.1",
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/node-concat-map.git"
- },
- "main": "index.js",
- "keywords": [
- "concat",
- "concatMap",
- "map",
- "functional",
- "higher-order"
- ],
- "directories": {
- "example": "example",
- "test": "test"
- },
- "scripts": {
- "test": "tape test/*.js"
- },
- "devDependencies": {
- "tape": "~2.4.0"
- },
- "license": "MIT",
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "testling": {
- "files": "test/*.js",
- "browsers": {
- "ie": [
- 6,
- 7,
- 8,
- 9
- ],
- "ff": [
- 3.5,
- 10,
- 15
- ],
- "chrome": [
- 10,
- 22
- ],
- "safari": [
- 5.1
- ],
- "opera": [
- 12
- ]
- }
- },
- "bugs": {
- "url": "https://github.com/substack/node-concat-map/issues"
- },
- "homepage": "https://github.com/substack/node-concat-map",
- "_id": "concat-map@0.0.1",
- "dist": {
- "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
- "tarball": "http://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
- },
- "_from": "concat-map@0.0.1",
- "_npmVersion": "1.3.21",
- "_npmUser": {
- "name": "substack",
- "email": "mail@substack.net"
- },
- "maintainers": [
- {
- "name": "substack",
- "email": "mail@substack.net"
- }
- ],
- "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
- "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js
deleted file mode 100644
index fdbd7022..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var concatMap = require('../');
-var test = require('tape');
-
-test('empty or not', function (t) {
- var xs = [ 1, 2, 3, 4, 5, 6 ];
- var ixes = [];
- var ys = concatMap(xs, function (x, ix) {
- ixes.push(ix);
- return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
- });
- t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]);
- t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]);
- t.end();
-});
-
-test('always something', function (t) {
- var xs = [ 'a', 'b', 'c', 'd' ];
- var ys = concatMap(xs, function (x) {
- return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ];
- });
- t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]);
- t.end();
-});
-
-test('scalars', function (t) {
- var xs = [ 'a', 'b', 'c', 'd' ];
- var ys = concatMap(xs, function (x) {
- return x === 'b' ? [ 'B', 'B', 'B' ] : x;
- });
- t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]);
- t.end();
-});
-
-test('undefs', function (t) {
- var xs = [ 'a', 'b', 'c', 'd' ];
- var ys = concatMap(xs, function () {});
- t.same(ys, [ undefined, undefined, undefined, undefined ]);
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json
deleted file mode 100644
index 5f1866c8..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "name": "brace-expansion",
- "description": "Brace expansion as known from sh/bash",
- "version": "1.1.0",
- "repository": {
- "type": "git",
- "url": "git://github.com/juliangruber/brace-expansion.git"
- },
- "homepage": "https://github.com/juliangruber/brace-expansion",
- "main": "index.js",
- "scripts": {
- "test": "tape test/*.js",
- "gentest": "bash test/generate.sh"
- },
- "dependencies": {
- "balanced-match": "^0.2.0",
- "concat-map": "0.0.1"
- },
- "devDependencies": {
- "tape": "^3.0.3"
- },
- "keywords": [],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT",
- "testling": {
- "files": "test/*.js",
- "browsers": [
- "ie/8..latest",
- "firefox/20..latest",
- "firefox/nightly",
- "chrome/25..latest",
- "chrome/canary",
- "opera/12..latest",
- "opera/next",
- "safari/5.1..latest",
- "ipad/6.0..latest",
- "iphone/6.0..latest",
- "android-browser/4.2..latest"
- ]
- },
- "gitHead": "b5fa3b1c74e5e2dba2d0efa19b28335641bc1164",
- "bugs": {
- "url": "https://github.com/juliangruber/brace-expansion/issues"
- },
- "_id": "brace-expansion@1.1.0",
- "_shasum": "c9b7d03c03f37bc704be100e522b40db8f6cfcd9",
- "_from": "brace-expansion@>=1.0.0 <2.0.0",
- "_npmVersion": "2.1.10",
- "_nodeVersion": "0.10.32",
- "_npmUser": {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- },
- "maintainers": [
- {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- },
- {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- }
- ],
- "dist": {
- "shasum": "c9b7d03c03f37bc704be100e522b40db8f6cfcd9",
- "tarball": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js
deleted file mode 100644
index 5fe2b8ad..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var test = require('tape');
-var expand = require('..');
-var fs = require('fs');
-var resfile = __dirname + '/bash-results.txt';
-var cases = fs.readFileSync(resfile, 'utf8').split('><><><><');
-
-// throw away the EOF marker
-cases.pop()
-
-test('matches bash expansions', function(t) {
- cases.forEach(function(testcase) {
- var set = testcase.split('\n');
- var pattern = set.shift();
- var actual = expand(pattern);
-
- // If it expands to the empty string, then it's actually
- // just nothing, but Bash is a singly typed language, so
- // "nothing" is the same as "".
- if (set.length === 1 && set[0] === '') {
- set = []
- } else {
- // otherwise, strip off the [] that were added so that
- // "" expansions would be preserved properly.
- set = set.map(function (s) {
- return s.replace(/^\[|\]$/g, '')
- })
- }
-
- t.same(actual, set, pattern);
- });
- t.end();
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt
deleted file mode 100644
index 958148d2..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt
+++ /dev/null
@@ -1,1075 +0,0 @@
-A{b,{d,e},{f,g}}Z
-[AbZ]
-[AdZ]
-[AeZ]
-[AfZ]
-[AgZ]><><><><><><><\{a,b}{{a,b},a,b}
-[{a,b}a]
-[{a,b}b]
-[{a,b}a]
-[{a,b}b]><><><><{{a,b}
-[{a]
-[{b]><><><><{a,b}}
-[a}]
-[b}]><><><><{,}
-><><><><><><><{,}b
-[b]
-[b]><><><> <><><> <><><> <><><> <><><> <><><> <><><> <><><> <><><> <><><> <><><> <><><> <><><> <><><> <><><> <><><><><><><><><><><><><><><><><><><><><><><><><><><><{-01..5}
-[-01]
-[000]
-[001]
-[002]
-[003]
-[004]
-[005]><><><><{-05..100..5}
-[-05]
-[000]
-[005]
-[010]
-[015]
-[020]
-[025]
-[030]
-[035]
-[040]
-[045]
-[050]
-[055]
-[060]
-[065]
-[070]
-[075]
-[080]
-[085]
-[090]
-[095]
-[100]><><><><{-05..100}
-[-05]
-[-04]
-[-03]
-[-02]
-[-01]
-[000]
-[001]
-[002]
-[003]
-[004]
-[005]
-[006]
-[007]
-[008]
-[009]
-[010]
-[011]
-[012]
-[013]
-[014]
-[015]
-[016]
-[017]
-[018]
-[019]
-[020]
-[021]
-[022]
-[023]
-[024]
-[025]
-[026]
-[027]
-[028]
-[029]
-[030]
-[031]
-[032]
-[033]
-[034]
-[035]
-[036]
-[037]
-[038]
-[039]
-[040]
-[041]
-[042]
-[043]
-[044]
-[045]
-[046]
-[047]
-[048]
-[049]
-[050]
-[051]
-[052]
-[053]
-[054]
-[055]
-[056]
-[057]
-[058]
-[059]
-[060]
-[061]
-[062]
-[063]
-[064]
-[065]
-[066]
-[067]
-[068]
-[069]
-[070]
-[071]
-[072]
-[073]
-[074]
-[075]
-[076]
-[077]
-[078]
-[079]
-[080]
-[081]
-[082]
-[083]
-[084]
-[085]
-[086]
-[087]
-[088]
-[089]
-[090]
-[091]
-[092]
-[093]
-[094]
-[095]
-[096]
-[097]
-[098]
-[099]
-[100]><><><><{0..5..2}
-[0]
-[2]
-[4]><><><><{0001..05..2}
-[0001]
-[0003]
-[0005]><><><><{0001..-5..2}
-[0001]
-[-001]
-[-003]
-[-005]><><><><{0001..-5..-2}
-[0001]
-[-001]
-[-003]
-[-005]><><><><{0001..5..-2}
-[0001]
-[0003]
-[0005]><><><><{01..5}
-[01]
-[02]
-[03]
-[04]
-[05]><><><><{1..05}
-[01]
-[02]
-[03]
-[04]
-[05]><><><><{1..05..3}
-[01]
-[04]><><><><{05..100}
-[005]
-[006]
-[007]
-[008]
-[009]
-[010]
-[011]
-[012]
-[013]
-[014]
-[015]
-[016]
-[017]
-[018]
-[019]
-[020]
-[021]
-[022]
-[023]
-[024]
-[025]
-[026]
-[027]
-[028]
-[029]
-[030]
-[031]
-[032]
-[033]
-[034]
-[035]
-[036]
-[037]
-[038]
-[039]
-[040]
-[041]
-[042]
-[043]
-[044]
-[045]
-[046]
-[047]
-[048]
-[049]
-[050]
-[051]
-[052]
-[053]
-[054]
-[055]
-[056]
-[057]
-[058]
-[059]
-[060]
-[061]
-[062]
-[063]
-[064]
-[065]
-[066]
-[067]
-[068]
-[069]
-[070]
-[071]
-[072]
-[073]
-[074]
-[075]
-[076]
-[077]
-[078]
-[079]
-[080]
-[081]
-[082]
-[083]
-[084]
-[085]
-[086]
-[087]
-[088]
-[089]
-[090]
-[091]
-[092]
-[093]
-[094]
-[095]
-[096]
-[097]
-[098]
-[099]
-[100]><><><><{0a..0z}
-[{0a..0z}]><><><><{a,b\}c,d}
-[a]
-[b}c]
-[d]><><><><{a,b{c,d}
-[{a,bc]
-[{a,bd]><><><><{a,b}c,d}
-[ac,d}]
-[bc,d}]><><><><{a..F}
-[a]
-[`]
-[_]
-[^]
-[]]
-[]
-[[]
-[Z]
-[Y]
-[X]
-[W]
-[V]
-[U]
-[T]
-[S]
-[R]
-[Q]
-[P]
-[O]
-[N]
-[M]
-[L]
-[K]
-[J]
-[I]
-[H]
-[G]
-[F]><><><><{A..f}
-[A]
-[B]
-[C]
-[D]
-[E]
-[F]
-[G]
-[H]
-[I]
-[J]
-[K]
-[L]
-[M]
-[N]
-[O]
-[P]
-[Q]
-[R]
-[S]
-[T]
-[U]
-[V]
-[W]
-[X]
-[Y]
-[Z]
-[[]
-[]
-[]]
-[^]
-[_]
-[`]
-[a]
-[b]
-[c]
-[d]
-[e]
-[f]><><><><{a..Z}
-[a]
-[`]
-[_]
-[^]
-[]]
-[]
-[[]
-[Z]><><><><{A..z}
-[A]
-[B]
-[C]
-[D]
-[E]
-[F]
-[G]
-[H]
-[I]
-[J]
-[K]
-[L]
-[M]
-[N]
-[O]
-[P]
-[Q]
-[R]
-[S]
-[T]
-[U]
-[V]
-[W]
-[X]
-[Y]
-[Z]
-[[]
-[]
-[]]
-[^]
-[_]
-[`]
-[a]
-[b]
-[c]
-[d]
-[e]
-[f]
-[g]
-[h]
-[i]
-[j]
-[k]
-[l]
-[m]
-[n]
-[o]
-[p]
-[q]
-[r]
-[s]
-[t]
-[u]
-[v]
-[w]
-[x]
-[y]
-[z]><><><><{z..A}
-[z]
-[y]
-[x]
-[w]
-[v]
-[u]
-[t]
-[s]
-[r]
-[q]
-[p]
-[o]
-[n]
-[m]
-[l]
-[k]
-[j]
-[i]
-[h]
-[g]
-[f]
-[e]
-[d]
-[c]
-[b]
-[a]
-[`]
-[_]
-[^]
-[]]
-[]
-[[]
-[Z]
-[Y]
-[X]
-[W]
-[V]
-[U]
-[T]
-[S]
-[R]
-[Q]
-[P]
-[O]
-[N]
-[M]
-[L]
-[K]
-[J]
-[I]
-[H]
-[G]
-[F]
-[E]
-[D]
-[C]
-[B]
-[A]><><><><{Z..a}
-[Z]
-[[]
-[]
-[]]
-[^]
-[_]
-[`]
-[a]><><><><{a..F..2}
-[a]
-[_]
-[]]
-[[]
-[Y]
-[W]
-[U]
-[S]
-[Q]
-[O]
-[M]
-[K]
-[I]
-[G]><><><><{A..f..02}
-[A]
-[C]
-[E]
-[G]
-[I]
-[K]
-[M]
-[O]
-[Q]
-[S]
-[U]
-[W]
-[Y]
-[[]
-[]]
-[_]
-[a]
-[c]
-[e]><><><><{a..Z..5}
-[a]
-[]><><><><><><><{A..z..10}
-[A]
-[K]
-[U]
-[_]
-[i]
-[s]><><><><{z..A..-2}
-[z]
-[x]
-[v]
-[t]
-[r]
-[p]
-[n]
-[l]
-[j]
-[h]
-[f]
-[d]
-[b]
-[`]
-[^]
-[]
-[Z]
-[X]
-[V]
-[T]
-[R]
-[P]
-[N]
-[L]
-[J]
-[H]
-[F]
-[D]
-[B]><><><><{Z..a..20}
-[Z]><><><><{a{,b}
-[{a]
-[{ab]><><><><{a},b}
-[a}]
-[b]><><><><{x,y{,}g}
-[x]
-[yg]
-[yg]><><><><{x,y{}g}
-[x]
-[y{}g]><><><><{{a,b}
-[{a]
-[{b]><><><><{{a,b},c}
-[a]
-[b]
-[c]><><><><{{a,b}c}
-[{ac}]
-[{bc}]><><><><{{a,b},}
-[a]
-[b]><><><><><><><{{a,b},}c
-[ac]
-[bc]
-[c]><><><><{{a,b}.}
-[{a.}]
-[{b.}]><><><><{{a,b}}
-[{a}]
-[{b}]><><><><><><><
-><><><><{-10..00}
-[-10]
-[-09]
-[-08]
-[-07]
-[-06]
-[-05]
-[-04]
-[-03]
-[-02]
-[-01]
-[000]><><><><{a,\\{a,b}c}
-[a]
-[\ac]
-[\bc]><><><><{a,\{a,b}c}
-[ac}]
-[{ac}]
-[bc}]><><><><><><><{-10.\.00}
-[{-10..00}]><><><><><><><><><><{l,n,m}xyz
-[lxyz]
-[nxyz]
-[mxyz]><><><><{abc\,def}
-[{abc,def}]><><><><{abc}
-[{abc}]><><><><{x\,y,\{abc\},trie}
-[x,y]
-[{abc}]
-[trie]><><><><{}
-[{}]><><><><}
-[}]><><><><{
-[{]><><><><><><><{1..10}
-[1]
-[2]
-[3]
-[4]
-[5]
-[6]
-[7]
-[8]
-[9]
-[10]><><><><{0..10,braces}
-[0..10]
-[braces]><><><><{{0..10},braces}
-[0]
-[1]
-[2]
-[3]
-[4]
-[5]
-[6]
-[7]
-[8]
-[9]
-[10]
-[braces]><><><><><><><{3..3}
-[3]><><><><><><><{10..1}
-[10]
-[9]
-[8]
-[7]
-[6]
-[5]
-[4]
-[3]
-[2]
-[1]><><><><{10..1}y
-[10y]
-[9y]
-[8y]
-[7y]
-[6y]
-[5y]
-[4y]
-[3y]
-[2y]
-[1y]><><><><><><><{a..f}
-[a]
-[b]
-[c]
-[d]
-[e]
-[f]><><><><{f..a}
-[f]
-[e]
-[d]
-[c]
-[b]
-[a]><><><><{a..A}
-[a]
-[`]
-[_]
-[^]
-[]]
-[]
-[[]
-[Z]
-[Y]
-[X]
-[W]
-[V]
-[U]
-[T]
-[S]
-[R]
-[Q]
-[P]
-[O]
-[N]
-[M]
-[L]
-[K]
-[J]
-[I]
-[H]
-[G]
-[F]
-[E]
-[D]
-[C]
-[B]
-[A]><><><><{A..a}
-[A]
-[B]
-[C]
-[D]
-[E]
-[F]
-[G]
-[H]
-[I]
-[J]
-[K]
-[L]
-[M]
-[N]
-[O]
-[P]
-[Q]
-[R]
-[S]
-[T]
-[U]
-[V]
-[W]
-[X]
-[Y]
-[Z]
-[[]
-[]
-[]]
-[^]
-[_]
-[`]
-[a]><><><><{f..f}
-[f]><><><><{1..f}
-[{1..f}]><><><><{f..1}
-[{f..1}]><><><><{-1..-10}
-[-1]
-[-2]
-[-3]
-[-4]
-[-5]
-[-6]
-[-7]
-[-8]
-[-9]
-[-10]><><><><{-20..0}
-[-20]
-[-19]
-[-18]
-[-17]
-[-16]
-[-15]
-[-14]
-[-13]
-[-12]
-[-11]
-[-10]
-[-9]
-[-8]
-[-7]
-[-6]
-[-5]
-[-4]
-[-3]
-[-2]
-[-1]
-[0]><><><><><><><><><><{klklkl}{1,2,3}
-[{klklkl}1]
-[{klklkl}2]
-[{klklkl}3]><><><><{1..10..2}
-[1]
-[3]
-[5]
-[7]
-[9]><><><><{-1..-10..2}
-[-1]
-[-3]
-[-5]
-[-7]
-[-9]><><><><{-1..-10..-2}
-[-1]
-[-3]
-[-5]
-[-7]
-[-9]><><><><{10..1..-2}
-[10]
-[8]
-[6]
-[4]
-[2]><><><><{10..1..2}
-[10]
-[8]
-[6]
-[4]
-[2]><><><><{1..20..2}
-[1]
-[3]
-[5]
-[7]
-[9]
-[11]
-[13]
-[15]
-[17]
-[19]><><><><{1..20..20}
-[1]><><><><{100..0..5}
-[100]
-[95]
-[90]
-[85]
-[80]
-[75]
-[70]
-[65]
-[60]
-[55]
-[50]
-[45]
-[40]
-[35]
-[30]
-[25]
-[20]
-[15]
-[10]
-[5]
-[0]><><><><{100..0..-5}
-[100]
-[95]
-[90]
-[85]
-[80]
-[75]
-[70]
-[65]
-[60]
-[55]
-[50]
-[45]
-[40]
-[35]
-[30]
-[25]
-[20]
-[15]
-[10]
-[5]
-[0]><><><><{a..z}
-[a]
-[b]
-[c]
-[d]
-[e]
-[f]
-[g]
-[h]
-[i]
-[j]
-[k]
-[l]
-[m]
-[n]
-[o]
-[p]
-[q]
-[r]
-[s]
-[t]
-[u]
-[v]
-[w]
-[x]
-[y]
-[z]><><><><{a..z..2}
-[a]
-[c]
-[e]
-[g]
-[i]
-[k]
-[m]
-[o]
-[q]
-[s]
-[u]
-[w]
-[y]><><><><{z..a..-2}
-[z]
-[x]
-[v]
-[t]
-[r]
-[p]
-[n]
-[l]
-[j]
-[h]
-[f]
-[d]
-[b]><><><><{2147483645..2147483649}
-[2147483645]
-[2147483646]
-[2147483647]
-[2147483648]
-[2147483649]><><><><{10..0..2}
-[10]
-[8]
-[6]
-[4]
-[2]
-[0]><><><><{10..0..-2}
-[10]
-[8]
-[6]
-[4]
-[2]
-[0]><><><><{-50..-0..5}
-[-50]
-[-45]
-[-40]
-[-35]
-[-30]
-[-25]
-[-20]
-[-15]
-[-10]
-[-5]
-[0]><><><><{1..10.f}
-[{1..10.f}]><><><><{1..ff}
-[{1..ff}]><><><><{1..10..ff}
-[{1..10..ff}]><><><><{1.20..2}
-[{1.20..2}]><><><><{1..20..f2}
-[{1..20..f2}]><><><><{1..20..2f}
-[{1..20..2f}]><><><><{1..2f..2}
-[{1..2f..2}]><><><><{1..ff..2}
-[{1..ff..2}]><><><><{1..ff}
-[{1..ff}]><><><><{1..f}
-[{1..f}]><><><><{1..0f}
-[{1..0f}]><><><><{1..10f}
-[{1..10f}]><><><><{1..10.f}
-[{1..10.f}]><><><><{1..10.f}
-[{1..10.f}]><><><><
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt
deleted file mode 100644
index e5161c3d..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt
+++ /dev/null
@@ -1,182 +0,0 @@
-# skip quotes for now
-# "{x,x}"
-# {"x,x"}
-# {x","x}
-# '{a,b}{{a,b},a,b}'
-A{b,{d,e},{f,g}}Z
-PRE-{a,b}{{a,b},a,b}-POST
-\\{a,b}{{a,b},a,b}
-{{a,b}
-{a,b}}
-{,}
-a{,}
-{,}b
-a{,}b
-a{b}c
-a{1..5}b
-a{01..5}b
-a{-01..5}b
-a{-01..5..3}b
-a{001..9}b
-a{b,c{d,e},{f,g}h}x{y,z
-a{b,c{d,e},{f,g}h}x{y,z\\}
-a{b,c{d,e},{f,g}h}x{y,z}
-a{b{c{d,e}f{x,y{{g}h
-a{b{c{d,e}f{x,y{}g}h
-a{b{c{d,e}f{x,y}}g}h
-a{b{c{d,e}f}g}h
-a{{x,y},z}b
-f{x,y{g,z}}h
-f{x,y{{g,z}}h
-f{x,y{{g,z}}h}
-f{x,y{{g}h
-f{x,y{{g}}h
-f{x,y{}g}h
-z{a,b{,c}d
-z{a,b},c}d
-{-01..5}
-{-05..100..5}
-{-05..100}
-{0..5..2}
-{0001..05..2}
-{0001..-5..2}
-{0001..-5..-2}
-{0001..5..-2}
-{01..5}
-{1..05}
-{1..05..3}
-{05..100}
-{0a..0z}
-{a,b\\}c,d}
-{a,b{c,d}
-{a,b}c,d}
-{a..F}
-{A..f}
-{a..Z}
-{A..z}
-{z..A}
-{Z..a}
-{a..F..2}
-{A..f..02}
-{a..Z..5}
-d{a..Z..5}b
-{A..z..10}
-{z..A..-2}
-{Z..a..20}
-{a{,b}
-{a},b}
-{x,y{,}g}
-{x,y{}g}
-{{a,b}
-{{a,b},c}
-{{a,b}c}
-{{a,b},}
-X{{a,b},}X
-{{a,b},}c
-{{a,b}.}
-{{a,b}}
-X{a..#}X
-# this next one is an empty string
-
-{-10..00}
-# Need to escape slashes in here for reasons i guess.
-{a,\\\\{a,b}c}
-{a,\\{a,b}c}
-a,\\{b,c}
-{-10.\\.00}
-#### bash tests/braces.tests
-# Note that some tests are edited out because some features of
-# bash are intentionally not supported in this brace expander.
-ff{c,b,a}
-f{d,e,f}g
-{l,n,m}xyz
-{abc\\,def}
-{abc}
-{x\\,y,\\{abc\\},trie}
-# not impementing back-ticks obviously
-# XXXX\\{`echo a b c | tr ' ' ','`\\}
-{}
-# We only ever have to worry about parsing a single argument,
-# not a command line, so spaces have a different meaning than bash.
-# { }
-}
-{
-abcd{efgh
-# spaces
-# foo {1,2} bar
-# not impementing back-ticks obviously
-# `zecho foo {1,2} bar`
-# $(zecho foo {1,2} bar)
-# ${var} is not a variable here, like it is in bash. omit.
-# foo{bar,${var}.}
-# foo{bar,${var}}
-# isaacs: skip quotes for now
-# "${var}"{x,y}
-# $var{x,y}
-# ${var}{x,y}
-# new sequence brace operators
-{1..10}
-# this doesn't work yet
-{0..10,braces}
-# but this does
-{{0..10},braces}
-x{{0..10},braces}y
-{3..3}
-x{3..3}y
-{10..1}
-{10..1}y
-x{10..1}y
-{a..f}
-{f..a}
-{a..A}
-{A..a}
-{f..f}
-# mixes are incorrectly-formed brace expansions
-{1..f}
-{f..1}
-# spaces
-# 0{1..9} {10..20}
-# do negative numbers work?
-{-1..-10}
-{-20..0}
-# weirdly-formed brace expansions -- fixed in post-bash-3.1
-a-{b{d,e}}-c
-a-{bdef-{g,i}-c
-# isaacs: skip quotes for now
-# {"klklkl"}{1,2,3}
-# isaacs: this is a valid test, though
-{klklkl}{1,2,3}
-# {"x,x"}
-{1..10..2}
-{-1..-10..2}
-{-1..-10..-2}
-{10..1..-2}
-{10..1..2}
-{1..20..2}
-{1..20..20}
-{100..0..5}
-{100..0..-5}
-{a..z}
-{a..z..2}
-{z..a..-2}
-# make sure brace expansion handles ints > 2**31 - 1 using intmax_t
-{2147483645..2147483649}
-# unwanted zero-padding -- fixed post-bash-4.0
-{10..0..2}
-{10..0..-2}
-{-50..-0..5}
-# bad
-{1..10.f}
-{1..ff}
-{1..10..ff}
-{1.20..2}
-{1..20..f2}
-{1..20..2f}
-{1..2f..2}
-{1..ff..2}
-{1..ff}
-{1..f}
-{1..0f}
-{1..10f}
-{1..10.f}
-{1..10.f}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js
deleted file mode 100644
index 3fcc185a..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var test = require('tape');
-var expand = require('..');
-
-test('ignores ${', function(t) {
- t.deepEqual(expand('${1..3}'), ['${1..3}']);
- t.deepEqual(expand('${a,b}${c,d}'), ['${a,b}${c,d}']);
- t.deepEqual(expand('x${a,b}x${c,d}x'), ['x${a,b}x${c,d}x']);
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js
deleted file mode 100644
index e429121e..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var test = require('tape');
-var expand = require('..');
-
-test('empty option', function(t) {
- t.deepEqual(expand('-v{,,,,}'), [
- '-v', '-v', '-v', '-v', '-v'
- ]);
- t.end();
-});
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh
deleted file mode 100644
index e040e664..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-# Bash 4.3 because of arbitrary need to pick a single standard.
-
-if [ "${BASH_VERSINFO[0]}" != "4" ] || [ "${BASH_VERSINFO[1]}" != "3" ]; then
- echo "this script requires bash 4.3" >&2
- exit 1
-fi
-
-CDPATH= cd "$(dirname "$0")"
-
-js='require("./")(process.argv[1]).join(" ")'
-
-cat cases.txt | \
- while read case; do
- if [ "${case:0:1}" = "#" ]; then
- continue;
- fi;
- b="$($BASH -c 'for c in '"$case"'; do echo ["$c"]; done')"
- echo "$case"
- echo -n "$b><><><><";
- done > bash-results.txt
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js
deleted file mode 100644
index 8d434c23..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js
+++ /dev/null
@@ -1,15 +0,0 @@
-var test = require('tape');
-var expand = require('..');
-
-test('negative increment', function(t) {
- t.deepEqual(expand('{3..1}'), ['3', '2', '1']);
- t.deepEqual(expand('{10..8}'), ['10', '9', '8']);
- t.deepEqual(expand('{10..08}'), ['10', '09', '08']);
- t.deepEqual(expand('{c..a}'), ['c', 'b', 'a']);
-
- t.deepEqual(expand('{4..0..2}'), ['4', '2', '0']);
- t.deepEqual(expand('{4..0..-2}'), ['4', '2', '0']);
- t.deepEqual(expand('{e..a..2}'), ['e', 'c', 'a']);
-
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js
deleted file mode 100644
index 0862dc51..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var test = require('tape');
-var expand = require('..');
-
-test('nested', function(t) {
- t.deepEqual(expand('{a,b{1..3},c}'), [
- 'a', 'b1', 'b2', 'b3', 'c'
- ]);
- t.deepEqual(expand('{{A..Z},{a..z}}'),
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
- );
- t.deepEqual(expand('ppp{,config,oe{,conf}}'), [
- 'ppp', 'pppconfig', 'pppoe', 'pppoeconf'
- ]);
- t.end();
-});
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js
deleted file mode 100644
index c00ad155..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var test = require('tape');
-var expand = require('..');
-
-test('order', function(t) {
- t.deepEqual(expand('a{d,c,b}e'), [
- 'ade', 'ace', 'abe'
- ]);
- t.end();
-});
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js
deleted file mode 100644
index e4158775..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var test = require('tape');
-var expand = require('..');
-
-test('pad', function(t) {
- t.deepEqual(expand('{9..11}'), [
- '9', '10', '11'
- ]);
- t.deepEqual(expand('{09..11}'), [
- '09', '10', '11'
- ]);
- t.end();
-});
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js
deleted file mode 100644
index 3038fba7..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var test = require('tape');
-var expand = require('..');
-
-test('x and y of same type', function(t) {
- t.deepEqual(expand('{a..9}'), ['{a..9}']);
- t.end();
-});
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js
deleted file mode 100644
index f73a9579..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js
+++ /dev/null
@@ -1,50 +0,0 @@
-var test = require('tape');
-var expand = require('..');
-
-test('numeric sequences', function(t) {
- t.deepEqual(expand('a{1..2}b{2..3}c'), [
- 'a1b2c', 'a1b3c', 'a2b2c', 'a2b3c'
- ]);
- t.deepEqual(expand('{1..2}{2..3}'), [
- '12', '13', '22', '23'
- ]);
- t.end();
-});
-
-test('numeric sequences with step count', function(t) {
- t.deepEqual(expand('{0..8..2}'), [
- '0', '2', '4', '6', '8'
- ]);
- t.deepEqual(expand('{1..8..2}'), [
- '1', '3', '5', '7'
- ]);
- t.end();
-});
-
-test('numeric sequence with negative x / y', function(t) {
- t.deepEqual(expand('{3..-2}'), [
- '3', '2', '1', '0', '-1', '-2'
- ]);
- t.end();
-});
-
-test('alphabetic sequences', function(t) {
- t.deepEqual(expand('1{a..b}2{b..c}3'), [
- '1a2b3', '1a2c3', '1b2b3', '1b2c3'
- ]);
- t.deepEqual(expand('{a..b}{b..c}'), [
- 'ab', 'ac', 'bb', 'bc'
- ]);
- t.end();
-});
-
-test('alphabetic sequences with step count', function(t) {
- t.deepEqual(expand('{a..k..2}'), [
- 'a', 'c', 'e', 'g', 'i', 'k'
- ]);
- t.deepEqual(expand('{b..k..2}'), [
- 'b', 'd', 'f', 'h', 'j'
- ]);
- t.end();
-});
-
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/package.json
deleted file mode 100644
index 3dc6beb4..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/minimatch/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me"
- },
- "name": "minimatch",
- "description": "a glob matcher in javascript",
- "version": "2.0.10",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/minimatch.git"
- },
- "main": "minimatch.js",
- "scripts": {
- "posttest": "standard minimatch.js test/*.js",
- "test": "tap test/*.js",
- "prepublish": "browserify -o browser.js -e minimatch.js -s minimatch --bare"
- },
- "engines": {
- "node": "*"
- },
- "dependencies": {
- "brace-expansion": "^1.0.0"
- },
- "devDependencies": {
- "browserify": "^9.0.3",
- "standard": "^3.7.2",
- "tap": "^1.2.0"
- },
- "license": "ISC",
- "files": [
- "minimatch.js",
- "browser.js"
- ],
- "gitHead": "6afb85f0c324b321f76a38df81891e562693e257",
- "bugs": {
- "url": "https://github.com/isaacs/minimatch/issues"
- },
- "homepage": "https://github.com/isaacs/minimatch#readme",
- "_id": "minimatch@2.0.10",
- "_shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7",
- "_from": "minimatch@>=2.0.1 <3.0.0",
- "_npmVersion": "3.1.0",
- "_nodeVersion": "2.2.1",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7",
- "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/LICENSE
deleted file mode 100644
index 19129e31..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/README.md
deleted file mode 100644
index a2981ea0..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# once
-
-Only call a function once.
-
-## usage
-
-```javascript
-var once = require('once')
-
-function load (file, cb) {
- cb = once(cb)
- loader.load('file')
- loader.once('load', cb)
- loader.once('error', cb)
-}
-```
-
-Or add to the Function.prototype in a responsible way:
-
-```javascript
-// only has to be done once
-require('once').proto()
-
-function load (file, cb) {
- cb = cb.once()
- loader.load('file')
- loader.once('load', cb)
- loader.once('error', cb)
-}
-```
-
-Ironically, the prototype feature makes this module twice as
-complicated as necessary.
-
-To check whether you function has been called, use `fn.called`. Once the
-function is called for the first time the return value of the original
-function is saved in `fn.value` and subsequent calls will continue to
-return this value.
-
-```javascript
-var once = require('once')
-
-function load (cb) {
- cb = once(cb)
- var stream = createStream()
- stream.once('data', cb)
- stream.once('end', function () {
- if (!cb.called) cb(new Error('not found'))
- })
-}
-```
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE
deleted file mode 100644
index 19129e31..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE
+++ /dev/null
@@ -1,15 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter and Contributors
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/README.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/README.md
deleted file mode 100644
index 98eab252..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# wrappy
-
-Callback wrapping utility
-
-## USAGE
-
-```javascript
-var wrappy = require("wrappy")
-
-// var wrapper = wrappy(wrapperFunction)
-
-// make sure a cb is called only once
-// See also: http://npm.im/once for this specific use case
-var once = wrappy(function (cb) {
- var called = false
- return function () {
- if (called) return
- called = true
- return cb.apply(this, arguments)
- }
-})
-
-function printBoo () {
- console.log('boo')
-}
-// has some rando property
-printBoo.iAmBooPrinter = true
-
-var onlyPrintOnce = once(printBoo)
-
-onlyPrintOnce() // prints 'boo'
-onlyPrintOnce() // does nothing
-
-// random property is retained!
-assert.equal(onlyPrintOnce.iAmBooPrinter, true)
-```
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/package.json
deleted file mode 100644
index 5a07040a..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/package.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "name": "wrappy",
- "version": "1.0.1",
- "description": "Callback wrapping utility",
- "main": "wrappy.js",
- "directories": {
- "test": "test"
- },
- "dependencies": {},
- "devDependencies": {
- "tap": "^0.4.12"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/npm/wrappy.git"
- },
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "license": "ISC",
- "bugs": {
- "url": "https://github.com/npm/wrappy/issues"
- },
- "homepage": "https://github.com/npm/wrappy",
- "gitHead": "006a8cbac6b99988315834c207896eed71fd069a",
- "_id": "wrappy@1.0.1",
- "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
- "_from": "wrappy@>=1.0.0 <2.0.0",
- "_npmVersion": "2.0.0",
- "_nodeVersion": "0.10.31",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "dist": {
- "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
- "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
- },
- "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js
deleted file mode 100644
index 5ed0fcdf..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js
+++ /dev/null
@@ -1,51 +0,0 @@
-var test = require('tap').test
-var wrappy = require('../wrappy.js')
-
-test('basic', function (t) {
- function onceifier (cb) {
- var called = false
- return function () {
- if (called) return
- called = true
- return cb.apply(this, arguments)
- }
- }
- onceifier.iAmOnce = {}
- var once = wrappy(onceifier)
- t.equal(once.iAmOnce, onceifier.iAmOnce)
-
- var called = 0
- function boo () {
- t.equal(called, 0)
- called++
- }
- // has some rando property
- boo.iAmBoo = true
-
- var onlyPrintOnce = once(boo)
-
- onlyPrintOnce() // prints 'boo'
- onlyPrintOnce() // does nothing
- t.equal(called, 1)
-
- // random property is retained!
- t.equal(onlyPrintOnce.iAmBoo, true)
-
- var logs = []
- var logwrap = wrappy(function (msg, cb) {
- logs.push(msg + ' wrapping cb')
- return function () {
- logs.push(msg + ' before cb')
- var ret = cb.apply(this, arguments)
- logs.push(msg + ' after cb')
- }
- })
-
- var c = logwrap('foo', function () {
- t.same(logs, [ 'foo wrapping cb', 'foo before cb' ])
- })
- c()
- t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ])
-
- t.end()
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js
deleted file mode 100644
index bb7e7d6f..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Returns a wrapper function that returns a wrapped callback
-// The wrapper function should do some stuff, and return a
-// presumably different callback function.
-// This makes sure that own properties are retained, so that
-// decorations and such are not lost along the way.
-module.exports = wrappy
-function wrappy (fn, cb) {
- if (fn && cb) return wrappy(fn)(cb)
-
- if (typeof fn !== 'function')
- throw new TypeError('need wrapper function')
-
- Object.keys(fn).forEach(function (k) {
- wrapper[k] = fn[k]
- })
-
- return wrapper
-
- function wrapper() {
- var args = new Array(arguments.length)
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i]
- }
- var ret = fn.apply(this, args)
- var cb = args[args.length-1]
- if (typeof ret === 'function' && ret !== cb) {
- Object.keys(cb).forEach(function (k) {
- ret[k] = cb[k]
- })
- }
- return ret
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/once.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/once.js
deleted file mode 100644
index 2e1e721b..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/once.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var wrappy = require('wrappy')
-module.exports = wrappy(once)
-
-once.proto = once(function () {
- Object.defineProperty(Function.prototype, 'once', {
- value: function () {
- return once(this)
- },
- configurable: true
- })
-})
-
-function once (fn) {
- var f = function () {
- if (f.called) return f.value
- f.called = true
- return f.value = fn.apply(this, arguments)
- }
- f.called = false
- return f
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/package.json
deleted file mode 100644
index 8f46e507..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "name": "once",
- "version": "1.3.2",
- "description": "Run a function exactly one time",
- "main": "once.js",
- "directories": {
- "test": "test"
- },
- "dependencies": {
- "wrappy": "1"
- },
- "devDependencies": {
- "tap": "~0.3.0"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/once.git"
- },
- "keywords": [
- "once",
- "function",
- "one",
- "single"
- ],
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "license": "ISC",
- "gitHead": "e35eed5a7867574e2bf2260a1ba23970958b22f2",
- "bugs": {
- "url": "https://github.com/isaacs/once/issues"
- },
- "homepage": "https://github.com/isaacs/once#readme",
- "_id": "once@1.3.2",
- "_shasum": "d8feeca93b039ec1dcdee7741c92bdac5e28081b",
- "_from": "once@>=1.3.0 <2.0.0",
- "_npmVersion": "2.9.1",
- "_nodeVersion": "2.0.0",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "d8feeca93b039ec1dcdee7741c92bdac5e28081b",
- "tarball": "http://registry.npmjs.org/once/-/once-1.3.2.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "_resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/test/once.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/test/once.js
deleted file mode 100644
index c618360d..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/once/test/once.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var test = require('tap').test
-var once = require('../once.js')
-
-test('once', function (t) {
- var f = 0
- function fn (g) {
- t.equal(f, 0)
- f ++
- return f + g + this
- }
- fn.ownProperty = {}
- var foo = once(fn)
- t.equal(fn.ownProperty, foo.ownProperty)
- t.notOk(foo.called)
- for (var i = 0; i < 1E3; i++) {
- t.same(f, i === 0 ? 0 : 1)
- var g = foo.call(1, 1)
- t.ok(foo.called)
- t.same(g, 3)
- t.same(f, 1)
- }
- t.end()
-})
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/index.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/index.js
deleted file mode 100644
index 19f103f9..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-'use strict';
-
-function posix(path) {
- return path.charAt(0) === '/';
-};
-
-function win32(path) {
- // https://github.com/joyent/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
- var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
- var result = splitDeviceRe.exec(path);
- var device = result[1] || '';
- var isUnc = !!device && device.charAt(1) !== ':';
-
- // UNC paths are always absolute
- return !!result[2] || isUnc;
-};
-
-module.exports = process.platform === 'win32' ? win32 : posix;
-module.exports.posix = posix;
-module.exports.win32 = win32;
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/license b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/license
deleted file mode 100644
index 654d0bfe..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/license
+++ /dev/null
@@ -1,21 +0,0 @@
-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/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/package.json
deleted file mode 100644
index 39372636..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "name": "path-is-absolute",
- "version": "1.0.0",
- "description": "Node.js 0.12 path.isAbsolute() ponyfill",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/sindresorhus/path-is-absolute.git"
- },
- "author": {
- "name": "Sindre Sorhus",
- "email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "test": "node test.js"
- },
- "files": [
- "index.js"
- ],
- "keywords": [
- "path",
- "paths",
- "file",
- "dir",
- "absolute",
- "isabsolute",
- "is-absolute",
- "built-in",
- "util",
- "utils",
- "core",
- "ponyfill",
- "polyfill",
- "shim",
- "is",
- "detect",
- "check"
- ],
- "gitHead": "7a76a0c9f2263192beedbe0a820e4d0baee5b7a1",
- "bugs": {
- "url": "https://github.com/sindresorhus/path-is-absolute/issues"
- },
- "homepage": "https://github.com/sindresorhus/path-is-absolute",
- "_id": "path-is-absolute@1.0.0",
- "_shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912",
- "_from": "path-is-absolute@>=1.0.0 <2.0.0",
- "_npmVersion": "2.5.1",
- "_nodeVersion": "0.12.0",
- "_npmUser": {
- "name": "sindresorhus",
- "email": "sindresorhus@gmail.com"
- },
- "maintainers": [
- {
- "name": "sindresorhus",
- "email": "sindresorhus@gmail.com"
- }
- ],
- "dist": {
- "shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912",
- "tarball": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/readme.md b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/readme.md
deleted file mode 100644
index cdf94f43..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/readme.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# path-is-absolute [![Build Status](https://travis-ci.org/sindresorhus/path-is-absolute.svg?branch=master)](https://travis-ci.org/sindresorhus/path-is-absolute)
-
-> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) ponyfill
-
-> Ponyfill: A polyfill that doesn't overwrite the native method
-
-
-## Install
-
-```
-$ npm install --save path-is-absolute
-```
-
-
-## Usage
-
-```js
-var pathIsAbsolute = require('path-is-absolute');
-
-// Linux
-pathIsAbsolute('/home/foo');
-//=> true
-
-// Windows
-pathIsAbsolute('C:/Users/');
-//=> true
-
-// Any OS
-pathIsAbsolute.posix('/home/foo');
-//=> true
-```
-
-
-## API
-
-See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path).
-
-### pathIsAbsolute(path)
-
-### pathIsAbsolute.posix(path)
-
-The Posix specific version.
-
-### pathIsAbsolute.win32(path)
-
-The Windows specific version.
-
-
-## License
-
-MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/package.json
deleted file mode 100644
index 3fa7b78b..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/package.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "name": "glob",
- "description": "a little globber",
- "version": "5.0.14",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-glob.git"
- },
- "main": "glob.js",
- "files": [
- "glob.js",
- "sync.js",
- "common.js"
- ],
- "engines": {
- "node": "*"
- },
- "dependencies": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^2.0.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "devDependencies": {
- "mkdirp": "0",
- "rimraf": "^2.2.8",
- "tap": "^1.1.4",
- "tick": "0.0.6"
- },
- "scripts": {
- "prepublish": "npm run benchclean",
- "profclean": "rm -f v8.log profile.txt",
- "test": "tap test/*.js --cov",
- "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js",
- "bench": "bash benchmark.sh",
- "prof": "bash prof.sh && cat profile.txt",
- "benchclean": "node benchclean.js"
- },
- "license": "ISC",
- "gitHead": "c47d4514f8f93f23b589afa18947306116bfe40f",
- "bugs": {
- "url": "https://github.com/isaacs/node-glob/issues"
- },
- "homepage": "https://github.com/isaacs/node-glob#readme",
- "_id": "glob@5.0.14",
- "_shasum": "a811d507acb605441edd6cd2622a3c6f06cc00e1",
- "_from": "glob@>=5.0.14 <6.0.0",
- "_npmVersion": "3.1.0",
- "_nodeVersion": "2.2.1",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "a811d507acb605441edd6cd2622a3c6f06cc00e1",
- "tarball": "http://registry.npmjs.org/glob/-/glob-5.0.14.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/sync.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/sync.js
deleted file mode 100644
index 09883d2c..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/node_modules/glob/sync.js
+++ /dev/null
@@ -1,460 +0,0 @@
-module.exports = globSync
-globSync.GlobSync = GlobSync
-
-var fs = require('fs')
-var minimatch = require('minimatch')
-var Minimatch = minimatch.Minimatch
-var Glob = require('./glob.js').Glob
-var util = require('util')
-var path = require('path')
-var assert = require('assert')
-var isAbsolute = require('path-is-absolute')
-var common = require('./common.js')
-var alphasort = common.alphasort
-var alphasorti = common.alphasorti
-var setopts = common.setopts
-var ownProp = common.ownProp
-var childrenIgnored = common.childrenIgnored
-
-function globSync (pattern, options) {
- if (typeof options === 'function' || arguments.length === 3)
- throw new TypeError('callback provided to sync glob\n'+
- 'See: https://github.com/isaacs/node-glob/issues/167')
-
- return new GlobSync(pattern, options).found
-}
-
-function GlobSync (pattern, options) {
- if (!pattern)
- throw new Error('must provide pattern')
-
- if (typeof options === 'function' || arguments.length === 3)
- throw new TypeError('callback provided to sync glob\n'+
- 'See: https://github.com/isaacs/node-glob/issues/167')
-
- if (!(this instanceof GlobSync))
- return new GlobSync(pattern, options)
-
- setopts(this, pattern, options)
-
- if (this.noprocess)
- return this
-
- var n = this.minimatch.set.length
- this.matches = new Array(n)
- for (var i = 0; i < n; i ++) {
- this._process(this.minimatch.set[i], i, false)
- }
- this._finish()
-}
-
-GlobSync.prototype._finish = function () {
- assert(this instanceof GlobSync)
- if (this.realpath) {
- var self = this
- this.matches.forEach(function (matchset, index) {
- var set = self.matches[index] = Object.create(null)
- for (var p in matchset) {
- try {
- p = self._makeAbs(p)
- var real = fs.realpathSync(p, self.realpathCache)
- set[real] = true
- } catch (er) {
- if (er.syscall === 'stat')
- set[self._makeAbs(p)] = true
- else
- throw er
- }
- }
- })
- }
- common.finish(this)
-}
-
-
-GlobSync.prototype._process = function (pattern, index, inGlobStar) {
- assert(this instanceof GlobSync)
-
- // Get the first [n] parts of pattern that are all strings.
- var n = 0
- while (typeof pattern[n] === 'string') {
- n ++
- }
- // now n is the index of the first one that is *not* a string.
-
- // See if there's anything else
- var prefix
- switch (n) {
- // if not, then this is rather simple
- case pattern.length:
- this._processSimple(pattern.join('/'), index)
- return
-
- case 0:
- // pattern *starts* with some non-trivial item.
- // going to readdir(cwd), but not include the prefix in matches.
- prefix = null
- break
-
- default:
- // pattern has some string bits in the front.
- // whatever it starts with, whether that's 'absolute' like /foo/bar,
- // or 'relative' like '../baz'
- prefix = pattern.slice(0, n).join('/')
- break
- }
-
- var remain = pattern.slice(n)
-
- // get the list of entries.
- var read
- if (prefix === null)
- read = '.'
- else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {
- if (!prefix || !isAbsolute(prefix))
- prefix = '/' + prefix
- read = prefix
- } else
- read = prefix
-
- var abs = this._makeAbs(read)
-
- //if ignored, skip processing
- if (childrenIgnored(this, read))
- return
-
- var isGlobStar = remain[0] === minimatch.GLOBSTAR
- if (isGlobStar)
- this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)
- else
- this._processReaddir(prefix, read, abs, remain, index, inGlobStar)
-}
-
-
-GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
- var entries = this._readdir(abs, inGlobStar)
-
- // if the abs isn't a dir, then nothing can match!
- if (!entries)
- return
-
- // It will only match dot entries if it starts with a dot, or if
- // dot is set. Stuff like @(.foo|.bar) isn't allowed.
- var pn = remain[0]
- var negate = !!this.minimatch.negate
- var rawGlob = pn._glob
- var dotOk = this.dot || rawGlob.charAt(0) === '.'
-
- var matchedEntries = []
- for (var i = 0; i < entries.length; i++) {
- var e = entries[i]
- if (e.charAt(0) !== '.' || dotOk) {
- var m
- if (negate && !prefix) {
- m = !e.match(pn)
- } else {
- m = e.match(pn)
- }
- if (m)
- matchedEntries.push(e)
- }
- }
-
- var len = matchedEntries.length
- // If there are no matched entries, then nothing matches.
- if (len === 0)
- return
-
- // if this is the last remaining pattern bit, then no need for
- // an additional stat *unless* the user has specified mark or
- // stat explicitly. We know they exist, since readdir returned
- // them.
-
- if (remain.length === 1 && !this.mark && !this.stat) {
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- if (prefix) {
- if (prefix.slice(-1) !== '/')
- e = prefix + '/' + e
- else
- e = prefix + e
- }
-
- if (e.charAt(0) === '/' && !this.nomount) {
- e = path.join(this.root, e)
- }
- this.matches[index][e] = true
- }
- // This was the last one, and no stats were needed
- return
- }
-
- // now test all matched entries as stand-ins for that part
- // of the pattern.
- remain.shift()
- for (var i = 0; i < len; i ++) {
- var e = matchedEntries[i]
- var newPattern
- if (prefix)
- newPattern = [prefix, e]
- else
- newPattern = [e]
- this._process(newPattern.concat(remain), index, inGlobStar)
- }
-}
-
-
-GlobSync.prototype._emitMatch = function (index, e) {
- var abs = this._makeAbs(e)
- if (this.mark)
- e = this._mark(e)
-
- if (this.matches[index][e])
- return
-
- if (this.nodir) {
- var c = this.cache[this._makeAbs(e)]
- if (c === 'DIR' || Array.isArray(c))
- return
- }
-
- this.matches[index][e] = true
- if (this.stat)
- this._stat(e)
-}
-
-
-GlobSync.prototype._readdirInGlobStar = function (abs) {
- // follow all symlinked directories forever
- // just proceed as if this is a non-globstar situation
- if (this.follow)
- return this._readdir(abs, false)
-
- var entries
- var lstat
- var stat
- try {
- lstat = fs.lstatSync(abs)
- } catch (er) {
- // lstat failed, doesn't exist
- return null
- }
-
- var isSym = lstat.isSymbolicLink()
- this.symlinks[abs] = isSym
-
- // If it's not a symlink or a dir, then it's definitely a regular file.
- // don't bother doing a readdir in that case.
- if (!isSym && !lstat.isDirectory())
- this.cache[abs] = 'FILE'
- else
- entries = this._readdir(abs, false)
-
- return entries
-}
-
-GlobSync.prototype._readdir = function (abs, inGlobStar) {
- var entries
-
- if (inGlobStar && !ownProp(this.symlinks, abs))
- return this._readdirInGlobStar(abs)
-
- if (ownProp(this.cache, abs)) {
- var c = this.cache[abs]
- if (!c || c === 'FILE')
- return null
-
- if (Array.isArray(c))
- return c
- }
-
- try {
- return this._readdirEntries(abs, fs.readdirSync(abs))
- } catch (er) {
- this._readdirError(abs, er)
- return null
- }
-}
-
-GlobSync.prototype._readdirEntries = function (abs, entries) {
- // if we haven't asked to stat everything, then just
- // assume that everything in there exists, so we can avoid
- // having to stat it a second time.
- if (!this.mark && !this.stat) {
- for (var i = 0; i < entries.length; i ++) {
- var e = entries[i]
- if (abs === '/')
- e = abs + e
- else
- e = abs + '/' + e
- this.cache[e] = true
- }
- }
-
- this.cache[abs] = entries
-
- // mark and cache dir-ness
- return entries
-}
-
-GlobSync.prototype._readdirError = function (f, er) {
- // handle errors, and cache the information
- switch (er.code) {
- case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
- case 'ENOTDIR': // totally normal. means it *does* exist.
- this.cache[this._makeAbs(f)] = 'FILE'
- break
-
- case 'ENOENT': // not terribly unusual
- case 'ELOOP':
- case 'ENAMETOOLONG':
- case 'UNKNOWN':
- this.cache[this._makeAbs(f)] = false
- break
-
- default: // some unusual error. Treat as failure.
- this.cache[this._makeAbs(f)] = false
- if (this.strict)
- throw er
- if (!this.silent)
- console.error('glob error', er)
- break
- }
-}
-
-GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
-
- var entries = this._readdir(abs, inGlobStar)
-
- // no entries means not a dir, so it can never have matches
- // foo.txt/** doesn't match foo.txt
- if (!entries)
- return
-
- // test without the globstar, and with every child both below
- // and replacing the globstar.
- var remainWithoutGlobStar = remain.slice(1)
- var gspref = prefix ? [ prefix ] : []
- var noGlobStar = gspref.concat(remainWithoutGlobStar)
-
- // the noGlobStar pattern exits the inGlobStar state
- this._process(noGlobStar, index, false)
-
- var len = entries.length
- var isSym = this.symlinks[abs]
-
- // If it's a symlink, and we're in a globstar, then stop
- if (isSym && inGlobStar)
- return
-
- for (var i = 0; i < len; i++) {
- var e = entries[i]
- if (e.charAt(0) === '.' && !this.dot)
- continue
-
- // these two cases enter the inGlobStar state
- var instead = gspref.concat(entries[i], remainWithoutGlobStar)
- this._process(instead, index, true)
-
- var below = gspref.concat(entries[i], remain)
- this._process(below, index, true)
- }
-}
-
-GlobSync.prototype._processSimple = function (prefix, index) {
- // XXX review this. Shouldn't it be doing the mounting etc
- // before doing stat? kinda weird?
- var exists = this._stat(prefix)
-
- if (!this.matches[index])
- this.matches[index] = Object.create(null)
-
- // If it doesn't exist, then just mark the lack of results
- if (!exists)
- return
-
- if (prefix && isAbsolute(prefix) && !this.nomount) {
- var trail = /[\/\\]$/.test(prefix)
- if (prefix.charAt(0) === '/') {
- prefix = path.join(this.root, prefix)
- } else {
- prefix = path.resolve(this.root, prefix)
- if (trail)
- prefix += '/'
- }
- }
-
- if (process.platform === 'win32')
- prefix = prefix.replace(/\\/g, '/')
-
- // Mark this as a match
- this.matches[index][prefix] = true
-}
-
-// Returns either 'DIR', 'FILE', or false
-GlobSync.prototype._stat = function (f) {
- var abs = this._makeAbs(f)
- var needDir = f.slice(-1) === '/'
-
- if (f.length > this.maxLength)
- return false
-
- if (!this.stat && ownProp(this.cache, abs)) {
- var c = this.cache[abs]
-
- if (Array.isArray(c))
- c = 'DIR'
-
- // It exists, but maybe not how we need it
- if (!needDir || c === 'DIR')
- return c
-
- if (needDir && c === 'FILE')
- return false
-
- // otherwise we have to stat, because maybe c=true
- // if we know it exists, but not what it is.
- }
-
- var exists
- var stat = this.statCache[abs]
- if (!stat) {
- var lstat
- try {
- lstat = fs.lstatSync(abs)
- } catch (er) {
- return false
- }
-
- if (lstat.isSymbolicLink()) {
- try {
- stat = fs.statSync(abs)
- } catch (er) {
- stat = lstat
- }
- } else {
- stat = lstat
- }
- }
-
- this.statCache[abs] = stat
-
- var c = stat.isDirectory() ? 'DIR' : 'FILE'
- this.cache[abs] = this.cache[abs] || c
-
- if (needDir && c !== 'DIR')
- return false
-
- return c
-}
-
-GlobSync.prototype._mark = function (p) {
- return common.mark(this, p)
-}
-
-GlobSync.prototype._makeAbs = function (f) {
- return common.makeAbs(this, f)
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/package.json b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/package.json
deleted file mode 100644
index 68f1fed5..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/package.json
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- "name": "rimraf",
- "version": "2.4.2",
- "main": "rimraf.js",
- "description": "A deep deletion module for node (like `rm -rf`)",
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "license": "ISC",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/rimraf.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "bin": {
- "rimraf": "./bin.js"
- },
- "dependencies": {
- "glob": "^5.0.14"
- },
- "files": [
- "LICENSE",
- "README.md",
- "bin.js",
- "rimraf.js"
- ],
- "devDependencies": {
- "mkdirp": "^0.5.1",
- "tap": "^1.3.1"
- },
- "gitHead": "4359e9d3b3c0f26e6abe3139a00b93337f1689d7",
- "bugs": {
- "url": "https://github.com/isaacs/rimraf/issues"
- },
- "homepage": "https://github.com/isaacs/rimraf#readme",
- "_id": "rimraf@2.4.2",
- "_shasum": "ab4f39b08b72eae07c3d9fe9f4831aebfc9f431d",
- "_from": "rimraf@>=2.0.0 <3.0.0",
- "_npmVersion": "3.1.0",
- "_nodeVersion": "2.2.1",
- "_npmUser": {
- "name": "isaacs",
- "email": "isaacs@npmjs.com"
- },
- "dist": {
- "shasum": "ab4f39b08b72eae07c3d9fe9f4831aebfc9f431d",
- "tarball": "http://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
- "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.2.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/rimraf.js b/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/rimraf.js
deleted file mode 100644
index 447705ac..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/node_modules/rimraf/rimraf.js
+++ /dev/null
@@ -1,333 +0,0 @@
-module.exports = rimraf
-rimraf.sync = rimrafSync
-
-var assert = require("assert")
-var path = require("path")
-var fs = require("fs")
-var glob = require("glob")
-
-var globOpts = {
- nosort: true,
- nocomment: true,
- nonegate: true,
- silent: true
-}
-
-// for EMFILE handling
-var timeout = 0
-
-var isWindows = (process.platform === "win32")
-
-function defaults (options) {
- var methods = [
- 'unlink',
- 'chmod',
- 'stat',
- 'lstat',
- 'rmdir',
- 'readdir'
- ]
- methods.forEach(function(m) {
- options[m] = options[m] || fs[m]
- m = m + 'Sync'
- options[m] = options[m] || fs[m]
- })
-
- options.maxBusyTries = options.maxBusyTries || 3
- options.emfileWait = options.emfileWait || 1000
- options.disableGlob = options.disableGlob || false
-}
-
-function rimraf (p, options, cb) {
- if (typeof options === 'function') {
- cb = options
- options = {}
- }
-
- assert(p, 'rimraf: missing path')
- assert.equal(typeof p, 'string', 'rimraf: path should be a string')
- assert(options, 'rimraf: missing options')
- assert.equal(typeof options, 'object', 'rimraf: options should be object')
- assert.equal(typeof cb, 'function', 'rimraf: callback function required')
-
- defaults(options)
-
- var busyTries = 0
- var errState = null
- var n = 0
-
- if (options.disableGlob || !glob.hasMagic(p))
- return afterGlob(null, [p])
-
- fs.lstat(p, function (er, stat) {
- if (!er)
- return afterGlob(null, [p])
-
- glob(p, globOpts, afterGlob)
- })
-
- function next (er) {
- errState = errState || er
- if (--n === 0)
- cb(errState)
- }
-
- function afterGlob (er, results) {
- if (er)
- return cb(er)
-
- n = results.length
- if (n === 0)
- return cb()
-
- results.forEach(function (p) {
- rimraf_(p, options, function CB (er) {
- if (er) {
- if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY") &&
- busyTries < options.maxBusyTries) {
- busyTries ++
- var time = busyTries * 100
- // try again, with the same exact callback as this one.
- return setTimeout(function () {
- rimraf_(p, options, CB)
- }, time)
- }
-
- // this one won't happen if graceful-fs is used.
- if (er.code === "EMFILE" && timeout < options.emfileWait) {
- return setTimeout(function () {
- rimraf_(p, options, CB)
- }, timeout ++)
- }
-
- // already gone
- if (er.code === "ENOENT") er = null
- }
-
- timeout = 0
- next(er)
- })
- })
- }
-}
-
-// Two possible strategies.
-// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR
-// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR
-//
-// Both result in an extra syscall when you guess wrong. However, there
-// are likely far more normal files in the world than directories. This
-// is based on the assumption that a the average number of files per
-// directory is >= 1.
-//
-// If anyone ever complains about this, then I guess the strategy could
-// be made configurable somehow. But until then, YAGNI.
-function rimraf_ (p, options, cb) {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
-
- // sunos lets the root user unlink directories, which is... weird.
- // so we have to lstat here and make sure it's not a dir.
- options.lstat(p, function (er, st) {
- if (er && er.code === "ENOENT")
- return cb(null)
-
- if (st && st.isDirectory())
- return rmdir(p, options, er, cb)
-
- options.unlink(p, function (er) {
- if (er) {
- if (er.code === "ENOENT")
- return cb(null)
- if (er.code === "EPERM")
- return (isWindows)
- ? fixWinEPERM(p, options, er, cb)
- : rmdir(p, options, er, cb)
- if (er.code === "EISDIR")
- return rmdir(p, options, er, cb)
- }
- return cb(er)
- })
- })
-}
-
-function fixWinEPERM (p, options, er, cb) {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
- if (er)
- assert(er instanceof Error)
-
- options.chmod(p, 666, function (er2) {
- if (er2)
- cb(er2.code === "ENOENT" ? null : er)
- else
- options.stat(p, function(er3, stats) {
- if (er3)
- cb(er3.code === "ENOENT" ? null : er)
- else if (stats.isDirectory())
- rmdir(p, options, er, cb)
- else
- options.unlink(p, cb)
- })
- })
-}
-
-function fixWinEPERMSync (p, options, er) {
- assert(p)
- assert(options)
- if (er)
- assert(er instanceof Error)
-
- try {
- options.chmodSync(p, 666)
- } catch (er2) {
- if (er2.code === "ENOENT")
- return
- else
- throw er
- }
-
- try {
- var stats = options.statSync(p)
- } catch (er3) {
- if (er3.code === "ENOENT")
- return
- else
- throw er
- }
-
- if (stats.isDirectory())
- rmdirSync(p, options, er)
- else
- options.unlinkSync(p)
-}
-
-function rmdir (p, options, originalEr, cb) {
- assert(p)
- assert(options)
- if (originalEr)
- assert(originalEr instanceof Error)
- assert(typeof cb === 'function')
-
- // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)
- // if we guessed wrong, and it's not a directory, then
- // raise the original error.
- options.rmdir(p, function (er) {
- if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM"))
- rmkids(p, options, cb)
- else if (er && er.code === "ENOTDIR")
- cb(originalEr)
- else
- cb(er)
- })
-}
-
-function rmkids(p, options, cb) {
- assert(p)
- assert(options)
- assert(typeof cb === 'function')
-
- options.readdir(p, function (er, files) {
- if (er)
- return cb(er)
- var n = files.length
- if (n === 0)
- return options.rmdir(p, cb)
- var errState
- files.forEach(function (f) {
- rimraf(path.join(p, f), options, function (er) {
- if (errState)
- return
- if (er)
- return cb(errState = er)
- if (--n === 0)
- options.rmdir(p, cb)
- })
- })
- })
-}
-
-// this looks simpler, and is strictly *faster*, but will
-// tie up the JavaScript thread and fail on excessively
-// deep directory trees.
-function rimrafSync (p, options) {
- options = options || {}
- defaults(options)
-
- assert(p, 'rimraf: missing path')
- assert.equal(typeof p, 'string', 'rimraf: path should be a string')
- assert(options, 'rimraf: missing options')
- assert.equal(typeof options, 'object', 'rimraf: options should be object')
-
- var results
-
- if (options.disableGlob || !glob.hasMagic(p)) {
- results = [p]
- } else {
- try {
- fs.lstatSync(p)
- results = [p]
- } catch (er) {
- results = glob.sync(p, globOpts)
- }
- }
-
- if (!results.length)
- return
-
- for (var i = 0; i < results.length; i++) {
- var p = results[i]
-
- try {
- var st = options.lstatSync(p)
- } catch (er) {
- if (er.code === "ENOENT")
- return
- }
-
- try {
- // sunos lets the root user unlink directories, which is... weird.
- if (st && st.isDirectory())
- rmdirSync(p, options, null)
- else
- options.unlinkSync(p)
- } catch (er) {
- if (er.code === "ENOENT")
- return
- if (er.code === "EPERM")
- return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er)
- if (er.code !== "EISDIR")
- throw er
- rmdirSync(p, options, er)
- }
- }
-}
-
-function rmdirSync (p, options, originalEr) {
- assert(p)
- assert(options)
- if (originalEr)
- assert(originalEr instanceof Error)
-
- try {
- options.rmdirSync(p)
- } catch (er) {
- if (er.code === "ENOENT")
- return
- if (er.code === "ENOTDIR")
- throw originalEr
- if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")
- rmkidsSync(p, options)
- }
-}
-
-function rmkidsSync (p, options) {
- assert(p)
- assert(options)
- options.readdirSync(p).forEach(function (f) {
- rimrafSync(path.join(p, f), options)
- })
- options.rmdirSync(p, options)
-}
diff --git a/scripts/node_modules/unzip/node_modules/fstream/package.json b/scripts/node_modules/unzip/node_modules/fstream/package.json
deleted file mode 100644
index bbfea9ec..00000000
--- a/scripts/node_modules/unzip/node_modules/fstream/package.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "name": "fstream",
- "description": "Advanced file system stream things",
- "version": "0.1.31",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/fstream.git"
- },
- "main": "fstream.js",
- "engines": {
- "node": ">=0.6"
- },
- "dependencies": {
- "graceful-fs": "~3.0.2",
- "inherits": "~2.0.0",
- "mkdirp": "0.5",
- "rimraf": "2"
- },
- "devDependencies": {
- "tap": ""
- },
- "scripts": {
- "test": "tap examples/*.js"
- },
- "license": "BSD",
- "gitHead": "3512b3d41b4c9b3ef15cf32a04e06b297f3dd6a4",
- "bugs": {
- "url": "https://github.com/isaacs/fstream/issues"
- },
- "homepage": "https://github.com/isaacs/fstream",
- "_id": "fstream@0.1.31",
- "_shasum": "7337f058fbbbbefa8c9f561a28cab0849202c988",
- "_from": "fstream@>=0.1.30 <1.0.0",
- "_npmVersion": "2.0.0-alpha-5",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "dist": {
- "shasum": "7337f058fbbbbefa8c9f561a28cab0849202c988",
- "tarball": "http://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz"
-}
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.idea/.name b/scripts/node_modules/unzip/node_modules/match-stream/.idea/.name
deleted file mode 100644
index fb0c74e6..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-match-stream
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.idea/encodings.xml b/scripts/node_modules/unzip/node_modules/match-stream/.idea/encodings.xml
deleted file mode 100644
index e206d70d..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.idea/encodings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.idea/jsLibraryMappings.xml b/scripts/node_modules/unzip/node_modules/match-stream/.idea/jsLibraryMappings.xml
deleted file mode 100644
index 9898895c..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.idea/jsLibraryMappings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.idea/match-stream.iml b/scripts/node_modules/unzip/node_modules/match-stream/.idea/match-stream.iml
deleted file mode 100644
index 7ca609e5..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.idea/match-stream.iml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.idea/misc.xml b/scripts/node_modules/unzip/node_modules/match-stream/.idea/misc.xml
deleted file mode 100644
index 1162f438..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.idea/misc.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.idea/modules.xml b/scripts/node_modules/unzip/node_modules/match-stream/.idea/modules.xml
deleted file mode 100644
index 71597089..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.idea/modules.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.idea/scopes/scope_settings.xml b/scripts/node_modules/unzip/node_modules/match-stream/.idea/scopes/scope_settings.xml
deleted file mode 100644
index 922003b8..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.idea/scopes/scope_settings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.idea/vcs.xml b/scripts/node_modules/unzip/node_modules/match-stream/.idea/vcs.xml
deleted file mode 100644
index 9d32e507..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.idea/vcs.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.idea/workspace.xml b/scripts/node_modules/unzip/node_modules/match-stream/.idea/workspace.xml
deleted file mode 100644
index c259a7d4..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.idea/workspace.xml
+++ /dev/null
@@ -1,434 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- false
-
-
-
-
- 1362863989494
- 1362863989494
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/.travis.yml b/scripts/node_modules/unzip/node_modules/match-stream/.travis.yml
deleted file mode 100644
index 85fc71b2..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
- - "0.10"
- - "0.8"
-
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/LICENSE b/scripts/node_modules/unzip/node_modules/match-stream/LICENSE
deleted file mode 100644
index 5ff03ca4..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2013 Evan Oxfeld
-
-MIT License
-
-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/scripts/node_modules/unzip/node_modules/match-stream/README.md b/scripts/node_modules/unzip/node_modules/match-stream/README.md
deleted file mode 100644
index 624f67b3..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/README.md
+++ /dev/null
@@ -1,75 +0,0 @@
-match-stream [![Build Status](https://travis-ci.org/EvanOxfeld/match-stream.png)](https://travis-ci.org/EvanOxfeld/match-stream)
-============
-
-Supply a function to handle pattern matches within a NodeJS stream.
-
-## Installation
-
-```bash
-$ npm install match-stream
-```
-
-## Quick Examples
-
-### End stream on match
-
-```javascript
-var MatchStream = require('match-stream');
-var streamBuffers = require("stream-buffers");
-
-var ms = new MatchStream({ pattern: 'World'}, function (buf, matched, extra) {
- if (!matched) {
- return this.push(buf);
- }
- this.push(buf);
- return this.push(null); //signal end of data
-});
-
-var sourceStream = new streamBuffers.ReadableStreamBuffer();
-sourceStream.put("Hello World");
-var writableStream = new streamBuffers.WritableStreamBuffer();
-
-sourceStream
- .pipe(ms)
- .pipe(writableStream)
- .once('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- console.log('Piped data before pattern occurs:', "'" + str + "'");
- sourceStream.destroy();
- });
-
-//Output
-//Piped data before pattern occurs: 'Hello '
-```
-
-### Split stream
-
-```javascript
-var MatchStream = require('match-stream');
-var fs = require('fs');
-
-var line = "";
-var loremLines = [];
-var ms = new MatchStream({ pattern: '.', consume: true}, function (buf, matched, extra) {
- line += buf.toString();
- if (matched) {
- loremLines.push(line.trim());
- line = "";
- }
-});
-
-fs.createReadStream('lorem.txt')
- .pipe(ms)
- .once('finish', function() {
- console.log(loremLines);
- });
-```
-
-## License
-
-MIT
-
-## Acknowledgements
-
-Special thanks to @wanderview for assisting with the API.
-
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/examples/lorem.txt b/scripts/node_modules/unzip/node_modules/match-stream/examples/lorem.txt
deleted file mode 100644
index 6bb9216d..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/examples/lorem.txt
+++ /dev/null
@@ -1 +0,0 @@
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas varius tempor arcu, quis hendrerit nunc accumsan quis. In ut dolor metus, eget viverra odio. Quisque sed suscipit leo. Curabitur dictum magna ut turpis interdum a mollis nunc condimentum. Praesent leo est, hendreriteget condimentum sit amet, placerat adipiscing neque. Curabitur id metus tellus, sed semper odio. Phasellus id justo ante, vel bibendum eros. Nulla suscipit felis eget erat iaculis et aliquam turpis consequat. Nunc posuere mollis tellus sit amet dapibus. Praesent sagittis quam sit amet mauris venenatis in dignissim purus dapibus.
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/examples/split.js b/scripts/node_modules/unzip/node_modules/match-stream/examples/split.js
deleted file mode 100644
index 340b939d..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/examples/split.js
+++ /dev/null
@@ -1,32 +0,0 @@
-var MatchStream = require('../');
-var fs = require('fs');
-var path = require('path');
-
-var line = "";
-var loremLines = [];
-var ms = new MatchStream({ pattern: '.', consume: true}, function (buf, matched, extra) {
- line += buf.toString();
- if (matched) {
- loremLines.push(line.trim());
- line = "";
- }
-});
-
-fs.createReadStream(path.join(__dirname, 'lorem.txt'))
- .pipe(ms)
- .once('finish', function() {
- console.log(loremLines);
- });
-
-//Output
-//[ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
-// 'Maecenas varius tempor arcu, quis hendrerit nunc accumsan quis',
-// 'In ut dolor metus, eget viverra odio',
-// 'Quisque sed suscipit leo',
-// 'Curabitur dictum magna ut turpis interdum a mollis nunc condimentum',
-// 'Praesent leo est, hendreriteget condimentum sit amet, placerat adipiscing neque',
-// 'Curabitur id metus tellus, sed semper odio',
-// 'Phasellus id justo ante, vel bibendum eros',
-// 'Nulla suscipit felis eget erat iaculis et aliquam turpis consequat',
-// 'Nunc posuere mollis tellus sit amet dapibus',
-// 'Praesent sagittis quam sit amet mauris venenatis in dignissim purus dapibus' ]
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/examples/until.js b/scripts/node_modules/unzip/node_modules/match-stream/examples/until.js
deleted file mode 100644
index b58fb73e..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/examples/until.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var MatchStream = require('../');
-var streamBuffers = require("stream-buffers");
-
-var ms = new MatchStream({ pattern: 'World'}, function (buf, matched, extra) {
- if (!matched) {
- return this.push(buf);
- }
- this.push(buf);
- return this.push(null); //signal end of data
-});
-
-var sourceStream = new streamBuffers.ReadableStreamBuffer();
-sourceStream.put("Hello World");
-var writableStream = new streamBuffers.WritableStreamBuffer();
-
-sourceStream
- .pipe(ms)
- .pipe(writableStream)
- .once('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- console.log('Piped data before pattern occurs:', "'" + str + "'");
- sourceStream.destroy();
- });
-
-//Output
-//Piped data before pattern occurs: 'Hello '
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/match.js b/scripts/node_modules/unzip/node_modules/match-stream/match.js
deleted file mode 100644
index 43088a19..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/match.js
+++ /dev/null
@@ -1,60 +0,0 @@
-'use strict';
-
-module.exports = Match;
-
-var Transform = require('stream').Transform;
-var inherits = require("util").inherits;
-var Buffers = require('buffers');
-
-if (!Transform) {
- Transform = require('readable-stream/transform');
-}
-
-inherits(Match, Transform);
-
-function Match(opts, matchFn) {
- if (!(this instanceof Match)) {
- return new Match(opts, matchFn);
- }
-
- //todo - better handle opts e.g. pattern.length can't be > highWaterMark
- this._opts = opts;
- if (typeof this._opts.pattern === "string") {
- this._opts.pattern = new Buffer(this._opts.pattern);
- }
- this._matchFn = matchFn;
- this._bufs = Buffers();
-
- Transform.call(this);
-}
-
-Match.prototype._transform = function (chunk, encoding, callback) {
- var pattern = this._opts.pattern;
- this._bufs.push(chunk);
-
- var index = this._bufs.indexOf(pattern);
- if (index >= 0) {
- processMatches.call(this, index, pattern, callback);
- } else {
- var buf = this._bufs.splice(0, this._bufs.length - chunk.length);
- if (buf && buf.length > 0) {
- this._matchFn(buf.toBuffer());
- }
- callback();
- }
-};
-
-function processMatches(index, pattern, callback) {
- var buf = this._bufs.splice(0, index).toBuffer();
- if (this._opts.consume) {
- this._bufs.splice(0, pattern.length);
- }
- this._matchFn(buf, pattern, this._bufs.toBuffer());
-
- index = this._bufs.indexOf(pattern);
- if (index > 0 || this._opts.consume && index === 0) {
- process.nextTick(processMatches.bind(this, index, pattern, callback));
- } else {
- callback();
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/README.markdown b/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/README.markdown
deleted file mode 100644
index 73a18a41..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/README.markdown
+++ /dev/null
@@ -1,122 +0,0 @@
-buffers
-=======
-
-Treat a collection of Buffers as a single contiguous partially mutable Buffer.
-
-Where possible, operations execute without creating a new Buffer and copying
-everything over.
-
-This is a cleaner more Buffery rehash of
-[bufferlist](http://github.com/substack/node-bufferlist).
-
-example
-=======
-
-slice
------
-
- var Buffers = require('buffers');
- var bufs = Buffers();
- bufs.push(new Buffer([1,2,3]));
- bufs.push(new Buffer([4,5,6,7]));
- bufs.push(new Buffer([8,9,10]));
-
- console.dir(bufs.slice(2,8))
-
-output:
-
- $ node examples/slice.js
-
-
-splice
-------
-
- var Buffers = require('buffers');
- var bufs = Buffers([
- new Buffer([1,2,3]),
- new Buffer([4,5,6,7]),
- new Buffer([8,9,10]),
- ]);
-
- var removed = bufs.splice(2, 4);
- console.dir({
- removed : removed.slice(),
- bufs : bufs.slice(),
- });
-
-output:
-
- $ node examples/splice.js
- { removed: ,
- bufs: }
-
-methods
-=======
-
-Buffers(buffers)
-----------------
-
-Create a Buffers with an array of `Buffer`s if specified, else `[]`.
-
-.push(buf1, buf2...)
---------------------
-
-Push buffers onto the end. Just like `Array.prototype.push`.
-
-.unshift(buf1, buf2...)
------------------------
-
-Unshift buffers onto the head. Just like `Array.prototype.unshift`.
-
-.slice(i, j)
-------------
-
-Slice a range out of the buffer collection as if it were contiguous.
-Works just like the `Array.prototype.slice` version.
-
-.splice(i, howMany, replacements)
----------------------------------
-
-Splice the buffer collection as if it were contiguous.
-Works just like `Array.prototype.splice`, even the replacement part!
-
-.copy(dst, dstStart, start, end)
---------------------------------
-
-Copy the buffer collection as if it were contiguous to the `dst` Buffer with the
-specified bounds.
-Works just like `Buffer.prototype.copy`.
-
-.get(i)
--------
-
-Get a single element at index `i`.
-
-.set(i, x)
-----------
-
-Set a single element's value at index `i`.
-
-.indexOf(needle, offset)
-----------
-
-Find a string or buffer `needle` inside the buffer collection. Returns
-the position of the search string or -1 if the search string was not
-found.
-
-Provide an `offset` to skip that number of characters at the beginning
-of the search. This can be used to find additional matches.
-
-This function will return the correct result even if the search string
-is spread out over multiple internal buffers.
-
-.toBuffer()
------------
-
-Convert the buffer collection to a single buffer, equivalent with `.slice(0, buffers.length)`;
-
-.toString(encoding, start, end)
------------
-
-Decodes and returns a string from the buffer collection.
-Works just like `Buffer.prototype.toString`
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/examples/slice.js b/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/examples/slice.js
deleted file mode 100644
index 0bea38c9..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/examples/slice.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var Buffers = require('buffers');
-var bufs = Buffers();
-bufs.push(new Buffer([1,2,3]));
-bufs.push(new Buffer([4,5,6,7]));
-bufs.push(new Buffer([8,9,10]));
-
-console.dir(bufs.slice(2,8))
-
-// Output:
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/examples/splice.js b/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/examples/splice.js
deleted file mode 100644
index 56a17518..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/examples/splice.js
+++ /dev/null
@@ -1,17 +0,0 @@
-var Buffers = require('buffers');
-var bufs = Buffers([
- new Buffer([1,2,3]),
- new Buffer([4,5,6,7]),
- new Buffer([8,9,10]),
-]);
-
-var removed = bufs.splice(2, 4, new Buffer('ab'), new Buffer('cd'));
-console.dir({
- removed : removed.slice(),
- bufs : bufs.slice(),
-});
-
-/* Output:
-{ removed: ,
- bufs: }
-*/
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/index.js b/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/index.js
deleted file mode 100644
index 86a96968..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/index.js
+++ /dev/null
@@ -1,269 +0,0 @@
-module.exports = Buffers;
-
-function Buffers (bufs) {
- if (!(this instanceof Buffers)) return new Buffers(bufs);
- this.buffers = bufs || [];
- this.length = this.buffers.reduce(function (size, buf) {
- return size + buf.length
- }, 0);
-}
-
-Buffers.prototype.push = function () {
- for (var i = 0; i < arguments.length; i++) {
- if (!Buffer.isBuffer(arguments[i])) {
- throw new TypeError('Tried to push a non-buffer');
- }
- }
-
- for (var i = 0; i < arguments.length; i++) {
- var buf = arguments[i];
- this.buffers.push(buf);
- this.length += buf.length;
- }
- return this.length;
-};
-
-Buffers.prototype.unshift = function () {
- for (var i = 0; i < arguments.length; i++) {
- if (!Buffer.isBuffer(arguments[i])) {
- throw new TypeError('Tried to unshift a non-buffer');
- }
- }
-
- for (var i = 0; i < arguments.length; i++) {
- var buf = arguments[i];
- this.buffers.unshift(buf);
- this.length += buf.length;
- }
- return this.length;
-};
-
-Buffers.prototype.copy = function (dst, dStart, start, end) {
- return this.slice(start, end).copy(dst, dStart, 0, end - start);
-};
-
-Buffers.prototype.splice = function (i, howMany) {
- var buffers = this.buffers;
- var index = i >= 0 ? i : this.length - i;
- var reps = [].slice.call(arguments, 2);
-
- if (howMany === undefined) {
- howMany = this.length - index;
- }
- else if (howMany > this.length - index) {
- howMany = this.length - index;
- }
-
- for (var i = 0; i < reps.length; i++) {
- this.length += reps[i].length;
- }
-
- var removed = new Buffers();
- var bytes = 0;
-
- var startBytes = 0;
- for (
- var ii = 0;
- ii < buffers.length && startBytes + buffers[ii].length < index;
- ii ++
- ) { startBytes += buffers[ii].length }
-
- if (index - startBytes > 0) {
- var start = index - startBytes;
-
- if (start + howMany < buffers[ii].length) {
- removed.push(buffers[ii].slice(start, start + howMany));
-
- var orig = buffers[ii];
- //var buf = new Buffer(orig.length - howMany);
- var buf0 = new Buffer(start);
- for (var i = 0; i < start; i++) {
- buf0[i] = orig[i];
- }
-
- var buf1 = new Buffer(orig.length - start - howMany);
- for (var i = start + howMany; i < orig.length; i++) {
- buf1[ i - howMany - start ] = orig[i]
- }
-
- if (reps.length > 0) {
- var reps_ = reps.slice();
- reps_.unshift(buf0);
- reps_.push(buf1);
- buffers.splice.apply(buffers, [ ii, 1 ].concat(reps_));
- ii += reps_.length;
- reps = [];
- }
- else {
- buffers.splice(ii, 1, buf0, buf1);
- //buffers[ii] = buf;
- ii += 2;
- }
- }
- else {
- removed.push(buffers[ii].slice(start));
- buffers[ii] = buffers[ii].slice(0, start);
- ii ++;
- }
- }
-
- if (reps.length > 0) {
- buffers.splice.apply(buffers, [ ii, 0 ].concat(reps));
- ii += reps.length;
- }
-
- while (removed.length < howMany) {
- var buf = buffers[ii];
- var len = buf.length;
- var take = Math.min(len, howMany - removed.length);
-
- if (take === len) {
- removed.push(buf);
- buffers.splice(ii, 1);
- }
- else {
- removed.push(buf.slice(0, take));
- buffers[ii] = buffers[ii].slice(take);
- }
- }
-
- this.length -= removed.length;
-
- return removed;
-};
-
-Buffers.prototype.slice = function (i, j) {
- var buffers = this.buffers;
- if (j === undefined) j = this.length;
- if (i === undefined) i = 0;
-
- if (j > this.length) j = this.length;
-
- var startBytes = 0;
- for (
- var si = 0;
- si < buffers.length && startBytes + buffers[si].length <= i;
- si ++
- ) { startBytes += buffers[si].length }
-
- var target = new Buffer(j - i);
-
- var ti = 0;
- for (var ii = si; ti < j - i && ii < buffers.length; ii++) {
- var len = buffers[ii].length;
-
- var start = ti === 0 ? i - startBytes : 0;
- var end = ti + len >= j - i
- ? Math.min(start + (j - i) - ti, len)
- : len
- ;
-
- buffers[ii].copy(target, ti, start, end);
- ti += end - start;
- }
-
- return target;
-};
-
-Buffers.prototype.pos = function (i) {
- if (i < 0 || i >= this.length) throw new Error('oob');
- var l = i, bi = 0, bu = null;
- for (;;) {
- bu = this.buffers[bi];
- if (l < bu.length) {
- return {buf: bi, offset: l};
- } else {
- l -= bu.length;
- }
- bi++;
- }
-};
-
-Buffers.prototype.get = function get (i) {
- var pos = this.pos(i);
-
- return this.buffers[pos.buf].get(pos.offset);
-};
-
-Buffers.prototype.set = function set (i, b) {
- var pos = this.pos(i);
-
- return this.buffers[pos.buf].set(pos.offset, b);
-};
-
-Buffers.prototype.indexOf = function (needle, offset) {
- if ("string" === typeof needle) {
- needle = new Buffer(needle);
- } else if (needle instanceof Buffer) {
- // already a buffer
- } else {
- throw new Error('Invalid type for a search string');
- }
-
- if (!needle.length) {
- return 0;
- }
-
- if (!this.length) {
- return -1;
- }
-
- var i = 0, j = 0, match = 0, mstart, pos = 0;
-
- // start search from a particular point in the virtual buffer
- if (offset) {
- var p = this.pos(offset);
- i = p.buf;
- j = p.offset;
- pos = offset;
- }
-
- // for each character in virtual buffer
- for (;;) {
- while (j >= this.buffers[i].length) {
- j = 0;
- i++;
-
- if (i >= this.buffers.length) {
- // search string not found
- return -1;
- }
- }
-
- var char = this.buffers[i][j];
-
- if (char == needle[match]) {
- // keep track where match started
- if (match == 0) {
- mstart = {
- i: i,
- j: j,
- pos: pos
- };
- }
- match++;
- if (match == needle.length) {
- // full match
- return mstart.pos;
- }
- } else if (match != 0) {
- // a partial match ended, go back to match starting position
- // this will continue the search at the next character
- i = mstart.i;
- j = mstart.j;
- pos = mstart.pos;
- match = 0;
- }
-
- j++;
- pos++;
- }
-};
-
-Buffers.prototype.toBuffer = function() {
- return this.slice();
-}
-
-Buffers.prototype.toString = function(encoding, start, end) {
- return this.slice(start, end).toString(encoding);
-}
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/package.json b/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/package.json
deleted file mode 100644
index 7e906b0a..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "buffers",
- "description": "Treat a collection of Buffers as a single contiguous partially mutable Buffer.",
- "version": "0.1.1",
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/node-buffers.git"
- },
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "main": "./index",
- "scripts": {
- "test": "expresso"
- },
- "engines": {
- "node": ">=0.2.0"
- },
- "_npmJsonOpts": {
- "file": "/home/substack/.npm/buffers/0.1.1/package/package.json",
- "wscript": false,
- "contributors": false,
- "serverjs": false
- },
- "_id": "buffers@0.1.1",
- "dependencies": {},
- "devDependencies": {},
- "_engineSupported": true,
- "_npmVersion": "1.0.30",
- "_nodeVersion": "v0.4.12",
- "_defaultsLoaded": true,
- "dist": {
- "shasum": "b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb",
- "tarball": "http://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz"
- },
- "maintainers": [
- {
- "name": "substack",
- "email": "mail@substack.net"
- }
- ],
- "directories": {},
- "_shasum": "b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb",
- "_resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "_from": "buffers@>=0.1.1 <0.2.0"
-}
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/test/buffers.js b/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/test/buffers.js
deleted file mode 100644
index 0c240661..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/node_modules/buffers/test/buffers.js
+++ /dev/null
@@ -1,209 +0,0 @@
-var assert = require('assert');
-var Buffers = require('../');
-
-function create (xs, split) {
- var bufs = Buffers();
- var offset = 0;
- split.forEach(function (i) {
- bufs.push(new Buffer(xs.slice(offset, offset + i)));
- offset += i;
- });
- return bufs;
-}
-
-exports.slice = function () {
- var xs = [0,1,2,3,4,5,6,7,8,9];
- var splits = [ [4,2,3,1], [2,2,2,2,2], [1,6,3,1], [9,2], [10], [5,5] ];
-
- splits.forEach(function (split) {
- var bufs = create(xs, split);
- assert.eql(new Buffer(xs), bufs.slice(),
- '[' + xs.join(',') + ']'
- + ' != ' +
- '[' + [].join.call(bufs.slice(), ',') + ']'
- );
-
- for (var i = 0; i < xs.length; i++) {
- for (var j = i; j < xs.length; j++) {
- var a = bufs.slice(i,j);
- var b = new Buffer(xs.slice(i,j));
-
- assert.eql(a, b,
- '[' + [].join.call(a, ',') + ']'
- + ' != ' +
- '[' + [].join.call(b, ',') + ']'
- );
- }
- }
- });
-};
-
-exports.splice = function () {
- var xs = [0,1,2,3,4,5,6,7,8,9];
- var splits = [ [4,2,3,1], [2,2,2,2,2], [1,6,3,1], [9,2], [10], [5,5] ];
-
- splits.forEach(function (split) {
- for (var i = 0; i < xs.length; i++) {
- for (var j = i; j < xs.length; j++) {
- var bufs = create(xs, split);
- var xs_ = xs.slice();
-
- var a_ = bufs.splice(i,j);
- var a = [].slice.call(a_.slice());
- var b = xs_.splice(i,j);
- assert.eql(a, b,
- '[' + a.join(',') + ']'
- + ' != ' +
- '[' + b.join(',') + ']'
- );
-
- assert.eql(bufs.slice(), new Buffer(xs_),
- '[' + [].join.call(bufs.slice(), ',') + ']'
- + ' != ' +
- '[' + [].join.call(xs_, ',') + ']'
- );
- }
- }
- });
-};
-
-exports.spliceRep = function () {
- var xs = [0,1,2,3,4,5,6,7,8,9];
- var splits = [ [4,2,3,1], [2,2,2,2,2], [1,6,3,1], [9,2], [10], [5,5] ];
- var reps = [ [], [1], [5,6], [3,1,3,3,7], [9,8,7,6,5,4,3,2,1,2,3,4,5] ];
-
- splits.forEach(function (split) {
- reps.forEach(function (rep) {
- for (var i = 0; i < xs.length; i++) {
- for (var j = i; j < xs.length; j++) {
- var bufs = create(xs, split);
- var xs_ = xs.slice();
-
- var a_ = bufs.splice.apply(
- bufs, [ i, j ].concat(new Buffer(rep))
- );
- var a = [].slice.call(a_.slice());
- var b = xs_.splice.apply(xs_, [ i, j ].concat(rep));
-
- assert.eql(a, b,
- '[' + a.join(',') + ']'
- + ' != ' +
- '[' + b.join(',') + ']'
- );
-
- assert.eql(bufs.slice(), new Buffer(xs_),
- '[' + [].join.call(bufs.slice(), ',') + ']'
- + ' != ' +
- '[' + [].join.call(xs_, ',') + ']'
- );
- }
- }
- });
- });
-};
-
-exports.copy = function () {
- var xs = [0,1,2,3,4,5,6,7,8,9];
- var splits = [ [4,2,3,1], [2,2,2,2,2], [1,6,3,1], [9,2], [10], [5,5] ];
-
- splits.forEach(function (split) {
- var bufs = create(xs, split);
- var buf = new Buffer(xs);
-
- for (var i = 0; i < xs.length; i++) {
- for (var j = i; j < xs.length; j++) {
- var t0 = new Buffer(j - i);
- var t1 = new Buffer(j - i);
-
- assert.eql(
- bufs.copy(t0, 0, i, j),
- buf.copy(t1, 0, i, j)
- );
-
- assert.eql(
- [].slice.call(t0),
- [].slice.call(t1)
- );
- }
- }
- });
-};
-
-exports.push = function () {
- var bufs = Buffers();
- bufs.push(new Buffer([0]));
- bufs.push(new Buffer([1,2,3]));
- bufs.push(new Buffer([4,5]));
- bufs.push(new Buffer([6,7,8,9]));
- assert.eql(
- [].slice.call(bufs.slice()),
- [0,1,2,3,4,5,6,7,8,9]
- );
-
- assert.throws(function () {
- bufs.push(new Buffer([11,12]), 'moo');
- });
- assert.eql(bufs.buffers.length, 4);
-};
-
-exports.unshift = function () {
- var bufs = Buffers();
- bufs.unshift(new Buffer([6,7,8,9]));
- bufs.unshift(new Buffer([4,5]));
- bufs.unshift(new Buffer([1,2,3]));
- bufs.unshift(new Buffer([0]));
- assert.eql(
- [].slice.call(bufs.slice()),
- [0,1,2,3,4,5,6,7,8,9]
- );
- assert.throws(function () {
- bufs.unshift(new Buffer([-2,-1]), 'moo');
- });
- assert.eql(bufs.buffers.length, 4);
-};
-
-exports.get = function () {
- var bufs = Buffers();
- bufs.unshift(new Buffer([6,7,8,9]));
- bufs.unshift(new Buffer([4,5]));
- bufs.unshift(new Buffer([1,2,3]));
- bufs.unshift(new Buffer([0]));
- assert.eql( bufs.get(0), 0 );
- assert.eql( bufs.get(1), 1 );
- assert.eql( bufs.get(2), 2 );
- assert.eql( bufs.get(3), 3 );
- assert.eql( bufs.get(4), 4 );
- assert.eql( bufs.get(5), 5 );
- assert.eql( bufs.get(6), 6 );
- assert.eql( bufs.get(7), 7 );
- assert.eql( bufs.get(8), 8 );
- assert.eql( bufs.get(9), 9 );
-};
-
-exports.set = function () {
- var bufs = Buffers();
- bufs.push(new Buffer("Hel"));
- bufs.push(new Buffer("lo"));
- bufs.push(new Buffer("!"));
- bufs.set(0, 'h'.charCodeAt(0) );
- bufs.set(3, 'L'.charCodeAt(0) );
- bufs.set(5, '.'.charCodeAt(0) );
- assert.eql( bufs.slice(0).toString(), 'helLo.' );
-};
-
-exports.indexOf = function () {
- var bufs = Buffers();
- bufs.push(new Buffer("Hel"));
- bufs.push(new Buffer("lo,"));
- bufs.push(new Buffer(" how are "));
- bufs.push(new Buffer("you"));
- bufs.push(new Buffer("?"));
- assert.eql( bufs.indexOf("Hello"), 0 );
- assert.eql( bufs.indexOf("Hello", 1), -1 );
- assert.eql( bufs.indexOf("ello"), 1 );
- assert.eql( bufs.indexOf("ello", 1), 1 );
- assert.eql( bufs.indexOf("ello", 2), -1 );
- assert.eql( bufs.indexOf("e"), 1 );
- assert.eql( bufs.indexOf("e", 2), 13 );
- assert.eql( bufs.indexOf(new Buffer([0x65]), 2), 13 );
-};
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/package.json b/scripts/node_modules/unzip/node_modules/match-stream/package.json
deleted file mode 100644
index 9abb53c9..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/package.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "name": "match-stream",
- "version": "0.0.2",
- "description": "Match a pattern within a stream",
- "main": "match.js",
- "directories": {
- "example": "examples",
- "test": "test"
- },
- "dependencies": {
- "buffers": "~0.1.1",
- "readable-stream": "~1.0.0"
- },
- "devDependencies": {
- "tap": "~0.4.0",
- "stream-buffers": "~0.2.4"
- },
- "scripts": {
- "test": "./node_modules/.bin/tap ./test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/EvanOxfeld/match-stream.git"
- },
- "keywords": [
- "match",
- "stream",
- "split"
- ],
- "author": {
- "name": "Evan Oxfeld",
- "email": "eoxfeld@gmail.com"
- },
- "license": "MIT",
- "readmeFilename": "README.md",
- "gitHead": "665dabbb0a3593310012eb041fc07395db632a20",
- "readme": "match-stream [![Build Status](https://travis-ci.org/EvanOxfeld/match-stream.png)](https://travis-ci.org/EvanOxfeld/match-stream)\n============\n\nSupply a function to handle pattern matches within a NodeJS stream.\n\n## Installation\n\n```bash\n$ npm install match-stream\n```\n\n## Quick Examples\n\n### End stream on match\n\n```javascript\nvar MatchStream = require('match-stream');\nvar streamBuffers = require(\"stream-buffers\");\n\nvar ms = new MatchStream({ pattern: 'World'}, function (buf, matched, extra) {\n if (!matched) {\n return this.push(buf);\n }\n this.push(buf);\n return this.push(null); //signal end of data\n});\n\nvar sourceStream = new streamBuffers.ReadableStreamBuffer();\nsourceStream.put(\"Hello World\");\nvar writableStream = new streamBuffers.WritableStreamBuffer();\n\nsourceStream\n .pipe(ms)\n .pipe(writableStream)\n .once('close', function () {\n var str = writableStream.getContentsAsString('utf8');\n console.log('Piped data before pattern occurs:', \"'\" + str + \"'\");\n sourceStream.destroy();\n });\n\n//Output\n//Piped data before pattern occurs: 'Hello '\n```\n\n### Split stream\n\n```javascript\nvar MatchStream = require('match-stream');\nvar fs = require('fs');\n\nvar line = \"\";\nvar loremLines = [];\nvar ms = new MatchStream({ pattern: '.', consume: true}, function (buf, matched, extra) {\n line += buf.toString();\n if (matched) {\n loremLines.push(line.trim());\n line = \"\";\n }\n});\n\nfs.createReadStream('lorem.txt')\n .pipe(ms)\n .once('finish', function() {\n console.log(loremLines);\n });\n```\n\n## License\n\nMIT\n\n## Acknowledgements\n\nSpecial thanks to @wanderview for assisting with the API.\n\n",
- "_id": "match-stream@0.0.2",
- "dist": {
- "shasum": "99eb050093b34dffade421b9ac0b410a9cfa17cf",
- "tarball": "http://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz"
- },
- "_from": "match-stream@>=0.0.2 <1.0.0",
- "_npmVersion": "1.2.17",
- "_npmUser": {
- "name": "evanoxfeld",
- "email": "eoxfeld@gmail.com"
- },
- "maintainers": [
- {
- "name": "evanoxfeld",
- "email": "eoxfeld@gmail.com"
- }
- ],
- "_shasum": "99eb050093b34dffade421b9ac0b410a9cfa17cf",
- "_resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz"
-}
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/test/split.js b/scripts/node_modules/unzip/node_modules/match-stream/test/split.js
deleted file mode 100644
index aad7c575..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/test/split.js
+++ /dev/null
@@ -1,64 +0,0 @@
-var test = require('tap').test;
-var fs = require('fs');
-var path = require('path');
-var streamBuffers = require("stream-buffers");
-var MatchStream = require('../');
-
-var expected = [ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
- 'Maecenas varius tempor arcu, quis hendrerit nunc accumsan quis',
- 'In ut dolor metus, eget viverra odio',
- 'Quisque sed suscipit leo',
- 'Curabitur dictum magna ut turpis interdum a mollis nunc condimentum',
- 'Praesent leo est, hendreriteget condimentum sit amet, placerat adipiscing neque',
- 'Curabitur id metus tellus, sed semper odio',
- 'Phasellus id justo ante, vel bibendum eros',
- 'Nulla suscipit felis eget erat iaculis et aliquam turpis consequat',
- 'Nunc posuere mollis tellus sit amet dapibus',
- 'Praesent sagittis quam sit amet mauris venenatis in dignissim purus dapibus' ];
-
-test("multiple matches within a single _transform() chunk", function (t) {
- t.plan(1);
-
- var line = "";
- var loremLines = [];
- var ms = new MatchStream({ pattern: '.', consume: true}, function (buf, matched, extra) {
- line += buf.toString();
- if (matched) {
- loremLines.push(line.trim());
- line = "";
- }
- });
-
- fs.createReadStream(path.join(__dirname, '../examples/lorem.txt'))
- .pipe(ms)
- .on('finish', function() {
- t.deepEqual(loremLines, expected);
- t.end();
- });
-});
-
-test("multiple chunks passed to _transform()", function (t) {
- t.plan(1);
-
- var line = "";
- var loremLines = [];
- var ms = new MatchStream({ pattern: '.', consume: true}, function (buf, matched, extra) {
- line += buf.toString();
- if (matched) {
- loremLines.push(line.trim());
- line = "";
- }
- });
-
- var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas varius tempor arcu, quis hendrerit nunc accumsan quis. In ut dolor metus, eget viverra odio. Quisque sed suscipit leo. Curabitur dictum magna ut turpis interdum a mollis nunc condimentum. Praesent leo est, hendreriteget condimentum sit amet, placerat adipiscing neque. Curabitur id metus tellus, sed semper odio. Phasellus id justo ante, vel bibendum eros. Nulla suscipit felis eget erat iaculis et aliquam turpis consequat. Nunc posuere mollis tellus sit amet dapibus. Praesent sagittis quam sit amet mauris venenatis in dignissim purus dapibus.";
- var sourceStream = new streamBuffers.ReadableStreamBuffer({ chunkSize: 10});
- sourceStream.put(lorem);
-
- sourceStream
- .pipe(ms)
- .on('finish', function() {
- sourceStream.destroy();
- t.deepEqual(loremLines, expected);
- t.end();
- });
-});
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/match-stream/test/until.js b/scripts/node_modules/unzip/node_modules/match-stream/test/until.js
deleted file mode 100644
index a70c7a02..00000000
--- a/scripts/node_modules/unzip/node_modules/match-stream/test/until.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var test = require('tap').test;
-var streamBuffers = require("stream-buffers");
-var MatchStream = require('../');
-
-test("pipe until pattern", function (t) {
- t.plan(2);
-
- var ms = new MatchStream({ pattern: 'World'}, function (buf, matched, extra) {
- if (!matched) {
- return this.push(buf);
- }
- this.push(buf);
- t.equal(extra.toString(), 'World');
- return this.push(null); //end the stream
- });
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer();
- sourceStream.put("Hello World");
- var writableStream = new streamBuffers.WritableStreamBuffer();
-
- sourceStream
- .pipe(ms)
- .pipe(writableStream)
- .once('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- t.equal(str, 'Hello ');
- sourceStream.destroy();
- t.end();
- });
-});
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/.npmignore b/scripts/node_modules/unzip/node_modules/pullstream/.npmignore
deleted file mode 100644
index a9b46eab..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/.npmignore
+++ /dev/null
@@ -1,8 +0,0 @@
-/build/*
-node_modules
-*.node
-*.sh
-*.swp
-.lock*
-npm-debug.log
-.idea
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/.travis.yml b/scripts/node_modules/unzip/node_modules/pullstream/.travis.yml
deleted file mode 100644
index 4a83e22d..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/.travis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-language: node_js
-node_js:
- - "0.11"
- - "0.10"
- - "0.8"
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/.vimrc b/scripts/node_modules/unzip/node_modules/pullstream/.vimrc
deleted file mode 100644
index 33173f04..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/.vimrc
+++ /dev/null
@@ -1,2 +0,0 @@
-set expandtab
-set shiftwidth=2
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/LICENSE b/scripts/node_modules/unzip/node_modules/pullstream/LICENSE
deleted file mode 100644
index ccfbbcdc..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2012 - 2013 Near Infinity Corporation
-
-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/scripts/node_modules/unzip/node_modules/pullstream/README.md b/scripts/node_modules/unzip/node_modules/pullstream/README.md
deleted file mode 100644
index 20f429da..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/README.md
+++ /dev/null
@@ -1,214 +0,0 @@
-pullstream [![Build Status](https://travis-ci.org/EvanOxfeld/node-pullstream.png)](https://travis-ci.org/EvanOxfeld/node-pullstream)
-==========
-
-Tired of getting a firehose worth of data from your streams. This module is here to save the day. PullStream allows
-you to pull data when you want and as much as you want.
-
-## Quick Examples
-
-```javascript
-var PullStream = require('pullstream');
-var fs = require('fs');
-
-var ps = new PullStream();
-var loremIpsumStream = fs.createReadStream('loremIpsum.txt');
-var outputStream = fs.createWriteStream(path.join(__dirname, 'loremIpsum.out'));
-
-loremIpsumStream.pipe(ps);
-
-// pull 5 bytes
-ps.pull(5, function(err, data) {
- console.log(data.toString('utf8'));
-
- //synchronously pull 1000 bytes or howevery many bytes are available
- var bytes = ps.pullUpTo(1000);
-
- // pipe the next 100 to a file
- ps.pipe(100, outputStream).on('end', function () {
- console.log('all done');
- });
-});
-```
-
-# API Index
-
-## PullStream
- * [pull](#pullStreamPull)
- * [pullUpTo](#pullStreamPullUpTo)
- * [pipe](#pullStreamPipe)
- * [drain](#pullStreamDrain)
- * [write](#pullStreamWrite)
- * [end](#pullStreamEnd)
- * [prepend](#pullStreamPrepend)
-
-# API Documentation
-
-
-## PullStream
-
-
-### ps.pull([number], callback)
-
-Calls a callback when the specified number of bytes are ready. If no number is specified pull will read until the end
-of the input stream.
-
-__Arguments__
-
-* number (optional) - Number of bytes to wait for. If not specified reads to the end of input stream.
-* callback(err, data) - Callback called when the bytes are ready. data is a buffer containing the bytes.
-
-__Example__
-
-```javascript
-var ps = new PullStream();
-
-ps.pull(5, function(err, data) {
- console.log(data.toString('utf8'));
-});
-```
-
-
-### ps.pullUpTo([number])
-
-Synchronously returns the specified number of bytes or however many bytes are available from the input stream. If no
-number is specified pullUpTo will return however many bytes are available from the input stream.
-
-__Arguments__
-
-* number (optional) - Number of bytes to read from the input stream.
-
-__Example__
-
-```javascript
-var ps = new PullStream();
-
-var data = ps.pullUpTo(1000);
-console.log(data.toString('utf8'));
-```
-
-
-### ps.pipe([number], destStream)
-
-Pipes the specified number of bytes to destStream. If a number is not specified pipe will pipe the remainder
-of the input stream to destStream. Back-pressure is properly managed.
-
-__Arguments__
-
-* number (optional) - Number of bytes to pipe. If not specified pipe the rest of input stream.
-* destStream - The stream to pipe data to.
-
-__Returns__
-
-Returns destStream.
-
-__Example__
-
-```javascript
-var ps = new PullStream();
-var outputStream = fs.createWriteStream(path.join(__dirname, 'loremIpsum.out'));
-
-ps.pipe(100, out).on('end', function() {
- console.log('done with pipe');
-});
-```
-
-
-### ps.drain(number, callback)
-
-Consume the specified number of bytes and send them to nowhere. Also drains from upstream as necessary if the specified
-number of bytes is less than the length of the pull stream's internal buffer.
-
-__Example__
-
-```javascript
-var ps = new PullStream();
-
-ps.drain(5, function(err) {
- console.log('5 bytes removed from pull stream');
-});
-```
-
-
-### ps.write(data, [encoding])
-
-Writes data to input side of a pull stream.
-
-__Arguments__
-
-* data - Buffer or string to write to the input side of the pull stream.
-* encoding (optional) - Encoding to use if data is a string. If not specified 'utf8' is used.
-
-__Example__
-
-```javascript
-var ps = new PullStream();
-
-ps.pull(5, function(err, data) {
- console.log(data.toString('ascii'));
-});
-
-ps.write('Hello World', 'ascii');
-```
-
-
-### ps.end()
-
-Manually ends a pull stream.
-
-__Example__
-
-```javascript
-var ps = new PullStream();
-
-ps.pull(5, function(err, data) {
- console.log(data.toString('utf8'));
-});
-
-ps.write('Hello World');
-ps.end();
-```
-
-
-### ps.prepend()
-
-Writes data to the front of the input side of a pull stream.
-
-__Example__
-
-```javascript
-var ps = new PullStream();
-
-ps.pull(11, function(err, data) {
- console.log(data.toString());
-});
-
-ps.write('World');
-ps.prepend('Hello ');
-ps.end();
-```
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2012 - 2013 Near Infinity Corporation
-
-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/scripts/node_modules/unzip/node_modules/pullstream/examples/loremIpsum.txt b/scripts/node_modules/unzip/node_modules/pullstream/examples/loremIpsum.txt
deleted file mode 100644
index d89eff94..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/examples/loremIpsum.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat mauris, faucibus quis pharetra sit amet, pretium ac libero. Etiam vehicula eleifend bibendum. Morbi gravida metus ut sapien condimentum sodales mollis augue sodales. Vestibulum quis quam at sem placerat aliquet. Curabitur a felis at sapien ullamcorper fermentum. Mauris molestie arcu et lectus iaculis sit amet eleifend eros posuere. Fusce nec porta orci.
-
-Integer vitae neque odio, a sollicitudin lorem. Aenean orci mauris, tristique luctus fermentum eu, feugiat vel massa. Fusce sem sem, egestas nec vulputate vel, pretium sit amet mi. Fusce ut nisl id risus facilisis euismod. Curabitur et elementum purus. Duis tincidunt fringilla eleifend. Morbi id lorem eu ante adipiscing feugiat. Sed congue erat in enim eleifend dignissim at in nisl. Donec tortor mauris, mollis vel pretium vitae, lacinia nec sapien. Donec erat neque, ullamcorper tincidunt iaculis sit amet, pharetra bibendum ipsum. Nunc mattis risus ac ante consequat nec pulvinar neque molestie. Etiam interdum nunc at metus lacinia non varius erat dignissim. Integer elementum, felis id facilisis vulputate, ipsum tellus venenatis dui, at blandit nibh massa in dolor. Cras a ultricies sapien. Vivamus adipiscing feugiat pharetra.
-
-Donec consectetur pellentesque nisi sit amet elementum. Duis iaculis velit at eros dapibus vehicula. Vestibulum erat risus, rutrum ut vulputate eu, rhoncus ut dolor. Etiam pellentesque lobortis velit. Suspendisse arcu lacus, ornare in sollicitudin eget, hendrerit a neque. Donec ac justo in ante gravida mollis. Praesent scelerisque molestie risus sodales fringilla. Vivamus quis lorem in mauris pulvinar tempor. Nam in nisl vel neque commodo semper sed eu nibh. Duis cursus lectus vel odio posuere quis aliquet quam blandit. Maecenas neque nibh, sollicitudin posuere tempus adipiscing, molestie vel nibh. Mauris porttitor, lacus vitae aliquam aliquam, risus urna tempus elit, sit amet malesuada erat dolor iaculis mi. Donec quam sapien, adipiscing eget sodales vitae, blandit eu odio.
-
-Nullam elementum, felis vitae tempor ullamcorper, ipsum metus dapibus lorem, non molestie tellus libero et nisi. Donec lacinia massa a lacus interdum dapibus. Nulla facilisi. Nulla sollicitudin porta odio non iaculis. Donec lobortis dapibus urna, commodo condimentum magna interdum non. Quisque ultrices adipiscing ante et suscipit. Nullam quis libero leo. Donec molestie semper est, at faucibus risus pharetra non. Praesent pretium lorem nec sem aliquam rhoncus.
-
-Vestibulum facilisis, nulla tincidunt eleifend aliquet, tortor lorem ornare dolor, vitae scelerisque mi ante in felis. Nulla dictum interdum velit in bibendum. In varius aliquet purus et auctor. Nunc imperdiet mi sagittis magna rutrum vehicula. Nullam in lorem nibh, at faucibus tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur ullamcorper ornare est et dapibus. Vivamus sagittis nulla eget enim posuere vel blandit neque adipiscing. Sed ligula odio, ultricies vestibulum fermentum ut, malesuada ac erat. Aliquam erat volutpat.
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/examples/pullFromFile.js b/scripts/node_modules/unzip/node_modules/pullstream/examples/pullFromFile.js
deleted file mode 100644
index 4fb30df0..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/examples/pullFromFile.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var PullStream = require('../');
-var fs = require('fs');
-var path = require('path');
-
-var ps = new PullStream();
-var loremIpsumStream = fs.createReadStream(path.join(__dirname, 'loremIpsum.txt'));
-var outputStream = fs.createWriteStream(path.join(__dirname, 'loremIpsum.out'));
-
-loremIpsumStream.pipe(ps);
-
-ps.pull(5, function (err, data) {
- console.log(data.toString('utf8'));
-
- ps.pipe(100, outputStream).on('end', function () {
- console.log('all done');
- });
-});
-
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/.npmignore b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/.npmignore
deleted file mode 100644
index 05ade97f..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-npm-debug.log
-.idea
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/README.md b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/README.md
deleted file mode 100644
index 09915491..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/README.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# over
-
-JavaScript function overloading framework.
-
-## Installation
-
-```bash
-$ npm install over
-```
-
-## Quick Examples
-
-```javascript
-var over = require('over');
-
-var myfn = over([
- [over.string, function (str) { console.log('got a string' + str); }],
- [over.string, over.numberOptionalWithDefault(5), over.callbackOptional, function (str, number, callback) {
- console.log('got a string and a number and a callback');
- callback(str, number);
- }],
- function() {
- // default function if nothing else matches
- }
-]);
-```
-
-## Builtin Test functions
-
-* func
-* funcOptional
-* funcOptionalWithDefault
-* callbackOptional // Will return an empty function of parameter is not given
-* string
-* stringOptional
-* stringOptionalWithDefault
-* number
-* numberOptional
-* numberOptionalWithDefault
-* array
-* arrayOptional
-* arrayOptionalWithDefault
-* object
-* objectOptional
-* objectOptionalWithDefault
-
-The built in optional functions with a suffix of "WithDefault" take a default value as well which will be used if
-it is not passed in.
-
-```javascript
-var myfn = over([
- [over.stringOptionalWithDefault('default value'), function (str) { console.log('got a string' + str); }],
-]);
-```
-
-## Write your own test functions
-
-Simple optional test
-
-```javascript
-function greaterThan5Optional(arg) {
- return arg > 5;
-}
-greaterThan5Optional.optional = true; // mark it as an optional parameter
-
-var myfn = over([
- [greaterThan5Optional, function (v) { console.log('got a value' + v); }]
-]);
-```
-
-Optional test with default
-
-```javascript
-function greaterThan5OptionalWithDefault(def) {
- return function greaterThan5OptionalWithDefault2(arg) {
- if (arg === undefined) {
- return { defaultValue: def };
- }
- return arg > 5;
- }
-}
-greaterThan5OptionalWithDefault.optional = true; // mark it as an optional parameter
-
-var myfn = over([
- [greaterThan5OptionalWithDefault, function (v) { console.log('got a value' + v); }]
-]);
-```
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2012 Near Infinity Corporation
-
-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/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/overload.js b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/overload.js
deleted file mode 100644
index 7e593c13..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/overload.js
+++ /dev/null
@@ -1,236 +0,0 @@
-'use strict';
-
-// overloadDefs
-// self, overloadDefs
-var overload = module.exports = function () {
- var self, selfSet = false, overloadDefs;
- if (arguments.length === 1) {
- overloadDefs = arguments[0];
- } else {
- selfSet = true;
- self = arguments[0];
- overloadDefs = arguments[1];
- }
- return function () {
- if (!selfSet) {
- self = this;
- }
- var args = Array.prototype.slice.call(arguments);
- var overloadMatchData = findOverload(overloadDefs, args);
- if (!overloadMatchData) {
- throw new Error(createErrorMessage('No match found.', overloadDefs));
- }
- var overloadFn = overloadMatchData.def[overloadMatchData.def.length - 1];
- return overloadFn.apply(self, overloadMatchData.args);
- };
-};
-
-var findOverload = overload.findOverload = function (overloadDefs, args) {
- for (var i = 0; i < overloadDefs.length; i++) {
- if (i === overloadDefs.length - 1 && typeof(overloadDefs[i]) === 'function') {
- return { args: args, def: [overloadDefs[i]] };
- }
- var newArgs;
- if (newArgs = isMatch(overloadDefs[i], args)) {
- return { args: newArgs, def: overloadDefs[i] };
- }
- }
- return null;
-};
-
-function isMatch(overloadDef, args) {
- var overloadDefIdx;
- var argIdx;
- var newArgs = [];
- for (overloadDefIdx = 0, argIdx = 0; overloadDefIdx < overloadDef.length - 1; overloadDefIdx++) {
- if (typeof(overloadDef[overloadDefIdx]) !== 'function') {
- throw new Error("Invalid overload definition. Array should only contain functions.");
- }
- //console.log('overloadDef/arg:', overloadDef[overloadDefIdx], args[argIdx]);
- var result = overloadDef[overloadDefIdx](args[argIdx]);
- //console.log('result:', result);
- if (result) {
- if (result.hasOwnProperty('defaultValue')) {
- newArgs.push(result.defaultValue);
- } else {
- if (overloadDef[overloadDefIdx].optional && args[argIdx] === null) {
- argIdx++;
- newArgs.push(overloadDef[overloadDefIdx].defaultValue);
- continue;
- }
- newArgs.push(args[argIdx]);
- argIdx++;
- }
- } else {
- if (overloadDef[overloadDefIdx].optional) {
- newArgs.push(overloadDef[overloadDefIdx].defaultValue);
- continue;
- }
- return false;
- }
- }
- //console.log('compares', overloadDefIdx, overloadDef.length - 1, argIdx, args.length, newArgs.length);
- if (overloadDefIdx === overloadDef.length - 1 && argIdx >= args.length) {
- return newArgs;
- }
- return false;
-}
-
-function createErrorMessage(message, overloadDefs) {
- message += '\n';
- message += ' Possible matches:\n';
- for (var i = 0; i < overloadDefs.length; i++) {
- var overloadDef = overloadDefs[i];
- if (typeof(overloadDef) === 'function') {
- message += ' [default]\n';
- } else {
- var matchers = overloadDef.slice(0, overloadDef.length - 1);
- matchers = matchers.map(function (m) {
- if (!m) {
- return '[invalid argument definition]';
- }
- return m.name || m;
- });
- if (matchers.length === 0) {
- message += ' ()\n';
- } else {
- message += ' (' + matchers.join(', ') + ')\n';
- }
- }
- }
- return message;
-}
-
-// --- func
-overload.func = function func(arg) {
- return typeof(arg) === 'function';
-};
-
-overload.funcOptional = function funcOptional(arg) {
- if (!arg) {
- return true;
- }
- return overload.func(arg);
-};
-overload.funcOptional.optional = true;
-
-overload.funcOptionalWithDefault = function (def) {
- var fn = function funcOptionalWithDefault(arg) {
- if (arg === undefined) {
- return false;
- }
- return overload.func(arg);
- };
- fn.optional = true;
- fn.defaultValue = def;
- return fn;
-};
-
-// --- callback
-overload.callbackOptional = function callbackOptional(arg) {
- if (!arg) {
- return { defaultValue: function defaultCallback() {} };
- }
- return overload.func(arg);
-};
-overload.callbackOptional.optional = true;
-
-// --- string
-overload.string = function string(arg) {
- return typeof(arg) === 'string';
-};
-
-overload.stringOptional = function stringOptional(arg) {
- if (!arg) {
- return true;
- }
- return overload.string(arg);
-};
-overload.stringOptional.optional = true;
-
-overload.stringOptionalWithDefault = function (def) {
- var fn = function stringOptionalWithDefault(arg) {
- if (arg === undefined) {
- return false;
- }
- return overload.string(arg);
- };
- fn.optional = true;
- fn.defaultValue = def;
- return fn;
-};
-
-// --- number
-overload.number = function number(arg) {
- return typeof(arg) === 'number';
-};
-
-overload.numberOptional = function numberOptional(arg) {
- if (!arg) {
- return true;
- }
- return overload.number(arg);
-};
-overload.numberOptional.optional = true;
-
-overload.numberOptionalWithDefault = function (def) {
- var fn = function numberOptionalWithDefault(arg) {
- if (arg === undefined) {
- return false;
- }
- return overload.number(arg);
- };
- fn.optional = true;
- fn.defaultValue = def;
- return fn;
-};
-
-// --- array
-overload.array = function array(arg) {
- return arg instanceof Array;
-};
-
-overload.arrayOptional = function arrayOptional(arg) {
- if (!arg) {
- return true;
- }
- return overload.array(arg);
-};
-overload.arrayOptional.optional = true;
-
-overload.arrayOptionalWithDefault = function (def) {
- var fn = function arrayOptionalWithDefault(arg) {
- if (arg === undefined) {
- return false;
- }
- return overload.array(arg);
- };
- fn.optional = true;
- fn.defaultValue = def;
- return fn;
-};
-
-// --- object
-overload.object = function object(arg) {
- return typeof(arg) === 'object';
-};
-
-overload.objectOptional = function objectOptional(arg) {
- if (!arg) {
- return true;
- }
- return overload.object(arg);
-};
-overload.objectOptional.optional = true;
-
-overload.objectOptionalWithDefault = function (def) {
- var fn = function objectOptionalWithDefault(arg) {
- if (arg === undefined) {
- return false;
- }
- return overload.object(arg);
- };
- fn.optional = true;
- fn.defaultValue = def;
- return fn;
-};
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/package.json b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/package.json
deleted file mode 100644
index 8374f86b..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "over",
- "description": "JavaScript function overloading framework.",
- "author": {
- "name": "Joe Ferner",
- "email": "joe@fernsroth.com"
- },
- "keywords": [
- "function",
- "overload"
- ],
- "version": "0.0.5",
- "bugs": {
- "url": "https://github.com/nearinfinity/node-over/issues"
- },
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "https://github.com/nearinfinity/node-over.git"
- },
- "main": "overload.js",
- "scripts": {
- "test": "./node_modules/.bin/nodeunit test"
- },
- "dependencies": {},
- "devDependencies": {
- "nodeunit": "~0.7.4"
- },
- "optionalDependencies": {},
- "engines": {
- "node": "*"
- },
- "_id": "over@0.0.5",
- "dist": {
- "shasum": "f29852e70fd7e25f360e013a8ec44c82aedb5708",
- "tarball": "http://registry.npmjs.org/over/-/over-0.0.5.tgz"
- },
- "maintainers": [
- {
- "name": "joeferner",
- "email": "joe@fernsroth.com"
- }
- ],
- "directories": {},
- "_shasum": "f29852e70fd7e25f360e013a8ec44c82aedb5708",
- "_resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz",
- "_from": "over@>=0.0.5 <1.0.0"
-}
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/test/defFunctionsTest.js b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/test/defFunctionsTest.js
deleted file mode 100644
index b163e3c6..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/test/defFunctionsTest.js
+++ /dev/null
@@ -1,89 +0,0 @@
-'use strict';
-
-var overload = require('../');
-
-module.exports = {
- 'required, good': function (test) {
- var items = [
- { fn: overload.func, param: function () {} },
- { fn: overload.funcOptional, param: function () {} },
- { fn: overload.funcOptionalWithDefault(function () {}), param: function () {} },
- { fn: overload.callbackOptional, param: function () {} },
- { fn: overload.string, param: 'test' },
- { fn: overload.stringOptional, param: 'test' },
- { fn: overload.stringOptionalWithDefault('test'), param: 'test' },
- { fn: overload.number, param: 5 },
- { fn: overload.numberOptional, param: 5 },
- { fn: overload.numberOptionalWithDefault(5), param: 5 },
- { fn: overload.array, param: [1] },
- { fn: overload.arrayOptional, param: [1] },
- { fn: overload.arrayOptionalWithDefault([1]), param: [1] },
- { fn: overload.object, param: {} },
- { fn: overload.objectOptional, param: {} },
- { fn: overload.objectOptionalWithDefault({}), param: {} }
- ];
- items.forEach(function (item) {
- test.equals(item.fn(item.param), true);
- });
- test.done();
- },
-
- 'required, bad': function (test) {
- var items = [
- { fn: overload.func, param: 5 },
- { fn: overload.funcOptional, param: 5 },
- { fn: overload.funcOptionalWithDefault(function () {}), param: 5 },
- { fn: overload.callbackOptional, param: 5 },
- { fn: overload.string, param: 5 },
- { fn: overload.stringOptional, param: 5 },
- { fn: overload.stringOptionalWithDefault('test'), param: 5 },
- { fn: overload.number, param: 'test' },
- { fn: overload.numberOptional, param: 'test' },
- { fn: overload.numberOptionalWithDefault(5), param: 'test' },
- { fn: overload.array, param: 5 },
- { fn: overload.arrayOptional, param: 5 },
- { fn: overload.arrayOptionalWithDefault([]), param: 5 },
- { fn: overload.object, param: 5 },
- { fn: overload.objectOptional, param: 5 },
- { fn: overload.objectOptionalWithDefault({}), param: 5 }
- ];
- items.forEach(function (item) {
- test.equals(item.fn(item.param), false);
- });
- test.done();
- },
-
- 'optional, null': function (test) {
- var items = [
- { fn: overload.funcOptional },
- { fn: overload.stringOptional },
- { fn: overload.numberOptional },
- { fn: overload.arrayOptional },
- { fn: overload.objectOptional }
- ];
- items.forEach(function (item) {
- test.equals(item.fn(null), true, 'invalid results for function: ' + item.fn.name);
- });
- test.done();
- },
-
- 'optional, callback': function (test) {
- test.equals(typeof(overload.callbackOptional(null).defaultValue), 'function');
- test.done();
- },
-
- 'with defaults': function (test) {
- var fn = function () {};
- var items = [
- { fn: overload.funcOptionalWithDefault(fn), expected: fn },
- { fn: overload.stringOptionalWithDefault('test'), expected: 'test' },
- { fn: overload.numberOptionalWithDefault(5), expected: 5 },
- { fn: overload.arrayOptionalWithDefault([]), expected: [] },
- { fn: overload.objectOptionalWithDefault({}), expected: {} }
- ];
- items.forEach(function (item) {
- test.deepEqual(item.fn.defaultValue, item.expected);
- });
- test.done();
- }
-};
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/test/overloadTest.js b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/test/overloadTest.js
deleted file mode 100644
index c099008b..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/over/test/overloadTest.js
+++ /dev/null
@@ -1,295 +0,0 @@
-'use strict';
-
-var overload = require('../');
-
-module.exports = {
- 'no parameters, valid args': function (test) {
- var called = 0;
- var fn = overload([
- [function () { called++; return 42; }]
- ]);
- var ret = fn();
- test.equals(called, 1);
- test.equals(ret, 42);
- test.done();
- },
-
- 'no parameters, invalid args': function (test) {
- var called = 0;
- var fn = overload([
- [function () { called++; }]
- ]);
- try {
- fn(1);
- test.fail('should throw exception');
- } catch (ex) {
-
- }
- test.done();
- },
-
- 'default callback': function (test) {
- var called = 0;
- var args = null;
- var fn = overload([
- [overload.func, function (fn) { test.fail('should not be called.'); }],
- function () {
- called++;
- args = Array.prototype.slice.call(arguments);
- }
- ]);
- fn('test');
- test.equals(called, 1, 'overload not called');
- test.deepEqual(args, ['test']);
- test.done();
- },
-
- 'one parameter, valid args': function (test) {
- var called = 0;
- var argFnCalled = 0;
- var fn = overload([
- [overload.func, function (fn) {
- called++;
- fn();
- }]
- ]);
- fn(function () { argFnCalled++; });
- test.equals(called, 1, 'overload not called');
- test.equals(argFnCalled, 1, 'arg function not called');
- test.done();
- },
-
- 'one parameter, invalid args': function (test) {
- var called = 0;
- var fn = overload([
- [overload.func, function () { called++; }]
- ]);
- try {
- fn(1);
- test.fail('should throw exception');
- } catch (ex) {
-
- }
- test.done();
- },
-
- 'optional parameter, valid args': function (test) {
- var called = 0;
- var argFnCalled = 0;
- var fn = overload([
- [overload.funcOptional, function (fn) {
- called++;
- fn();
- }]
- ]);
- fn(function () { argFnCalled++; });
- test.equals(called, 1, 'overload not called');
- test.equals(argFnCalled, 1, 'arg function not called');
- test.done();
- },
-
- 'optional parameter, no args': function (test) {
- var called = 0;
- var fn = overload([
- [overload.funcOptional, function (fn) {
- called++;
- if (fn) {
- test.fail('no function should be passed');
- }
- }]
- ]);
- fn();
- test.equals(called, 1, 'overload not called');
- test.done();
- },
-
- 'optional parameter, invalid args': function (test) {
- var called = 0;
- var fn = overload([
- [overload.funcOptional, function () { called++; }]
- ]);
- try {
- fn(1);
- test.fail('should throw exception');
- } catch (ex) {
-
- }
- test.done();
- },
-
- 'multiple overloads, valid args': function (test) {
- var called = 0;
- var val = null;
- var fn = overload([
- [overload.number, function (n) { test.fail('this function should not be called'); }],
- [overload.string, function (s) {
- val = s;
- called++;
- }]
- ]);
- fn('test');
- test.equals(called, 1, 'overload not called');
- test.equals(val, 'test', 'overload called with wrong value');
- test.done();
- },
-
- 'multiple overloads, invalid args': function (test) {
- var called = 0;
- var fn = overload([
- [overload.number, function (n) { test.fail('this function should not be called'); }],
- [overload.string, function (s) { called++; }]
- ]);
- try {
- fn(function () {});
- test.fail('should throw exception');
- } catch (ex) {
-
- }
- test.done();
- },
-
- 'optional parameter, with default value': function (test) {
- var called = 0;
- var val = null;
- var fn = overload([
- [overload.numberOptionalWithDefault(5), overload.func, function (n) {
- called++;
- val = n;
- }]
- ]);
- fn(function() {});
- test.equals(called, 1, 'overload not called');
- test.equals(val, 5);
- test.done();
- },
-
- 'number optional parameter, called with non-zero number': function (test) {
- var called = 0;
- var val = null;
- var fn = overload([
- [overload.numberOptionalWithDefault(5), overload.func, function (n) {
- called++;
- val = n;
- }]
- ]);
- fn(3, function() {});
- test.equals(called, 1, 'overload not called');
- test.equals(val, 3);
- test.done();
- },
-
- 'number optional parameter, called with zero': function (test) {
- var called = 0;
- var val = null;
- var fn = overload([
- [overload.numberOptionalWithDefault(5), overload.func, function (n) {
- called++;
- val = n;
- }]
- ]);
- fn(0, function() {});
- test.equals(called, 1, 'overload not called');
- test.equals(val, 0);
- test.done();
- },
-
- 'string optional parameter, called with empty string': function (test) {
- var called = 0;
- var val = null;
- var fn = overload([
- [overload.stringOptionalWithDefault("hello world"), overload.func, function (n) {
- called++;
- val = n;
- }]
- ]);
- fn("", function() {});
- test.equals(called, 1, 'overload not called');
- test.equals(val, "");
- test.done();
- },
-
- 'callback, with default value': function (test) {
- var called = 0;
- var fn = overload([
- [overload.callbackOptional, function (callback) {
- callback();
- }]
- ]);
- fn(function () { called++; });
- test.equals(called, 1, 'overload not called');
- test.done();
- },
-
- 'multiple optionals': function (test) {
- var called = 0;
- var args;
- var fn = overload([
- [overload.string, overload.arrayOptionalWithDefault(null), overload.callbackOptional, function (str, arr, callback) {
- args = arguments;
- called++;
- }]
- ]);
- fn('test');
- test.equals(called, 1, 'overload not called');
- test.equals(args.length, 3);
- test.equals(args[0], 'test');
- test.ok(args[1] === null);
- test.equals(typeof(args[2]), 'function');
- test.done();
- },
-
- 'multiple optionals, skipping middle one': function (test) {
- var called = 0;
- var args;
- var fn = overload([
- [overload.string, overload.arrayOptional, overload.callbackOptional, function (str, arr, callback) {
- args = arguments;
- called++;
- }]
- ]);
- var fnTest = function zzz() {};
- fn('test', fnTest);
- test.equals(called, 1, 'overload not called');
- test.equals(args.length, 3);
- test.equals(args[0], 'test');
- test.ok(args[1] === undefined, 'invalid argument, expected undefined: ' + args[1]);
- test.equals(args[2].name, 'zzz');
- test.done();
- },
-
- 'multiple optionals, null middle one': function (test) {
- var called = 0;
- var args;
- var fn = overload([
- [overload.string, overload.arrayOptional, overload.callbackOptional, function (str, arr, callback) {
- args = arguments;
- called++;
- }]
- ]);
- var fnTest = function zzz() {};
- fn('test', null, fnTest);
- test.equals(called, 1, 'overload not called');
- test.equals(args.length, 3);
- test.equals(args[0], 'test');
- test.ok(args[1] === undefined, 'invalid argument, expected undefined: ' + args[1]);
- test.equals(args[2].name, 'zzz');
- test.done();
- },
-
- 'complex': function (test) {
- var called = 0;
- var args = null;
- var fn = overload([
- [overload.string, function () { test.fail('this function should not be called'); }],
- [overload.string, overload.number, overload.funcOptional, function () {
- args = Array.prototype.slice.call(arguments, 0);
- called++;
- }]
- ]);
- var argFn = function () {};
- fn('test', 5, argFn);
- test.equals(called, 1, 'overload not called');
- test.deepEqual(args, ['test', 5, argFn], 'overload called with wrong args');
- test.done();
- }
-};
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/.travis.yml b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/.travis.yml
deleted file mode 100644
index 5f6edf04..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/.travis.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-language: node_js
-node_js:
- - "0.11"
- - "0.10"
- - "0.8"
-
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/LICENSE b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/LICENSE
deleted file mode 100644
index 5ff03ca4..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/LICENSE
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2013 Evan Oxfeld
-
-MIT License
-
-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/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/README.md b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/README.md
deleted file mode 100644
index f1547b0f..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-slice-stream [![Build Status](https://travis-ci.org/EvanOxfeld/slice-stream.png)](https://travis-ci.org/EvanOxfeld/slice-stream)
-============
-
-Pipe data through a stream until some fixed length is reached, then callback.
-
-## Installation
-
-```bash
-$ npm install slice-stream
-```
-
-## Quick Example
-
-### End stream once a fixed length has been reached
-
-```javascript
-var SliceStream = require('../');
-var streamBuffers = require("stream-buffers");
-
-var ss = new SliceStream({ length: 5}, function (buf, sliceEnd, extra) {
- if (!sliceEnd) {
- return this.push(buf);
- }
- this.push(buf);
- return this.push(null); //signal end of data
-});
-
-var sourceStream = new streamBuffers.ReadableStreamBuffer();
-sourceStream.put("Hello World");
-var writableStream = new streamBuffers.WritableStreamBuffer();
-
-sourceStream
- .pipe(ss)
- .pipe(writableStream)
- .once('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- console.log('First 5 bytes piped:', "'" + str + "'");
- sourceStream.destroy();
- });
-
-//Output
-//Piped data before pattern occurs: 'Hello'
-```
-
-## License
-
-MIT
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/examples/until.js b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/examples/until.js
deleted file mode 100644
index bdfb1770..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/examples/until.js
+++ /dev/null
@@ -1,26 +0,0 @@
-var SliceStream = require('../');
-var streamBuffers = require("stream-buffers");
-
-var ss = new SliceStream({ length: 5}, function (buf, sliceEnd, extra) {
- if (!sliceEnd) {
- return this.push(buf);
- }
- this.push(buf);
- return this.push(null); //signal end of data
-});
-
-var sourceStream = new streamBuffers.ReadableStreamBuffer();
-sourceStream.put("Hello World");
-var writableStream = new streamBuffers.WritableStreamBuffer();
-
-sourceStream
- .pipe(ss)
- .pipe(writableStream)
- .once('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- console.log('First 5 bytes piped:', "'" + str + "'");
- sourceStream.destroy();
- });
-
-//Output
-//Piped data before pattern occurs: 'Hello'
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/package.json b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/package.json
deleted file mode 100644
index 756b36d6..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/package.json
+++ /dev/null
@@ -1,60 +0,0 @@
-{
- "name": "slice-stream",
- "version": "1.0.0",
- "description": "Pipe data through a stream until some fixed length is reached, then callback.",
- "main": "slicestream.js",
- "directories": {
- "example": "examples",
- "test": "test"
- },
- "scripts": {
- "test": "tap ./test/*.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/EvanOxfeld/slice-stream.git"
- },
- "keywords": [
- "slice",
- "fixed",
- "length",
- "stream",
- "split"
- ],
- "author": {
- "name": "Evan Oxfeld",
- "email": "eoxfeld@gmail.com"
- },
- "license": "MIT",
- "gitHead": "9054cbab67c2e71ab9241dbe88401c786b270f8e",
- "dependencies": {
- "readable-stream": "~1.0.31"
- },
- "devDependencies": {
- "stream-buffers": ">= 0.2.4 < 1",
- "tap": ">= 0.4.0 < 1"
- },
- "bugs": {
- "url": "https://github.com/EvanOxfeld/slice-stream/issues"
- },
- "homepage": "https://github.com/EvanOxfeld/slice-stream",
- "_id": "slice-stream@1.0.0",
- "_shasum": "5b33bd66f013b1a7f86460b03d463dec39ad3ea0",
- "_from": "slice-stream@>=1.0.0 <2.0.0",
- "_npmVersion": "1.4.21",
- "_npmUser": {
- "name": "evanoxfeld",
- "email": "eoxfeld@gmail.com"
- },
- "maintainers": [
- {
- "name": "evanoxfeld",
- "email": "eoxfeld@gmail.com"
- }
- ],
- "dist": {
- "shasum": "5b33bd66f013b1a7f86460b03d463dec39ad3ea0",
- "tarball": "http://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz"
- },
- "_resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz"
-}
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/slicestream.js b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/slicestream.js
deleted file mode 100644
index 83a2faee..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/slicestream.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict';
-
-module.exports = SliceStream;
-
-var Transform = require('readable-stream/transform');
-var inherits = require("util").inherits;
-
-inherits(SliceStream, Transform);
-
-function SliceStream(opts, sliceFn) {
- if (!(this instanceof SliceStream)) {
- return new SliceStream(opts, sliceFn);
- }
-
- this._opts = opts;
- this._accumulatedLength = 0;
- this.sliceFn = sliceFn;
-
- Transform.call(this);
-}
-
-SliceStream.prototype._transform = function (chunk, encoding, callback) {
- this._accumulatedLength += chunk.length;
-
- if (this._accumulatedLength >= this._opts.length) {
- //todo handle more than one slice in a stream
- var offset = chunk.length - (this._accumulatedLength - this._opts.length);
- this.sliceFn(chunk.slice(0, offset), true, chunk.slice(offset));
- callback();
- } else {
- this.sliceFn(chunk);
- callback();
- }
-};
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/test/until.js b/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/test/until.js
deleted file mode 100644
index b422732f..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/node_modules/slice-stream/test/until.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var test = require('tap').test;
-var streamBuffers = require("stream-buffers");
-var SliceStream = require('../');
-
-test("pipe a fixed length number of bytes, then end the stream", function (t) {
- t.plan(2);
-
- var ss = new SliceStream({ length: 5}, function (buf, sliceEnd, extra) {
- if (!sliceEnd) {
- return this.push(buf);
- }
- this.push(buf);
- t.equal(extra.toString(), ' World');
- return this.push(null);
- });
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer();
- sourceStream.put("Hello World");
- var writableStream = new streamBuffers.WritableStreamBuffer();
-
- sourceStream
- .pipe(ss)
- .pipe(writableStream)
- .once('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- t.equal(str, 'Hello');
- sourceStream.destroy();
- t.end();
- });
-});
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/package.json b/scripts/node_modules/unzip/node_modules/pullstream/package.json
deleted file mode 100644
index a30f284a..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/package.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "pullstream",
- "version": "0.4.1",
- "description": "A stream you can pull data from.",
- "main": "pullstream.js",
- "scripts": {
- "test": "nodeunit test"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/nearinfinity/node-pullstream/issues"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/nearinfinity/node-pullstream.git"
- },
- "keywords": [
- "stream",
- "pull"
- ],
- "devDependencies": {
- "nodeunit": ">= 0.9.0 < 1",
- "stream-buffers": ">= 0.2.6 < 1",
- "async": ">= 0.9.0 <"
- },
- "dependencies": {
- "over": ">= 0.0.5 < 1",
- "readable-stream": "~1.0.31",
- "setimmediate": ">= 1.0.2 < 2",
- "slice-stream": ">= 1.0.0 < 2"
- },
- "gitHead": "26d5da948c105c25fe85ae5598651c44c00a38f4",
- "homepage": "https://github.com/nearinfinity/node-pullstream",
- "_id": "pullstream@0.4.1",
- "_shasum": "d6fb3bf5aed697e831150eb1002c25a3f8ae1314",
- "_from": "pullstream@>=0.4.1 <1.0.0",
- "_npmVersion": "1.4.21",
- "_npmUser": {
- "name": "evanoxfeld",
- "email": "eoxfeld@gmail.com"
- },
- "maintainers": [
- {
- "name": "joeferner",
- "email": "joe@fernsroth.com"
- },
- {
- "name": "evanoxfeld",
- "email": "eoxfeld@gmail.com"
- }
- ],
- "dist": {
- "shasum": "d6fb3bf5aed697e831150eb1002c25a3f8ae1314",
- "tarball": "http://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz"
-}
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/pullstream.js b/scripts/node_modules/unzip/node_modules/pullstream/pullstream.js
deleted file mode 100644
index 2c46e7fe..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/pullstream.js
+++ /dev/null
@@ -1,137 +0,0 @@
-'use strict';
-
-module.exports = PullStream;
-
-require("setimmediate");
-var inherits = require("util").inherits;
-var PassThrough = require('readable-stream/passthrough');
-var over = require('over');
-var SliceStream = require('slice-stream');
-
-function PullStream(opts) {
- var self = this;
- this.opts = opts || {};
- PassThrough.call(this, opts);
- this.once('finish', function() {
- self._writesFinished = true;
- if (self._flushed) {
- self._finish();
- }
- });
- this.on('readable', function() {
- self._process();
- });
-}
-inherits(PullStream, PassThrough);
-
-PullStream.prototype.pull = over([
- [over.numberOptionalWithDefault(null), over.func, function (len, callback) {
- if (len === 0) {
- return callback(null, new Buffer(0));
- }
-
- var self = this;
- pullServiceRequest();
-
- function pullServiceRequest() {
- self._serviceRequests = null;
- if (self._flushed) {
- return callback(new Error('End of Stream'));
- }
-
- var data = self.read(len || undefined);
- if (data) {
- setImmediate(callback.bind(null, null, data));
- } else {
- self._serviceRequests = pullServiceRequest;
- }
- }
- }]
-]);
-
-PullStream.prototype.pullUpTo = over([
- [over.numberOptionalWithDefault(null), function (len) {
- var data = this.read(len);
- if (len && !data) {
- data = this.read();
- }
- return data;
- }]
-]);
-
-PullStream.prototype.pipe = over([
- [over.numberOptionalWithDefault(null), over.object, function (len, destStream) {
- if (!len) {
- return PassThrough.prototype.pipe.call(this, destStream);
- }
-
- if (len === 0) {
- return destStream.end();
- }
-
-
- var pullstream = this;
- pullstream
- .pipe(new SliceStream({ length: len }, function (buf, sliceEnd, extra) {
- if (!sliceEnd) {
- return this.push(buf);
- }
- pullstream.unpipe();
- pullstream.unshift(extra);
- this.push(buf);
- return this.push(null);
- }))
- .pipe(destStream);
-
- return destStream;
- }]
-]);
-
-PullStream.prototype._process = function () {
- if (this._serviceRequests) {
- this._serviceRequests();
- }
-};
-
-PullStream.prototype.prepend = function (chunk) {
- this.unshift(chunk);
-};
-
-PullStream.prototype.drain = function (len, callback) {
- if (this._flushed) {
- return callback(new Error('End of Stream'));
- }
-
- var data = this.pullUpTo(len);
- var bytesDrained = data && data.length || 0;
- if (bytesDrained === len) {
- setImmediate(callback);
- } else if (bytesDrained > 0) {
- this.drain(len - bytesDrained, callback);
- } else {
- //internal buffer is empty, wait until data can be consumed
- this.once('readable', this.drain.bind(this, len - bytesDrained, callback));
- }
-};
-
-PullStream.prototype._flush = function (callback) {
- var self = this;
- if (this._readableState.length > 0) {
- return setImmediate(self._flush.bind(self, callback));
- }
-
- this._flushed = true;
- if (self._writesFinished) {
- self._finish(callback);
- } else {
- callback();
- }
-};
-
-PullStream.prototype._finish = function (callback) {
- callback = callback || function () {};
- if (this._serviceRequests) {
- this._serviceRequests();
- }
- setImmediate(callback);
-};
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/test/pullStreamTest.js b/scripts/node_modules/unzip/node_modules/pullstream/test/pullStreamTest.js
deleted file mode 100644
index cbafcd4a..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/test/pullStreamTest.js
+++ /dev/null
@@ -1,430 +0,0 @@
-'use strict';
-
-var nodeunit = require('nodeunit');
-var fs = require("fs");
-var path = require("path");
-var streamBuffers = require("stream-buffers");
-var async = require('async')
-var PullStream = require('../');
-
-module.exports = {
- "source sending 1-byte at a time": function (t) {
- t.expect(3);
- var ps = new PullStream({ lowWaterMark : 0 });
- ps.on('finish', function () {
- sourceStream.destroy();
- });
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- frequency: 0,
- chunkSize: 1
- });
-
- sourceStream.pipe(ps);
- sourceStream.put("Hello World!");
-
- ps.pull('Hello'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('Hello', data.toString());
-
- var writableStream = new streamBuffers.WritableStreamBuffer({
- initialSize: 100
- });
- writableStream.on('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- t.equal(' World', str);
-
- ps.pull(function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('!', data.toString());
- return t.done();
- });
- });
-
- ps.pipe(' World'.length, writableStream);
- });
- },
-
- "source sending twelve bytes at once": function (t) {
- t.expect(3);
- var ps = new PullStream({ lowWaterMark : 0 });
- ps.on('finish', function () {
- sourceStream.destroy();
- });
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- frequency: 0,
- chunkSize: 1000
- });
-
- sourceStream.pipe(ps);
- sourceStream.put("Hello World!");
-
- ps.pull('Hello'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('Hello', data.toString());
-
- var writableStream = new streamBuffers.WritableStreamBuffer({
- initialSize: 100
- });
- writableStream.on('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- t.equal(' World', str);
-
- ps.pull(function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('!', data.toString());
- return t.done();
- });
- });
-
- ps.pipe(' World'.length, writableStream);
- });
- },
-
- "source sending 512 bytes at once": function (t) {
- t.expect(512 / 4);
- var ps = new PullStream({ lowWaterMark : 0 });
- ps.on('finish', function() {
- sourceStream.destroy();
- });
-
- var values = [];
- for (var i = 0; i < 512; i+=4) {
- values.push(i + 1000);
- }
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- frequency: 0,
- chunkSize: 1000
- });
-
- sourceStream.pipe(ps);
- values.forEach(function(val) {
- sourceStream.put(val);
- });
-
- async.forEachSeries(values, function (val, callback) {
- ps.pull(4, function (err, data) {
- if (err) {
- return callback(err);
- }
- t.equal(val, data.toString());
- return callback(null);
- });
- }, function (err) {
- t.done(err);
- });
- },
-
- "two length pulls": function (t) {
- t.expect(2);
- var ps = new PullStream({ lowWaterMark : 0 });
- ps.on('finish', function () {
- sourceStream.destroy();
- });
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- frequency: 0,
- chunkSize: 1000
- });
-
- sourceStream.pipe(ps);
- sourceStream.put("Hello World!");
-
- ps.pull('Hello'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('Hello', data.toString());
-
- ps.pull(' World!'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal(' World!', data.toString());
- return t.done();
- });
- });
- },
-
- "pulling zero bytes returns empty data": function (t) {
- t.expect(1);
- var ps = new PullStream({ lowWaterMark : 0 });
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- chunkSize: 1000
- });
-
- sourceStream.pipe(ps);
- sourceStream.put("Hello World!");
-
- ps.pull(0, function (err, data) {
- if (err) {
- return t.done(err);
- }
-
- t.equal(0, data.length, "data is empty");
- sourceStream.destroy();
- return t.done();
- });
- },
-
- "read from file": function (t) {
- t.expect(2);
- var ps = new PullStream({ lowWaterMark : 0 });
-
- var sourceStream = fs.createReadStream(path.join(__dirname, 'testFile.txt'));
-
- sourceStream.pipe(ps);
-
- ps.pull('Hello'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('Hello', data.toString());
-
- ps.pull(' World!'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal(' World!', data.toString());
- return t.done();
- });
- });
- },
-
- "read past end of stream": function (t) {
- t.expect(2);
- var ps = new PullStream({ lowWaterMark : 0 });
- ps.on('finish', function () {
- sourceStream.destroy();
- });
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- frequency: 1,
- chunkSize: 1000
- });
-
- sourceStream.pipe(ps);
- sourceStream.put("Hello World!");
-
- ps.pull('Hello World!'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('Hello World!', data.toString());
-
- ps.pull(1, function (err, data) {
- if (err) {
- t.ok(err, 'should get an error');
- }
- t.done();
- });
- });
- },
-
- "pipe with no length": function (t) {
- t.expect(2);
- var ps = new PullStream({ lowWaterMark : 0 });
- ps.on('end', function () {
- t.ok(true, "pullstream should end");
- });
-
- var writableStream = new streamBuffers.WritableStreamBuffer({
- initialSize: 100
- });
- writableStream.on('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- t.equal('Hello World!', str);
- t.done();
- });
-
- ps.pipe(writableStream);
-
- process.nextTick(function () {
- ps.write(new Buffer('Hello', 'utf8'));
- ps.write(new Buffer(' World', 'utf8'));
- process.nextTick(function () {
- ps.write(new Buffer('!', 'utf8'));
- ps.end();
- });
- });
- },
-
- "throw on calling write() after end": function (t) {
- t.expect(1);
- var ps = new PullStream({ lowWaterMark : 0 });
- ps.end();
-
- try {
- ps.write(new Buffer('hello', 'utf8'));
- t.fail("should throw error");
- } catch (ex) {
- t.ok(ex);
- }
-
- t.done();
- },
-
- "pipe more bytes than the pullstream buffer size": function (t) {
- t.expect(1);
- var ps = new PullStream();
- ps.on('end', function() {
- sourceStream.destroy();
- });
-
- var aVals = "", bVals = "";
- for (var i = 0; i < 20 * 1000; i++) {
- aVals += 'a';
- }
- for (var i = 0; i < 180 * 1000; i++) {
- bVals += 'b';
- }
- var combined = aVals + bVals;
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- frequency: 0,
- chunkSize: 40 * 1024
- });
-
- sourceStream.pipe(ps);
- sourceStream.put(aVals);
-
- var writableStream = new streamBuffers.WritableStreamBuffer({
- initialSize: 200 * 1000
- });
- writableStream.on('close', function () {
- var str = writableStream.getContentsAsString('utf8');
- t.equal(combined, str);
- t.done();
- });
-
- ps.once('drain', function () {
- ps.pipe(200 * 1000, writableStream);
- process.nextTick(sourceStream.put.bind(null, bVals));
- });
- },
-
- "mix asynchronous pull with synchronous pullUpTo - exact number of bytes returned": function (t) {
- t.expect(2);
- var ps = new PullStream();
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- frequency: 0,
- chunkSize: 1000
- });
-
- sourceStream.pipe(ps);
- sourceStream.put("Hello World!");
-
- ps.pull('Hello'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('Hello', data.toString());
- var data = ps.pullUpTo(" World!".length);
- t.equal(" World!", data.toString());
- sourceStream.destroy();
- t.done();
- });
- },
-
- "mix asynchronous pull with pullUpTo - fewer bytes returned than requested": function (t) {
- t.expect(2);
- var ps = new PullStream();
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- frequency: 0,
- chunkSize: 1000
- });
-
- sourceStream.pipe(ps);
- sourceStream.put("Hello World!");
-
-
- ps.pull('Hello'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('Hello', data.toString());
- var data = ps.pullUpTo(1000);
- t.equal(" World!", data.toString());
- sourceStream.destroy();
- t.done();
- });
- },
-
- "retrieve all currently remaining bytes": function (t) {
- t.expect(2);
- var ps = new PullStream();
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer({
- frequency: 0,
- chunkSize: 1000
- });
-
- sourceStream.pipe(ps);
- sourceStream.put("Hello World!");
-
- ps.pull('Hello'.length, function (err, data) {
- if (err) {
- return t.done(err);
- }
- t.equal('Hello', data.toString());
- var data = ps.pullUpTo();
- t.equal(" World!", data.toString());
- sourceStream.destroy();
- t.done();
- });
- },
-
-// TODO: node PassThrough stream doesn't handle unshift the same way anymore.
-// "prepend": function (t) {
-// t.expect(1);
-// var ps = new PullStream();
-//
-// var sourceStream = new streamBuffers.ReadableStreamBuffer();
-//
-// sourceStream.pipe(ps);
-// sourceStream.put("World!");
-// ps.prepend("Hello ");
-//
-// ps.pull('Hello World!'.length, function (err, data) {
-// if (err) {
-// return t.done(err);
-// }
-// t.equal('Hello World!', data.toString());
-// sourceStream.destroy();
-// t.done();
-// });
-// },
-
- "drain": function (t) {
- t.expect(1);
- var ps = new PullStream();
-
- var sourceStream = new streamBuffers.ReadableStreamBuffer();
-
- sourceStream.pipe(ps);
- sourceStream.put("Hello World!");
-
- ps.drain('Hello '.length, function (err) {
- if (err) {
- return t.done(err);
- }
- ps.pull('World!'.length, function (err, data) {
- t.equal('World!', data.toString());
- sourceStream.destroy();
- t.done();
- });
- });
- }
-};
diff --git a/scripts/node_modules/unzip/node_modules/pullstream/test/testFile.txt b/scripts/node_modules/unzip/node_modules/pullstream/test/testFile.txt
deleted file mode 100644
index c57eff55..00000000
--- a/scripts/node_modules/unzip/node_modules/pullstream/test/testFile.txt
+++ /dev/null
@@ -1 +0,0 @@
-Hello World!
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/.npmignore b/scripts/node_modules/unzip/node_modules/readable-stream/.npmignore
deleted file mode 100644
index 38344f87..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/.npmignore
+++ /dev/null
@@ -1,5 +0,0 @@
-build/
-test/
-examples/
-fs.js
-zlib.js
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/LICENSE b/scripts/node_modules/unzip/node_modules/readable-stream/LICENSE
deleted file mode 100644
index e3d4e695..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-Copyright Joyent, Inc. and other Node contributors. All rights reserved.
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/README.md b/scripts/node_modules/unzip/node_modules/readable-stream/README.md
deleted file mode 100644
index 3fb3e802..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# readable-stream
-
-***Node-core streams for userland***
-
-[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/)
-[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/)
-
-This package is a mirror of the Streams2 and Streams3 implementations in Node-core.
-
-If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core.
-
-**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12.
-
-**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"`
-
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/duplex.js b/scripts/node_modules/unzip/node_modules/readable-stream/duplex.js
deleted file mode 100644
index ca807af8..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/duplex.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_duplex.js")
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_duplex.js b/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_duplex.js
deleted file mode 100644
index b513d61a..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_duplex.js
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// a duplex stream is just a stream that is both readable and writable.
-// Since JS doesn't have multiple prototypal inheritance, this class
-// prototypally inherits from Readable, and then parasitically from
-// Writable.
-
-module.exports = Duplex;
-
-/**/
-var objectKeys = Object.keys || function (obj) {
- var keys = [];
- for (var key in obj) keys.push(key);
- return keys;
-}
-/* */
-
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/* */
-
-var Readable = require('./_stream_readable');
-var Writable = require('./_stream_writable');
-
-util.inherits(Duplex, Readable);
-
-forEach(objectKeys(Writable.prototype), function(method) {
- if (!Duplex.prototype[method])
- Duplex.prototype[method] = Writable.prototype[method];
-});
-
-function Duplex(options) {
- if (!(this instanceof Duplex))
- return new Duplex(options);
-
- Readable.call(this, options);
- Writable.call(this, options);
-
- if (options && options.readable === false)
- this.readable = false;
-
- if (options && options.writable === false)
- this.writable = false;
-
- this.allowHalfOpen = true;
- if (options && options.allowHalfOpen === false)
- this.allowHalfOpen = false;
-
- this.once('end', onend);
-}
-
-// the no-half-open enforcer
-function onend() {
- // if we allow half-open state, or if the writable side ended,
- // then we're ok.
- if (this.allowHalfOpen || this._writableState.ended)
- return;
-
- // no more data can be written.
- // But allow more writes to happen in this tick.
- process.nextTick(this.end.bind(this));
-}
-
-function forEach (xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_passthrough.js b/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_passthrough.js
deleted file mode 100644
index 895ca50a..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_passthrough.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// a passthrough stream.
-// basically just the most minimal sort of Transform stream.
-// Every written chunk gets output as-is.
-
-module.exports = PassThrough;
-
-var Transform = require('./_stream_transform');
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/* */
-
-util.inherits(PassThrough, Transform);
-
-function PassThrough(options) {
- if (!(this instanceof PassThrough))
- return new PassThrough(options);
-
- Transform.call(this, options);
-}
-
-PassThrough.prototype._transform = function(chunk, encoding, cb) {
- cb(null, chunk);
-};
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_readable.js b/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_readable.js
deleted file mode 100644
index 63072209..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_readable.js
+++ /dev/null
@@ -1,982 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-module.exports = Readable;
-
-/**/
-var isArray = require('isarray');
-/* */
-
-
-/**/
-var Buffer = require('buffer').Buffer;
-/* */
-
-Readable.ReadableState = ReadableState;
-
-var EE = require('events').EventEmitter;
-
-/**/
-if (!EE.listenerCount) EE.listenerCount = function(emitter, type) {
- return emitter.listeners(type).length;
-};
-/* */
-
-var Stream = require('stream');
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/* */
-
-var StringDecoder;
-
-util.inherits(Readable, Stream);
-
-function ReadableState(options, stream) {
- options = options || {};
-
- // the point at which it stops calling _read() to fill the buffer
- // Note: 0 is a valid value, means "don't call _read preemptively ever"
- var hwm = options.highWaterMark;
- this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;
-
- // cast to ints.
- this.highWaterMark = ~~this.highWaterMark;
-
- this.buffer = [];
- this.length = 0;
- this.pipes = null;
- this.pipesCount = 0;
- this.flowing = false;
- this.ended = false;
- this.endEmitted = false;
- this.reading = false;
-
- // In streams that never have any data, and do push(null) right away,
- // the consumer can miss the 'end' event if they do some I/O before
- // consuming the stream. So, we don't emit('end') until some reading
- // happens.
- this.calledRead = false;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, becuase any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // whenever we return null, then we set a flag to say
- // that we're awaiting a 'readable' event emission.
- this.needReadable = false;
- this.emittedReadable = false;
- this.readableListening = false;
-
-
- // object stream flag. Used to make read(n) ignore n and to
- // make all the buffer merging and length checks go away
- this.objectMode = !!options.objectMode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // when piping, we only care about 'readable' events that happen
- // after read()ing all the bytes and not getting any pushback.
- this.ranOut = false;
-
- // the number of writers that are awaiting a drain event in .pipe()s
- this.awaitDrain = 0;
-
- // if true, a maybeReadMore has been scheduled
- this.readingMore = false;
-
- this.decoder = null;
- this.encoding = null;
- if (options.encoding) {
- if (!StringDecoder)
- StringDecoder = require('string_decoder/').StringDecoder;
- this.decoder = new StringDecoder(options.encoding);
- this.encoding = options.encoding;
- }
-}
-
-function Readable(options) {
- if (!(this instanceof Readable))
- return new Readable(options);
-
- this._readableState = new ReadableState(options, this);
-
- // legacy
- this.readable = true;
-
- Stream.call(this);
-}
-
-// Manually shove something into the read() buffer.
-// This returns true if the highWaterMark has not been hit yet,
-// similar to how Writable.write() returns true if you should
-// write() some more.
-Readable.prototype.push = function(chunk, encoding) {
- var state = this._readableState;
-
- if (typeof chunk === 'string' && !state.objectMode) {
- encoding = encoding || state.defaultEncoding;
- if (encoding !== state.encoding) {
- chunk = new Buffer(chunk, encoding);
- encoding = '';
- }
- }
-
- return readableAddChunk(this, state, chunk, encoding, false);
-};
-
-// Unshift should *always* be something directly out of read()
-Readable.prototype.unshift = function(chunk) {
- var state = this._readableState;
- return readableAddChunk(this, state, chunk, '', true);
-};
-
-function readableAddChunk(stream, state, chunk, encoding, addToFront) {
- var er = chunkInvalid(state, chunk);
- if (er) {
- stream.emit('error', er);
- } else if (chunk === null || chunk === undefined) {
- state.reading = false;
- if (!state.ended)
- onEofChunk(stream, state);
- } else if (state.objectMode || chunk && chunk.length > 0) {
- if (state.ended && !addToFront) {
- var e = new Error('stream.push() after EOF');
- stream.emit('error', e);
- } else if (state.endEmitted && addToFront) {
- var e = new Error('stream.unshift() after end event');
- stream.emit('error', e);
- } else {
- if (state.decoder && !addToFront && !encoding)
- chunk = state.decoder.write(chunk);
-
- // update the buffer info.
- state.length += state.objectMode ? 1 : chunk.length;
- if (addToFront) {
- state.buffer.unshift(chunk);
- } else {
- state.reading = false;
- state.buffer.push(chunk);
- }
-
- if (state.needReadable)
- emitReadable(stream);
-
- maybeReadMore(stream, state);
- }
- } else if (!addToFront) {
- state.reading = false;
- }
-
- return needMoreData(state);
-}
-
-
-
-// if it's past the high water mark, we can push in some more.
-// Also, if we have no data yet, we can stand some
-// more bytes. This is to work around cases where hwm=0,
-// such as the repl. Also, if the push() triggered a
-// readable event, and the user called read(largeNumber) such that
-// needReadable was set, then we ought to push more, so that another
-// 'readable' event will be triggered.
-function needMoreData(state) {
- return !state.ended &&
- (state.needReadable ||
- state.length < state.highWaterMark ||
- state.length === 0);
-}
-
-// backwards compatibility.
-Readable.prototype.setEncoding = function(enc) {
- if (!StringDecoder)
- StringDecoder = require('string_decoder/').StringDecoder;
- this._readableState.decoder = new StringDecoder(enc);
- this._readableState.encoding = enc;
-};
-
-// Don't raise the hwm > 128MB
-var MAX_HWM = 0x800000;
-function roundUpToNextPowerOf2(n) {
- if (n >= MAX_HWM) {
- n = MAX_HWM;
- } else {
- // Get the next highest power of 2
- n--;
- for (var p = 1; p < 32; p <<= 1) n |= n >> p;
- n++;
- }
- return n;
-}
-
-function howMuchToRead(n, state) {
- if (state.length === 0 && state.ended)
- return 0;
-
- if (state.objectMode)
- return n === 0 ? 0 : 1;
-
- if (n === null || isNaN(n)) {
- // only flow one buffer at a time
- if (state.flowing && state.buffer.length)
- return state.buffer[0].length;
- else
- return state.length;
- }
-
- if (n <= 0)
- return 0;
-
- // If we're asking for more than the target buffer level,
- // then raise the water mark. Bump up to the next highest
- // power of 2, to prevent increasing it excessively in tiny
- // amounts.
- if (n > state.highWaterMark)
- state.highWaterMark = roundUpToNextPowerOf2(n);
-
- // don't have that much. return null, unless we've ended.
- if (n > state.length) {
- if (!state.ended) {
- state.needReadable = true;
- return 0;
- } else
- return state.length;
- }
-
- return n;
-}
-
-// you can override either this method, or the async _read(n) below.
-Readable.prototype.read = function(n) {
- var state = this._readableState;
- state.calledRead = true;
- var nOrig = n;
- var ret;
-
- if (typeof n !== 'number' || n > 0)
- state.emittedReadable = false;
-
- // if we're doing read(0) to trigger a readable event, but we
- // already have a bunch of data in the buffer, then just trigger
- // the 'readable' event and move on.
- if (n === 0 &&
- state.needReadable &&
- (state.length >= state.highWaterMark || state.ended)) {
- emitReadable(this);
- return null;
- }
-
- n = howMuchToRead(n, state);
-
- // if we've ended, and we're now clear, then finish it up.
- if (n === 0 && state.ended) {
- ret = null;
-
- // In cases where the decoder did not receive enough data
- // to produce a full chunk, then immediately received an
- // EOF, state.buffer will contain [, ].
- // howMuchToRead will see this and coerce the amount to
- // read to zero (because it's looking at the length of the
- // first in state.buffer), and we'll end up here.
- //
- // This can only happen via state.decoder -- no other venue
- // exists for pushing a zero-length chunk into state.buffer
- // and triggering this behavior. In this case, we return our
- // remaining data and end the stream, if appropriate.
- if (state.length > 0 && state.decoder) {
- ret = fromList(n, state);
- state.length -= ret.length;
- }
-
- if (state.length === 0)
- endReadable(this);
-
- return ret;
- }
-
- // All the actual chunk generation logic needs to be
- // *below* the call to _read. The reason is that in certain
- // synthetic stream cases, such as passthrough streams, _read
- // may be a completely synchronous operation which may change
- // the state of the read buffer, providing enough data when
- // before there was *not* enough.
- //
- // So, the steps are:
- // 1. Figure out what the state of things will be after we do
- // a read from the buffer.
- //
- // 2. If that resulting state will trigger a _read, then call _read.
- // Note that this may be asynchronous, or synchronous. Yes, it is
- // deeply ugly to write APIs this way, but that still doesn't mean
- // that the Readable class should behave improperly, as streams are
- // designed to be sync/async agnostic.
- // Take note if the _read call is sync or async (ie, if the read call
- // has returned yet), so that we know whether or not it's safe to emit
- // 'readable' etc.
- //
- // 3. Actually pull the requested chunks out of the buffer and return.
-
- // if we need a readable event, then we need to do some reading.
- var doRead = state.needReadable;
-
- // if we currently have less than the highWaterMark, then also read some
- if (state.length - n <= state.highWaterMark)
- doRead = true;
-
- // however, if we've ended, then there's no point, and if we're already
- // reading, then it's unnecessary.
- if (state.ended || state.reading)
- doRead = false;
-
- if (doRead) {
- state.reading = true;
- state.sync = true;
- // if the length is currently zero, then we *need* a readable event.
- if (state.length === 0)
- state.needReadable = true;
- // call internal read method
- this._read(state.highWaterMark);
- state.sync = false;
- }
-
- // If _read called its callback synchronously, then `reading`
- // will be false, and we need to re-evaluate how much data we
- // can return to the user.
- if (doRead && !state.reading)
- n = howMuchToRead(nOrig, state);
-
- if (n > 0)
- ret = fromList(n, state);
- else
- ret = null;
-
- if (ret === null) {
- state.needReadable = true;
- n = 0;
- }
-
- state.length -= n;
-
- // If we have nothing in the buffer, then we want to know
- // as soon as we *do* get something into the buffer.
- if (state.length === 0 && !state.ended)
- state.needReadable = true;
-
- // If we happened to read() exactly the remaining amount in the
- // buffer, and the EOF has been seen at this point, then make sure
- // that we emit 'end' on the very next tick.
- if (state.ended && !state.endEmitted && state.length === 0)
- endReadable(this);
-
- return ret;
-};
-
-function chunkInvalid(state, chunk) {
- var er = null;
- if (!Buffer.isBuffer(chunk) &&
- 'string' !== typeof chunk &&
- chunk !== null &&
- chunk !== undefined &&
- !state.objectMode) {
- er = new TypeError('Invalid non-string/buffer chunk');
- }
- return er;
-}
-
-
-function onEofChunk(stream, state) {
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length) {
- state.buffer.push(chunk);
- state.length += state.objectMode ? 1 : chunk.length;
- }
- }
- state.ended = true;
-
- // if we've ended and we have some data left, then emit
- // 'readable' now to make sure it gets picked up.
- if (state.length > 0)
- emitReadable(stream);
- else
- endReadable(stream);
-}
-
-// Don't emit readable right away in sync mode, because this can trigger
-// another read() call => stack overflow. This way, it might trigger
-// a nextTick recursion warning, but that's not so bad.
-function emitReadable(stream) {
- var state = stream._readableState;
- state.needReadable = false;
- if (state.emittedReadable)
- return;
-
- state.emittedReadable = true;
- if (state.sync)
- process.nextTick(function() {
- emitReadable_(stream);
- });
- else
- emitReadable_(stream);
-}
-
-function emitReadable_(stream) {
- stream.emit('readable');
-}
-
-
-// at this point, the user has presumably seen the 'readable' event,
-// and called read() to consume some data. that may have triggered
-// in turn another _read(n) call, in which case reading = true if
-// it's in progress.
-// However, if we're not ended, or reading, and the length < hwm,
-// then go ahead and try to read some more preemptively.
-function maybeReadMore(stream, state) {
- if (!state.readingMore) {
- state.readingMore = true;
- process.nextTick(function() {
- maybeReadMore_(stream, state);
- });
- }
-}
-
-function maybeReadMore_(stream, state) {
- var len = state.length;
- while (!state.reading && !state.flowing && !state.ended &&
- state.length < state.highWaterMark) {
- stream.read(0);
- if (len === state.length)
- // didn't get any data, stop spinning.
- break;
- else
- len = state.length;
- }
- state.readingMore = false;
-}
-
-// abstract method. to be overridden in specific implementation classes.
-// call cb(er, data) where data is <= n in length.
-// for virtual (non-string, non-buffer) streams, "length" is somewhat
-// arbitrary, and perhaps not very meaningful.
-Readable.prototype._read = function(n) {
- this.emit('error', new Error('not implemented'));
-};
-
-Readable.prototype.pipe = function(dest, pipeOpts) {
- var src = this;
- var state = this._readableState;
-
- switch (state.pipesCount) {
- case 0:
- state.pipes = dest;
- break;
- case 1:
- state.pipes = [state.pipes, dest];
- break;
- default:
- state.pipes.push(dest);
- break;
- }
- state.pipesCount += 1;
-
- var doEnd = (!pipeOpts || pipeOpts.end !== false) &&
- dest !== process.stdout &&
- dest !== process.stderr;
-
- var endFn = doEnd ? onend : cleanup;
- if (state.endEmitted)
- process.nextTick(endFn);
- else
- src.once('end', endFn);
-
- dest.on('unpipe', onunpipe);
- function onunpipe(readable) {
- if (readable !== src) return;
- cleanup();
- }
-
- function onend() {
- dest.end();
- }
-
- // when the dest drains, it reduces the awaitDrain counter
- // on the source. This would be more elegant with a .once()
- // handler in flow(), but adding and removing repeatedly is
- // too slow.
- var ondrain = pipeOnDrain(src);
- dest.on('drain', ondrain);
-
- function cleanup() {
- // cleanup event handlers once the pipe is broken
- dest.removeListener('close', onclose);
- dest.removeListener('finish', onfinish);
- dest.removeListener('drain', ondrain);
- dest.removeListener('error', onerror);
- dest.removeListener('unpipe', onunpipe);
- src.removeListener('end', onend);
- src.removeListener('end', cleanup);
-
- // if the reader is waiting for a drain event from this
- // specific writer, then it would cause it to never start
- // flowing again.
- // So, if this is awaiting a drain, then we just call it now.
- // If we don't know, then assume that we are waiting for one.
- if (!dest._writableState || dest._writableState.needDrain)
- ondrain();
- }
-
- // if the dest has an error, then stop piping into it.
- // however, don't suppress the throwing behavior for this.
- function onerror(er) {
- unpipe();
- dest.removeListener('error', onerror);
- if (EE.listenerCount(dest, 'error') === 0)
- dest.emit('error', er);
- }
- // This is a brutally ugly hack to make sure that our error handler
- // is attached before any userland ones. NEVER DO THIS.
- if (!dest._events || !dest._events.error)
- dest.on('error', onerror);
- else if (isArray(dest._events.error))
- dest._events.error.unshift(onerror);
- else
- dest._events.error = [onerror, dest._events.error];
-
-
-
- // Both close and finish should trigger unpipe, but only once.
- function onclose() {
- dest.removeListener('finish', onfinish);
- unpipe();
- }
- dest.once('close', onclose);
- function onfinish() {
- dest.removeListener('close', onclose);
- unpipe();
- }
- dest.once('finish', onfinish);
-
- function unpipe() {
- src.unpipe(dest);
- }
-
- // tell the dest that it's being piped to
- dest.emit('pipe', src);
-
- // start the flow if it hasn't been started already.
- if (!state.flowing) {
- // the handler that waits for readable events after all
- // the data gets sucked out in flow.
- // This would be easier to follow with a .once() handler
- // in flow(), but that is too slow.
- this.on('readable', pipeOnReadable);
-
- state.flowing = true;
- process.nextTick(function() {
- flow(src);
- });
- }
-
- return dest;
-};
-
-function pipeOnDrain(src) {
- return function() {
- var dest = this;
- var state = src._readableState;
- state.awaitDrain--;
- if (state.awaitDrain === 0)
- flow(src);
- };
-}
-
-function flow(src) {
- var state = src._readableState;
- var chunk;
- state.awaitDrain = 0;
-
- function write(dest, i, list) {
- var written = dest.write(chunk);
- if (false === written) {
- state.awaitDrain++;
- }
- }
-
- while (state.pipesCount && null !== (chunk = src.read())) {
-
- if (state.pipesCount === 1)
- write(state.pipes, 0, null);
- else
- forEach(state.pipes, write);
-
- src.emit('data', chunk);
-
- // if anyone needs a drain, then we have to wait for that.
- if (state.awaitDrain > 0)
- return;
- }
-
- // if every destination was unpiped, either before entering this
- // function, or in the while loop, then stop flowing.
- //
- // NB: This is a pretty rare edge case.
- if (state.pipesCount === 0) {
- state.flowing = false;
-
- // if there were data event listeners added, then switch to old mode.
- if (EE.listenerCount(src, 'data') > 0)
- emitDataEvents(src);
- return;
- }
-
- // at this point, no one needed a drain, so we just ran out of data
- // on the next readable event, start it over again.
- state.ranOut = true;
-}
-
-function pipeOnReadable() {
- if (this._readableState.ranOut) {
- this._readableState.ranOut = false;
- flow(this);
- }
-}
-
-
-Readable.prototype.unpipe = function(dest) {
- var state = this._readableState;
-
- // if we're not piping anywhere, then do nothing.
- if (state.pipesCount === 0)
- return this;
-
- // just one destination. most common case.
- if (state.pipesCount === 1) {
- // passed in one, but it's not the right one.
- if (dest && dest !== state.pipes)
- return this;
-
- if (!dest)
- dest = state.pipes;
-
- // got a match.
- state.pipes = null;
- state.pipesCount = 0;
- this.removeListener('readable', pipeOnReadable);
- state.flowing = false;
- if (dest)
- dest.emit('unpipe', this);
- return this;
- }
-
- // slow case. multiple pipe destinations.
-
- if (!dest) {
- // remove all.
- var dests = state.pipes;
- var len = state.pipesCount;
- state.pipes = null;
- state.pipesCount = 0;
- this.removeListener('readable', pipeOnReadable);
- state.flowing = false;
-
- for (var i = 0; i < len; i++)
- dests[i].emit('unpipe', this);
- return this;
- }
-
- // try to find the right one.
- var i = indexOf(state.pipes, dest);
- if (i === -1)
- return this;
-
- state.pipes.splice(i, 1);
- state.pipesCount -= 1;
- if (state.pipesCount === 1)
- state.pipes = state.pipes[0];
-
- dest.emit('unpipe', this);
-
- return this;
-};
-
-// set up data events if they are asked for
-// Ensure readable listeners eventually get something
-Readable.prototype.on = function(ev, fn) {
- var res = Stream.prototype.on.call(this, ev, fn);
-
- if (ev === 'data' && !this._readableState.flowing)
- emitDataEvents(this);
-
- if (ev === 'readable' && this.readable) {
- var state = this._readableState;
- if (!state.readableListening) {
- state.readableListening = true;
- state.emittedReadable = false;
- state.needReadable = true;
- if (!state.reading) {
- this.read(0);
- } else if (state.length) {
- emitReadable(this, state);
- }
- }
- }
-
- return res;
-};
-Readable.prototype.addListener = Readable.prototype.on;
-
-// pause() and resume() are remnants of the legacy readable stream API
-// If the user uses them, then switch into old mode.
-Readable.prototype.resume = function() {
- emitDataEvents(this);
- this.read(0);
- this.emit('resume');
-};
-
-Readable.prototype.pause = function() {
- emitDataEvents(this, true);
- this.emit('pause');
-};
-
-function emitDataEvents(stream, startPaused) {
- var state = stream._readableState;
-
- if (state.flowing) {
- // https://github.com/isaacs/readable-stream/issues/16
- throw new Error('Cannot switch to old mode now.');
- }
-
- var paused = startPaused || false;
- var readable = false;
-
- // convert to an old-style stream.
- stream.readable = true;
- stream.pipe = Stream.prototype.pipe;
- stream.on = stream.addListener = Stream.prototype.on;
-
- stream.on('readable', function() {
- readable = true;
-
- var c;
- while (!paused && (null !== (c = stream.read())))
- stream.emit('data', c);
-
- if (c === null) {
- readable = false;
- stream._readableState.needReadable = true;
- }
- });
-
- stream.pause = function() {
- paused = true;
- this.emit('pause');
- };
-
- stream.resume = function() {
- paused = false;
- if (readable)
- process.nextTick(function() {
- stream.emit('readable');
- });
- else
- this.read(0);
- this.emit('resume');
- };
-
- // now make it start, just in case it hadn't already.
- stream.emit('readable');
-}
-
-// wrap an old-style stream as the async data source.
-// This is *not* part of the readable stream interface.
-// It is an ugly unfortunate mess of history.
-Readable.prototype.wrap = function(stream) {
- var state = this._readableState;
- var paused = false;
-
- var self = this;
- stream.on('end', function() {
- if (state.decoder && !state.ended) {
- var chunk = state.decoder.end();
- if (chunk && chunk.length)
- self.push(chunk);
- }
-
- self.push(null);
- });
-
- stream.on('data', function(chunk) {
- if (state.decoder)
- chunk = state.decoder.write(chunk);
-
- // don't skip over falsy values in objectMode
- //if (state.objectMode && util.isNullOrUndefined(chunk))
- if (state.objectMode && (chunk === null || chunk === undefined))
- return;
- else if (!state.objectMode && (!chunk || !chunk.length))
- return;
-
- var ret = self.push(chunk);
- if (!ret) {
- paused = true;
- stream.pause();
- }
- });
-
- // proxy all the other methods.
- // important when wrapping filters and duplexes.
- for (var i in stream) {
- if (typeof stream[i] === 'function' &&
- typeof this[i] === 'undefined') {
- this[i] = function(method) { return function() {
- return stream[method].apply(stream, arguments);
- }}(i);
- }
- }
-
- // proxy certain important events.
- var events = ['error', 'close', 'destroy', 'pause', 'resume'];
- forEach(events, function(ev) {
- stream.on(ev, self.emit.bind(self, ev));
- });
-
- // when we try to consume some more bytes, simply unpause the
- // underlying stream.
- self._read = function(n) {
- if (paused) {
- paused = false;
- stream.resume();
- }
- };
-
- return self;
-};
-
-
-
-// exposed for testing purposes only.
-Readable._fromList = fromList;
-
-// Pluck off n bytes from an array of buffers.
-// Length is the combined lengths of all the buffers in the list.
-function fromList(n, state) {
- var list = state.buffer;
- var length = state.length;
- var stringMode = !!state.decoder;
- var objectMode = !!state.objectMode;
- var ret;
-
- // nothing in the list, definitely empty.
- if (list.length === 0)
- return null;
-
- if (length === 0)
- ret = null;
- else if (objectMode)
- ret = list.shift();
- else if (!n || n >= length) {
- // read it all, truncate the array.
- if (stringMode)
- ret = list.join('');
- else
- ret = Buffer.concat(list, length);
- list.length = 0;
- } else {
- // read just some of it.
- if (n < list[0].length) {
- // just take a part of the first list item.
- // slice is the same for buffers and strings.
- var buf = list[0];
- ret = buf.slice(0, n);
- list[0] = buf.slice(n);
- } else if (n === list[0].length) {
- // first list is a perfect match
- ret = list.shift();
- } else {
- // complex case.
- // we have enough to cover it, but it spans past the first buffer.
- if (stringMode)
- ret = '';
- else
- ret = new Buffer(n);
-
- var c = 0;
- for (var i = 0, l = list.length; i < l && c < n; i++) {
- var buf = list[0];
- var cpy = Math.min(n - c, buf.length);
-
- if (stringMode)
- ret += buf.slice(0, cpy);
- else
- buf.copy(ret, c, 0, cpy);
-
- if (cpy < buf.length)
- list[0] = buf.slice(cpy);
- else
- list.shift();
-
- c += cpy;
- }
- }
- }
-
- return ret;
-}
-
-function endReadable(stream) {
- var state = stream._readableState;
-
- // If we get here before consuming all the bytes, then that is a
- // bug in node. Should never happen.
- if (state.length > 0)
- throw new Error('endReadable called on non-empty stream');
-
- if (!state.endEmitted && state.calledRead) {
- state.ended = true;
- process.nextTick(function() {
- // Check that we didn't get one last unshift.
- if (!state.endEmitted && state.length === 0) {
- state.endEmitted = true;
- stream.readable = false;
- stream.emit('end');
- }
- });
- }
-}
-
-function forEach (xs, f) {
- for (var i = 0, l = xs.length; i < l; i++) {
- f(xs[i], i);
- }
-}
-
-function indexOf (xs, x) {
- for (var i = 0, l = xs.length; i < l; i++) {
- if (xs[i] === x) return i;
- }
- return -1;
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_transform.js b/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_transform.js
deleted file mode 100644
index eb188df3..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_transform.js
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-
-// a transform stream is a readable/writable stream where you do
-// something with the data. Sometimes it's called a "filter",
-// but that's not a great name for it, since that implies a thing where
-// some bits pass through, and others are simply ignored. (That would
-// be a valid example of a transform, of course.)
-//
-// While the output is causally related to the input, it's not a
-// necessarily symmetric or synchronous transformation. For example,
-// a zlib stream might take multiple plain-text writes(), and then
-// emit a single compressed chunk some time in the future.
-//
-// Here's how this works:
-//
-// The Transform stream has all the aspects of the readable and writable
-// stream classes. When you write(chunk), that calls _write(chunk,cb)
-// internally, and returns false if there's a lot of pending writes
-// buffered up. When you call read(), that calls _read(n) until
-// there's enough pending readable data buffered up.
-//
-// In a transform stream, the written data is placed in a buffer. When
-// _read(n) is called, it transforms the queued up data, calling the
-// buffered _write cb's as it consumes chunks. If consuming a single
-// written chunk would result in multiple output chunks, then the first
-// outputted bit calls the readcb, and subsequent chunks just go into
-// the read buffer, and will cause it to emit 'readable' if necessary.
-//
-// This way, back-pressure is actually determined by the reading side,
-// since _read has to be called to start processing a new chunk. However,
-// a pathological inflate type of transform can cause excessive buffering
-// here. For example, imagine a stream where every byte of input is
-// interpreted as an integer from 0-255, and then results in that many
-// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
-// 1kb of data being output. In this case, you could write a very small
-// amount of input, and end up with a very large amount of output. In
-// such a pathological inflating mechanism, there'd be no way to tell
-// the system to stop doing the transform. A single 4MB write could
-// cause the system to run out of memory.
-//
-// However, even in such a pathological case, only a single written chunk
-// would be consumed, and then the rest would wait (un-transformed) until
-// the results of the previous transformed chunk were consumed.
-
-module.exports = Transform;
-
-var Duplex = require('./_stream_duplex');
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/* */
-
-util.inherits(Transform, Duplex);
-
-
-function TransformState(options, stream) {
- this.afterTransform = function(er, data) {
- return afterTransform(stream, er, data);
- };
-
- this.needTransform = false;
- this.transforming = false;
- this.writecb = null;
- this.writechunk = null;
-}
-
-function afterTransform(stream, er, data) {
- var ts = stream._transformState;
- ts.transforming = false;
-
- var cb = ts.writecb;
-
- if (!cb)
- return stream.emit('error', new Error('no writecb in Transform class'));
-
- ts.writechunk = null;
- ts.writecb = null;
-
- if (data !== null && data !== undefined)
- stream.push(data);
-
- if (cb)
- cb(er);
-
- var rs = stream._readableState;
- rs.reading = false;
- if (rs.needReadable || rs.length < rs.highWaterMark) {
- stream._read(rs.highWaterMark);
- }
-}
-
-
-function Transform(options) {
- if (!(this instanceof Transform))
- return new Transform(options);
-
- Duplex.call(this, options);
-
- var ts = this._transformState = new TransformState(options, this);
-
- // when the writable side finishes, then flush out anything remaining.
- var stream = this;
-
- // start out asking for a readable event once data is transformed.
- this._readableState.needReadable = true;
-
- // we have implemented the _read method, and done the other things
- // that Readable wants before the first _read call, so unset the
- // sync guard flag.
- this._readableState.sync = false;
-
- this.once('finish', function() {
- if ('function' === typeof this._flush)
- this._flush(function(er) {
- done(stream, er);
- });
- else
- done(stream);
- });
-}
-
-Transform.prototype.push = function(chunk, encoding) {
- this._transformState.needTransform = false;
- return Duplex.prototype.push.call(this, chunk, encoding);
-};
-
-// This is the part where you do stuff!
-// override this function in implementation classes.
-// 'chunk' is an input chunk.
-//
-// Call `push(newChunk)` to pass along transformed output
-// to the readable side. You may call 'push' zero or more times.
-//
-// Call `cb(err)` when you are done with this chunk. If you pass
-// an error, then that'll put the hurt on the whole operation. If you
-// never call cb(), then you'll never get another chunk.
-Transform.prototype._transform = function(chunk, encoding, cb) {
- throw new Error('not implemented');
-};
-
-Transform.prototype._write = function(chunk, encoding, cb) {
- var ts = this._transformState;
- ts.writecb = cb;
- ts.writechunk = chunk;
- ts.writeencoding = encoding;
- if (!ts.transforming) {
- var rs = this._readableState;
- if (ts.needTransform ||
- rs.needReadable ||
- rs.length < rs.highWaterMark)
- this._read(rs.highWaterMark);
- }
-};
-
-// Doesn't matter what the args are here.
-// _transform does all the work.
-// That we got here means that the readable side wants more data.
-Transform.prototype._read = function(n) {
- var ts = this._transformState;
-
- if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
- ts.transforming = true;
- this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
- } else {
- // mark that we need a transform, so that any data that comes in
- // will get processed, now that we've asked for it.
- ts.needTransform = true;
- }
-};
-
-
-function done(stream, er) {
- if (er)
- return stream.emit('error', er);
-
- // if there's nothing in the write buffer, then that means
- // that nothing more will ever be provided
- var ws = stream._writableState;
- var rs = stream._readableState;
- var ts = stream._transformState;
-
- if (ws.length)
- throw new Error('calling transform done when ws.length != 0');
-
- if (ts.transforming)
- throw new Error('calling transform done when still transforming');
-
- return stream.push(null);
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_writable.js b/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_writable.js
deleted file mode 100644
index 4bdaa4fa..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/lib/_stream_writable.js
+++ /dev/null
@@ -1,386 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// A bit simpler than readable streams.
-// Implement an async ._write(chunk, cb), and it'll handle all
-// the drain event emission and buffering.
-
-module.exports = Writable;
-
-/**/
-var Buffer = require('buffer').Buffer;
-/* */
-
-Writable.WritableState = WritableState;
-
-
-/**/
-var util = require('core-util-is');
-util.inherits = require('inherits');
-/* */
-
-var Stream = require('stream');
-
-util.inherits(Writable, Stream);
-
-function WriteReq(chunk, encoding, cb) {
- this.chunk = chunk;
- this.encoding = encoding;
- this.callback = cb;
-}
-
-function WritableState(options, stream) {
- options = options || {};
-
- // the point at which write() starts returning false
- // Note: 0 is a valid value, means that we always return false if
- // the entire buffer is not flushed immediately on write()
- var hwm = options.highWaterMark;
- this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024;
-
- // object stream flag to indicate whether or not this stream
- // contains buffers or objects.
- this.objectMode = !!options.objectMode;
-
- // cast to ints.
- this.highWaterMark = ~~this.highWaterMark;
-
- this.needDrain = false;
- // at the start of calling end()
- this.ending = false;
- // when end() has been called, and returned
- this.ended = false;
- // when 'finish' is emitted
- this.finished = false;
-
- // should we decode strings into buffers before passing to _write?
- // this is here so that some node-core streams can optimize string
- // handling at a lower level.
- var noDecode = options.decodeStrings === false;
- this.decodeStrings = !noDecode;
-
- // Crypto is kind of old and crusty. Historically, its default string
- // encoding is 'binary' so we have to make this configurable.
- // Everything else in the universe uses 'utf8', though.
- this.defaultEncoding = options.defaultEncoding || 'utf8';
-
- // not an actual buffer we keep track of, but a measurement
- // of how much we're waiting to get pushed to some underlying
- // socket or file.
- this.length = 0;
-
- // a flag to see when we're in the middle of a write.
- this.writing = false;
-
- // a flag to be able to tell if the onwrite cb is called immediately,
- // or on a later tick. We set this to true at first, becuase any
- // actions that shouldn't happen until "later" should generally also
- // not happen before the first write call.
- this.sync = true;
-
- // a flag to know if we're processing previously buffered items, which
- // may call the _write() callback in the same tick, so that we don't
- // end up in an overlapped onwrite situation.
- this.bufferProcessing = false;
-
- // the callback that's passed to _write(chunk,cb)
- this.onwrite = function(er) {
- onwrite(stream, er);
- };
-
- // the callback that the user supplies to write(chunk,encoding,cb)
- this.writecb = null;
-
- // the amount that is being written when _write is called.
- this.writelen = 0;
-
- this.buffer = [];
-
- // True if the error was already emitted and should not be thrown again
- this.errorEmitted = false;
-}
-
-function Writable(options) {
- var Duplex = require('./_stream_duplex');
-
- // Writable ctor is applied to Duplexes, though they're not
- // instanceof Writable, they're instanceof Readable.
- if (!(this instanceof Writable) && !(this instanceof Duplex))
- return new Writable(options);
-
- this._writableState = new WritableState(options, this);
-
- // legacy.
- this.writable = true;
-
- Stream.call(this);
-}
-
-// Otherwise people can pipe Writable streams, which is just wrong.
-Writable.prototype.pipe = function() {
- this.emit('error', new Error('Cannot pipe. Not readable.'));
-};
-
-
-function writeAfterEnd(stream, state, cb) {
- var er = new Error('write after end');
- // TODO: defer error events consistently everywhere, not just the cb
- stream.emit('error', er);
- process.nextTick(function() {
- cb(er);
- });
-}
-
-// If we get something that is not a buffer, string, null, or undefined,
-// and we're not in objectMode, then that's an error.
-// Otherwise stream chunks are all considered to be of length=1, and the
-// watermarks determine how many objects to keep in the buffer, rather than
-// how many bytes or characters.
-function validChunk(stream, state, chunk, cb) {
- var valid = true;
- if (!Buffer.isBuffer(chunk) &&
- 'string' !== typeof chunk &&
- chunk !== null &&
- chunk !== undefined &&
- !state.objectMode) {
- var er = new TypeError('Invalid non-string/buffer chunk');
- stream.emit('error', er);
- process.nextTick(function() {
- cb(er);
- });
- valid = false;
- }
- return valid;
-}
-
-Writable.prototype.write = function(chunk, encoding, cb) {
- var state = this._writableState;
- var ret = false;
-
- if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (Buffer.isBuffer(chunk))
- encoding = 'buffer';
- else if (!encoding)
- encoding = state.defaultEncoding;
-
- if (typeof cb !== 'function')
- cb = function() {};
-
- if (state.ended)
- writeAfterEnd(this, state, cb);
- else if (validChunk(this, state, chunk, cb))
- ret = writeOrBuffer(this, state, chunk, encoding, cb);
-
- return ret;
-};
-
-function decodeChunk(state, chunk, encoding) {
- if (!state.objectMode &&
- state.decodeStrings !== false &&
- typeof chunk === 'string') {
- chunk = new Buffer(chunk, encoding);
- }
- return chunk;
-}
-
-// if we're already writing something, then just put this
-// in the queue, and wait our turn. Otherwise, call _write
-// If we return false, then we need a drain event, so set that flag.
-function writeOrBuffer(stream, state, chunk, encoding, cb) {
- chunk = decodeChunk(state, chunk, encoding);
- if (Buffer.isBuffer(chunk))
- encoding = 'buffer';
- var len = state.objectMode ? 1 : chunk.length;
-
- state.length += len;
-
- var ret = state.length < state.highWaterMark;
- // we must ensure that previous needDrain will not be reset to false.
- if (!ret)
- state.needDrain = true;
-
- if (state.writing)
- state.buffer.push(new WriteReq(chunk, encoding, cb));
- else
- doWrite(stream, state, len, chunk, encoding, cb);
-
- return ret;
-}
-
-function doWrite(stream, state, len, chunk, encoding, cb) {
- state.writelen = len;
- state.writecb = cb;
- state.writing = true;
- state.sync = true;
- stream._write(chunk, encoding, state.onwrite);
- state.sync = false;
-}
-
-function onwriteError(stream, state, sync, er, cb) {
- if (sync)
- process.nextTick(function() {
- cb(er);
- });
- else
- cb(er);
-
- stream._writableState.errorEmitted = true;
- stream.emit('error', er);
-}
-
-function onwriteStateUpdate(state) {
- state.writing = false;
- state.writecb = null;
- state.length -= state.writelen;
- state.writelen = 0;
-}
-
-function onwrite(stream, er) {
- var state = stream._writableState;
- var sync = state.sync;
- var cb = state.writecb;
-
- onwriteStateUpdate(state);
-
- if (er)
- onwriteError(stream, state, sync, er, cb);
- else {
- // Check if we're actually ready to finish, but don't emit yet
- var finished = needFinish(stream, state);
-
- if (!finished && !state.bufferProcessing && state.buffer.length)
- clearBuffer(stream, state);
-
- if (sync) {
- process.nextTick(function() {
- afterWrite(stream, state, finished, cb);
- });
- } else {
- afterWrite(stream, state, finished, cb);
- }
- }
-}
-
-function afterWrite(stream, state, finished, cb) {
- if (!finished)
- onwriteDrain(stream, state);
- cb();
- if (finished)
- finishMaybe(stream, state);
-}
-
-// Must force callback to be called on nextTick, so that we don't
-// emit 'drain' before the write() consumer gets the 'false' return
-// value, and has a chance to attach a 'drain' listener.
-function onwriteDrain(stream, state) {
- if (state.length === 0 && state.needDrain) {
- state.needDrain = false;
- stream.emit('drain');
- }
-}
-
-
-// if there's something in the buffer waiting, then process it
-function clearBuffer(stream, state) {
- state.bufferProcessing = true;
-
- for (var c = 0; c < state.buffer.length; c++) {
- var entry = state.buffer[c];
- var chunk = entry.chunk;
- var encoding = entry.encoding;
- var cb = entry.callback;
- var len = state.objectMode ? 1 : chunk.length;
-
- doWrite(stream, state, len, chunk, encoding, cb);
-
- // if we didn't call the onwrite immediately, then
- // it means that we need to wait until it does.
- // also, that means that the chunk and cb are currently
- // being processed, so move the buffer counter past them.
- if (state.writing) {
- c++;
- break;
- }
- }
-
- state.bufferProcessing = false;
- if (c < state.buffer.length)
- state.buffer = state.buffer.slice(c);
- else
- state.buffer.length = 0;
-}
-
-Writable.prototype._write = function(chunk, encoding, cb) {
- cb(new Error('not implemented'));
-};
-
-Writable.prototype.end = function(chunk, encoding, cb) {
- var state = this._writableState;
-
- if (typeof chunk === 'function') {
- cb = chunk;
- chunk = null;
- encoding = null;
- } else if (typeof encoding === 'function') {
- cb = encoding;
- encoding = null;
- }
-
- if (typeof chunk !== 'undefined' && chunk !== null)
- this.write(chunk, encoding);
-
- // ignore unnecessary end() calls.
- if (!state.ending && !state.finished)
- endWritable(this, state, cb);
-};
-
-
-function needFinish(stream, state) {
- return (state.ending &&
- state.length === 0 &&
- !state.finished &&
- !state.writing);
-}
-
-function finishMaybe(stream, state) {
- var need = needFinish(stream, state);
- if (need) {
- state.finished = true;
- stream.emit('finish');
- }
- return need;
-}
-
-function endWritable(stream, state, cb) {
- state.ending = true;
- finishMaybe(stream, state);
- if (cb) {
- if (state.finished)
- process.nextTick(cb);
- else
- stream.once('finish', cb);
- }
- state.ended = true;
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/README.md b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/README.md
deleted file mode 100644
index 5a76b414..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# core-util-is
-
-The `util.is*` functions introduced in Node v0.12.
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/float.patch b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/float.patch
deleted file mode 100644
index a06d5c05..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/float.patch
+++ /dev/null
@@ -1,604 +0,0 @@
-diff --git a/lib/util.js b/lib/util.js
-index a03e874..9074e8e 100644
---- a/lib/util.js
-+++ b/lib/util.js
-@@ -19,430 +19,6 @@
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--var formatRegExp = /%[sdj%]/g;
--exports.format = function(f) {
-- if (!isString(f)) {
-- var objects = [];
-- for (var i = 0; i < arguments.length; i++) {
-- objects.push(inspect(arguments[i]));
-- }
-- return objects.join(' ');
-- }
--
-- var i = 1;
-- var args = arguments;
-- var len = args.length;
-- var str = String(f).replace(formatRegExp, function(x) {
-- if (x === '%%') return '%';
-- if (i >= len) return x;
-- switch (x) {
-- case '%s': return String(args[i++]);
-- case '%d': return Number(args[i++]);
-- case '%j':
-- try {
-- return JSON.stringify(args[i++]);
-- } catch (_) {
-- return '[Circular]';
-- }
-- default:
-- return x;
-- }
-- });
-- for (var x = args[i]; i < len; x = args[++i]) {
-- if (isNull(x) || !isObject(x)) {
-- str += ' ' + x;
-- } else {
-- str += ' ' + inspect(x);
-- }
-- }
-- return str;
--};
--
--
--// Mark that a method should not be used.
--// Returns a modified function which warns once by default.
--// If --no-deprecation is set, then it is a no-op.
--exports.deprecate = function(fn, msg) {
-- // Allow for deprecating things in the process of starting up.
-- if (isUndefined(global.process)) {
-- return function() {
-- return exports.deprecate(fn, msg).apply(this, arguments);
-- };
-- }
--
-- if (process.noDeprecation === true) {
-- return fn;
-- }
--
-- var warned = false;
-- function deprecated() {
-- if (!warned) {
-- if (process.throwDeprecation) {
-- throw new Error(msg);
-- } else if (process.traceDeprecation) {
-- console.trace(msg);
-- } else {
-- console.error(msg);
-- }
-- warned = true;
-- }
-- return fn.apply(this, arguments);
-- }
--
-- return deprecated;
--};
--
--
--var debugs = {};
--var debugEnviron;
--exports.debuglog = function(set) {
-- if (isUndefined(debugEnviron))
-- debugEnviron = process.env.NODE_DEBUG || '';
-- set = set.toUpperCase();
-- if (!debugs[set]) {
-- if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
-- var pid = process.pid;
-- debugs[set] = function() {
-- var msg = exports.format.apply(exports, arguments);
-- console.error('%s %d: %s', set, pid, msg);
-- };
-- } else {
-- debugs[set] = function() {};
-- }
-- }
-- return debugs[set];
--};
--
--
--/**
-- * Echos the value of a value. Trys to print the value out
-- * in the best way possible given the different types.
-- *
-- * @param {Object} obj The object to print out.
-- * @param {Object} opts Optional options object that alters the output.
-- */
--/* legacy: obj, showHidden, depth, colors*/
--function inspect(obj, opts) {
-- // default options
-- var ctx = {
-- seen: [],
-- stylize: stylizeNoColor
-- };
-- // legacy...
-- if (arguments.length >= 3) ctx.depth = arguments[2];
-- if (arguments.length >= 4) ctx.colors = arguments[3];
-- if (isBoolean(opts)) {
-- // legacy...
-- ctx.showHidden = opts;
-- } else if (opts) {
-- // got an "options" object
-- exports._extend(ctx, opts);
-- }
-- // set default options
-- if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
-- if (isUndefined(ctx.depth)) ctx.depth = 2;
-- if (isUndefined(ctx.colors)) ctx.colors = false;
-- if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
-- if (ctx.colors) ctx.stylize = stylizeWithColor;
-- return formatValue(ctx, obj, ctx.depth);
--}
--exports.inspect = inspect;
--
--
--// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
--inspect.colors = {
-- 'bold' : [1, 22],
-- 'italic' : [3, 23],
-- 'underline' : [4, 24],
-- 'inverse' : [7, 27],
-- 'white' : [37, 39],
-- 'grey' : [90, 39],
-- 'black' : [30, 39],
-- 'blue' : [34, 39],
-- 'cyan' : [36, 39],
-- 'green' : [32, 39],
-- 'magenta' : [35, 39],
-- 'red' : [31, 39],
-- 'yellow' : [33, 39]
--};
--
--// Don't use 'blue' not visible on cmd.exe
--inspect.styles = {
-- 'special': 'cyan',
-- 'number': 'yellow',
-- 'boolean': 'yellow',
-- 'undefined': 'grey',
-- 'null': 'bold',
-- 'string': 'green',
-- 'date': 'magenta',
-- // "name": intentionally not styling
-- 'regexp': 'red'
--};
--
--
--function stylizeWithColor(str, styleType) {
-- var style = inspect.styles[styleType];
--
-- if (style) {
-- return '\u001b[' + inspect.colors[style][0] + 'm' + str +
-- '\u001b[' + inspect.colors[style][1] + 'm';
-- } else {
-- return str;
-- }
--}
--
--
--function stylizeNoColor(str, styleType) {
-- return str;
--}
--
--
--function arrayToHash(array) {
-- var hash = {};
--
-- array.forEach(function(val, idx) {
-- hash[val] = true;
-- });
--
-- return hash;
--}
--
--
--function formatValue(ctx, value, recurseTimes) {
-- // Provide a hook for user-specified inspect functions.
-- // Check that value is an object with an inspect function on it
-- if (ctx.customInspect &&
-- value &&
-- isFunction(value.inspect) &&
-- // Filter out the util module, it's inspect function is special
-- value.inspect !== exports.inspect &&
-- // Also filter out any prototype objects using the circular check.
-- !(value.constructor && value.constructor.prototype === value)) {
-- var ret = value.inspect(recurseTimes, ctx);
-- if (!isString(ret)) {
-- ret = formatValue(ctx, ret, recurseTimes);
-- }
-- return ret;
-- }
--
-- // Primitive types cannot have properties
-- var primitive = formatPrimitive(ctx, value);
-- if (primitive) {
-- return primitive;
-- }
--
-- // Look up the keys of the object.
-- var keys = Object.keys(value);
-- var visibleKeys = arrayToHash(keys);
--
-- if (ctx.showHidden) {
-- keys = Object.getOwnPropertyNames(value);
-- }
--
-- // Some type of object without properties can be shortcutted.
-- if (keys.length === 0) {
-- if (isFunction(value)) {
-- var name = value.name ? ': ' + value.name : '';
-- return ctx.stylize('[Function' + name + ']', 'special');
-- }
-- if (isRegExp(value)) {
-- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-- }
-- if (isDate(value)) {
-- return ctx.stylize(Date.prototype.toString.call(value), 'date');
-- }
-- if (isError(value)) {
-- return formatError(value);
-- }
-- }
--
-- var base = '', array = false, braces = ['{', '}'];
--
-- // Make Array say that they are Array
-- if (isArray(value)) {
-- array = true;
-- braces = ['[', ']'];
-- }
--
-- // Make functions say that they are functions
-- if (isFunction(value)) {
-- var n = value.name ? ': ' + value.name : '';
-- base = ' [Function' + n + ']';
-- }
--
-- // Make RegExps say that they are RegExps
-- if (isRegExp(value)) {
-- base = ' ' + RegExp.prototype.toString.call(value);
-- }
--
-- // Make dates with properties first say the date
-- if (isDate(value)) {
-- base = ' ' + Date.prototype.toUTCString.call(value);
-- }
--
-- // Make error with message first say the error
-- if (isError(value)) {
-- base = ' ' + formatError(value);
-- }
--
-- if (keys.length === 0 && (!array || value.length == 0)) {
-- return braces[0] + base + braces[1];
-- }
--
-- if (recurseTimes < 0) {
-- if (isRegExp(value)) {
-- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-- } else {
-- return ctx.stylize('[Object]', 'special');
-- }
-- }
--
-- ctx.seen.push(value);
--
-- var output;
-- if (array) {
-- output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
-- } else {
-- output = keys.map(function(key) {
-- return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
-- });
-- }
--
-- ctx.seen.pop();
--
-- return reduceToSingleString(output, base, braces);
--}
--
--
--function formatPrimitive(ctx, value) {
-- if (isUndefined(value))
-- return ctx.stylize('undefined', 'undefined');
-- if (isString(value)) {
-- var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
-- .replace(/'/g, "\\'")
-- .replace(/\\"/g, '"') + '\'';
-- return ctx.stylize(simple, 'string');
-- }
-- if (isNumber(value)) {
-- // Format -0 as '-0'. Strict equality won't distinguish 0 from -0,
-- // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 .
-- if (value === 0 && 1 / value < 0)
-- return ctx.stylize('-0', 'number');
-- return ctx.stylize('' + value, 'number');
-- }
-- if (isBoolean(value))
-- return ctx.stylize('' + value, 'boolean');
-- // For some reason typeof null is "object", so special case here.
-- if (isNull(value))
-- return ctx.stylize('null', 'null');
--}
--
--
--function formatError(value) {
-- return '[' + Error.prototype.toString.call(value) + ']';
--}
--
--
--function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
-- var output = [];
-- for (var i = 0, l = value.length; i < l; ++i) {
-- if (hasOwnProperty(value, String(i))) {
-- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-- String(i), true));
-- } else {
-- output.push('');
-- }
-- }
-- keys.forEach(function(key) {
-- if (!key.match(/^\d+$/)) {
-- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-- key, true));
-- }
-- });
-- return output;
--}
--
--
--function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
-- var name, str, desc;
-- desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
-- if (desc.get) {
-- if (desc.set) {
-- str = ctx.stylize('[Getter/Setter]', 'special');
-- } else {
-- str = ctx.stylize('[Getter]', 'special');
-- }
-- } else {
-- if (desc.set) {
-- str = ctx.stylize('[Setter]', 'special');
-- }
-- }
-- if (!hasOwnProperty(visibleKeys, key)) {
-- name = '[' + key + ']';
-- }
-- if (!str) {
-- if (ctx.seen.indexOf(desc.value) < 0) {
-- if (isNull(recurseTimes)) {
-- str = formatValue(ctx, desc.value, null);
-- } else {
-- str = formatValue(ctx, desc.value, recurseTimes - 1);
-- }
-- if (str.indexOf('\n') > -1) {
-- if (array) {
-- str = str.split('\n').map(function(line) {
-- return ' ' + line;
-- }).join('\n').substr(2);
-- } else {
-- str = '\n' + str.split('\n').map(function(line) {
-- return ' ' + line;
-- }).join('\n');
-- }
-- }
-- } else {
-- str = ctx.stylize('[Circular]', 'special');
-- }
-- }
-- if (isUndefined(name)) {
-- if (array && key.match(/^\d+$/)) {
-- return str;
-- }
-- name = JSON.stringify('' + key);
-- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
-- name = name.substr(1, name.length - 2);
-- name = ctx.stylize(name, 'name');
-- } else {
-- name = name.replace(/'/g, "\\'")
-- .replace(/\\"/g, '"')
-- .replace(/(^"|"$)/g, "'");
-- name = ctx.stylize(name, 'string');
-- }
-- }
--
-- return name + ': ' + str;
--}
--
--
--function reduceToSingleString(output, base, braces) {
-- var numLinesEst = 0;
-- var length = output.reduce(function(prev, cur) {
-- numLinesEst++;
-- if (cur.indexOf('\n') >= 0) numLinesEst++;
-- return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
-- }, 0);
--
-- if (length > 60) {
-- return braces[0] +
-- (base === '' ? '' : base + '\n ') +
-- ' ' +
-- output.join(',\n ') +
-- ' ' +
-- braces[1];
-- }
--
-- return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
--}
--
--
- // NOTE: These type checking functions intentionally don't use `instanceof`
- // because it is fragile and can be easily faked with `Object.create()`.
- function isArray(ar) {
-@@ -522,166 +98,10 @@ function isPrimitive(arg) {
- exports.isPrimitive = isPrimitive;
-
- function isBuffer(arg) {
-- return arg instanceof Buffer;
-+ return Buffer.isBuffer(arg);
- }
- exports.isBuffer = isBuffer;
-
- function objectToString(o) {
- return Object.prototype.toString.call(o);
--}
--
--
--function pad(n) {
-- return n < 10 ? '0' + n.toString(10) : n.toString(10);
--}
--
--
--var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
-- 'Oct', 'Nov', 'Dec'];
--
--// 26 Feb 16:19:34
--function timestamp() {
-- var d = new Date();
-- var time = [pad(d.getHours()),
-- pad(d.getMinutes()),
-- pad(d.getSeconds())].join(':');
-- return [d.getDate(), months[d.getMonth()], time].join(' ');
--}
--
--
--// log is just a thin wrapper to console.log that prepends a timestamp
--exports.log = function() {
-- console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
--};
--
--
--/**
-- * Inherit the prototype methods from one constructor into another.
-- *
-- * The Function.prototype.inherits from lang.js rewritten as a standalone
-- * function (not on Function.prototype). NOTE: If this file is to be loaded
-- * during bootstrapping this function needs to be rewritten using some native
-- * functions as prototype setup using normal JavaScript does not work as
-- * expected during bootstrapping (see mirror.js in r114903).
-- *
-- * @param {function} ctor Constructor function which needs to inherit the
-- * prototype.
-- * @param {function} superCtor Constructor function to inherit prototype from.
-- */
--exports.inherits = function(ctor, superCtor) {
-- ctor.super_ = superCtor;
-- ctor.prototype = Object.create(superCtor.prototype, {
-- constructor: {
-- value: ctor,
-- enumerable: false,
-- writable: true,
-- configurable: true
-- }
-- });
--};
--
--exports._extend = function(origin, add) {
-- // Don't do anything if add isn't an object
-- if (!add || !isObject(add)) return origin;
--
-- var keys = Object.keys(add);
-- var i = keys.length;
-- while (i--) {
-- origin[keys[i]] = add[keys[i]];
-- }
-- return origin;
--};
--
--function hasOwnProperty(obj, prop) {
-- return Object.prototype.hasOwnProperty.call(obj, prop);
--}
--
--
--// Deprecated old stuff.
--
--exports.p = exports.deprecate(function() {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- console.error(exports.inspect(arguments[i]));
-- }
--}, 'util.p: Use console.error() instead');
--
--
--exports.exec = exports.deprecate(function() {
-- return require('child_process').exec.apply(this, arguments);
--}, 'util.exec is now called `child_process.exec`.');
--
--
--exports.print = exports.deprecate(function() {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- process.stdout.write(String(arguments[i]));
-- }
--}, 'util.print: Use console.log instead');
--
--
--exports.puts = exports.deprecate(function() {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- process.stdout.write(arguments[i] + '\n');
-- }
--}, 'util.puts: Use console.log instead');
--
--
--exports.debug = exports.deprecate(function(x) {
-- process.stderr.write('DEBUG: ' + x + '\n');
--}, 'util.debug: Use console.error instead');
--
--
--exports.error = exports.deprecate(function(x) {
-- for (var i = 0, len = arguments.length; i < len; ++i) {
-- process.stderr.write(arguments[i] + '\n');
-- }
--}, 'util.error: Use console.error instead');
--
--
--exports.pump = exports.deprecate(function(readStream, writeStream, callback) {
-- var callbackCalled = false;
--
-- function call(a, b, c) {
-- if (callback && !callbackCalled) {
-- callback(a, b, c);
-- callbackCalled = true;
-- }
-- }
--
-- readStream.addListener('data', function(chunk) {
-- if (writeStream.write(chunk) === false) readStream.pause();
-- });
--
-- writeStream.addListener('drain', function() {
-- readStream.resume();
-- });
--
-- readStream.addListener('end', function() {
-- writeStream.end();
-- });
--
-- readStream.addListener('close', function() {
-- call();
-- });
--
-- readStream.addListener('error', function(err) {
-- writeStream.end();
-- call(err);
-- });
--
-- writeStream.addListener('error', function(err) {
-- readStream.destroy();
-- call(err);
-- });
--}, 'util.pump(): Use readableStream.pipe() instead');
--
--
--var uv;
--exports._errnoException = function(err, syscall) {
-- if (isUndefined(uv)) uv = process.binding('uv');
-- var errname = uv.errname(err);
-- var e = new Error(syscall + ' ' + errname);
-- e.code = errname;
-- e.errno = errname;
-- e.syscall = syscall;
-- return e;
--};
-+}
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/lib/util.js
deleted file mode 100644
index 9074e8eb..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/lib/util.js
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-function isArray(ar) {
- return Array.isArray(ar);
-}
-exports.isArray = isArray;
-
-function isBoolean(arg) {
- return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
-
-function isNull(arg) {
- return arg === null;
-}
-exports.isNull = isNull;
-
-function isNullOrUndefined(arg) {
- return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
-
-function isString(arg) {
- return typeof arg === 'string';
-}
-exports.isString = isString;
-
-function isSymbol(arg) {
- return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-exports.isUndefined = isUndefined;
-
-function isRegExp(re) {
- return isObject(re) && objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
-
-function isDate(d) {
- return isObject(d) && objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
-
-function isError(e) {
- return isObject(e) &&
- (objectToString(e) === '[object Error]' || e instanceof Error);
-}
-exports.isError = isError;
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
-
-function isPrimitive(arg) {
- return arg === null ||
- typeof arg === 'boolean' ||
- typeof arg === 'number' ||
- typeof arg === 'string' ||
- typeof arg === 'symbol' || // ES6 symbol
- typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
-
-function isBuffer(arg) {
- return Buffer.isBuffer(arg);
-}
-exports.isBuffer = isBuffer;
-
-function objectToString(o) {
- return Object.prototype.toString.call(o);
-}
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/package.json b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/package.json
deleted file mode 100644
index 466dfdfe..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "core-util-is",
- "version": "1.0.1",
- "description": "The `util.is*` functions introduced in Node v0.12.",
- "main": "lib/util.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/core-util-is.git"
- },
- "keywords": [
- "util",
- "isBuffer",
- "isArray",
- "isNumber",
- "isString",
- "isRegExp",
- "isThis",
- "isThat",
- "polyfill"
- ],
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/isaacs/core-util-is/issues"
- },
- "readme": "# core-util-is\n\nThe `util.is*` functions introduced in Node v0.12.\n",
- "readmeFilename": "README.md",
- "homepage": "https://github.com/isaacs/core-util-is",
- "_id": "core-util-is@1.0.1",
- "dist": {
- "shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538",
- "tarball": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
- },
- "_from": "core-util-is@>=1.0.0 <1.1.0",
- "_npmVersion": "1.3.23",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
- "_shasum": "6b07085aef9a3ccac6ee53bf9d3df0c1521a5538",
- "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/util.js b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/util.js
deleted file mode 100644
index 007fa105..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/core-util-is/util.js
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-function isArray(ar) {
- return Array.isArray(ar);
-}
-exports.isArray = isArray;
-
-function isBoolean(arg) {
- return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
-
-function isNull(arg) {
- return arg === null;
-}
-exports.isNull = isNull;
-
-function isNullOrUndefined(arg) {
- return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
-
-function isNumber(arg) {
- return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
-
-function isString(arg) {
- return typeof arg === 'string';
-}
-exports.isString = isString;
-
-function isSymbol(arg) {
- return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
-
-function isUndefined(arg) {
- return arg === void 0;
-}
-exports.isUndefined = isUndefined;
-
-function isRegExp(re) {
- return isObject(re) && objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
-
-function isObject(arg) {
- return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
-
-function isDate(d) {
- return isObject(d) && objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
-
-function isError(e) {
- return isObject(e) && objectToString(e) === '[object Error]';
-}
-exports.isError = isError;
-
-function isFunction(arg) {
- return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
-
-function isPrimitive(arg) {
- return arg === null ||
- typeof arg === 'boolean' ||
- typeof arg === 'number' ||
- typeof arg === 'string' ||
- typeof arg === 'symbol' || // ES6 symbol
- typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
-
-function isBuffer(arg) {
- return arg instanceof Buffer;
-}
-exports.isBuffer = isBuffer;
-
-function objectToString(o) {
- return Object.prototype.toString.call(o);
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/LICENSE b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/LICENSE
deleted file mode 100644
index dea3013d..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/LICENSE
+++ /dev/null
@@ -1,16 +0,0 @@
-The ISC License
-
-Copyright (c) Isaac Z. Schlueter
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/README.md b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/README.md
deleted file mode 100644
index b1c56658..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-Browser-friendly inheritance fully compatible with standard node.js
-[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
-
-This package exports standard `inherits` from node.js `util` module in
-node environment, but also provides alternative browser-friendly
-implementation through [browser
-field](https://gist.github.com/shtylman/4339901). Alternative
-implementation is a literal copy of standard one located in standalone
-module to avoid requiring of `util`. It also has a shim for old
-browsers with no `Object.create` support.
-
-While keeping you sure you are using standard `inherits`
-implementation in node.js environment, it allows bundlers such as
-[browserify](https://github.com/substack/node-browserify) to not
-include full `util` package to your client code if all you need is
-just `inherits` function. It worth, because browser shim for `util`
-package is large and `inherits` is often the single function you need
-from it.
-
-It's recommended to use this package instead of
-`require('util').inherits` for any code that has chances to be used
-not only in node.js but in browser too.
-
-## usage
-
-```js
-var inherits = require('inherits');
-// then use exactly as the standard one
-```
-
-## note on version ~1.0
-
-Version ~1.0 had completely different motivation and is not compatible
-neither with 2.0 nor with standard node.js `inherits`.
-
-If you are using version ~1.0 and planning to switch to ~2.0, be
-careful:
-
-* new version uses `super_` instead of `super` for referencing
- superclass
-* new version overwrites current prototype while old one preserves any
- existing fields on it
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/inherits.js b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/inherits.js
deleted file mode 100644
index 29f5e24f..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/inherits.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('util').inherits
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/inherits_browser.js b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/inherits_browser.js
deleted file mode 100644
index c1e78a75..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/inherits_browser.js
+++ /dev/null
@@ -1,23 +0,0 @@
-if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- };
-} else {
- // old school shim for old browsers
- module.exports = function inherits(ctor, superCtor) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/package.json b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/package.json
deleted file mode 100644
index 93d50784..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "inherits",
- "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
- "version": "2.0.1",
- "keywords": [
- "inheritance",
- "class",
- "klass",
- "oop",
- "object-oriented",
- "inherits",
- "browser",
- "browserify"
- ],
- "main": "./inherits.js",
- "browser": "./inherits_browser.js",
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/inherits.git"
- },
- "license": "ISC",
- "scripts": {
- "test": "node test"
- },
- "bugs": {
- "url": "https://github.com/isaacs/inherits/issues"
- },
- "_id": "inherits@2.0.1",
- "dist": {
- "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
- "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
- },
- "_from": "inherits@>=2.0.1 <2.1.0",
- "_npmVersion": "1.3.8",
- "_npmUser": {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- }
- ],
- "directories": {},
- "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
- "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "readme": "ERROR: No README data found!",
- "homepage": "https://github.com/isaacs/inherits#readme"
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/test.js b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/test.js
deleted file mode 100644
index fc53012d..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/inherits/test.js
+++ /dev/null
@@ -1,25 +0,0 @@
-var inherits = require('./inherits.js')
-var assert = require('assert')
-
-function test(c) {
- assert(c.constructor === Child)
- assert(c.constructor.super_ === Parent)
- assert(Object.getPrototypeOf(c) === Child.prototype)
- assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
- assert(c instanceof Child)
- assert(c instanceof Parent)
-}
-
-function Child() {
- Parent.call(this)
- test(this)
-}
-
-function Parent() {}
-
-inherits(Child, Parent)
-
-var c = new Child
-test(c)
-
-console.log('ok')
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/README.md b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/README.md
deleted file mode 100644
index 052a62b8..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-
-# isarray
-
-`Array#isArray` for older browsers.
-
-## Usage
-
-```js
-var isArray = require('isarray');
-
-console.log(isArray([])); // => true
-console.log(isArray({})); // => false
-```
-
-## Installation
-
-With [npm](http://npmjs.org) do
-
-```bash
-$ npm install isarray
-```
-
-Then bundle for the browser with
-[browserify](https://github.com/substack/browserify).
-
-With [component](http://component.io) do
-
-```bash
-$ component install juliangruber/isarray
-```
-
-## License
-
-(MIT)
-
-Copyright (c) 2013 Julian Gruber <julian@juliangruber.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/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/build/build.js b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/build/build.js
deleted file mode 100644
index ec58596a..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/build/build.js
+++ /dev/null
@@ -1,209 +0,0 @@
-
-/**
- * Require the given path.
- *
- * @param {String} path
- * @return {Object} exports
- * @api public
- */
-
-function require(path, parent, orig) {
- var resolved = require.resolve(path);
-
- // lookup failed
- if (null == resolved) {
- orig = orig || path;
- parent = parent || 'root';
- var err = new Error('Failed to require "' + orig + '" from "' + parent + '"');
- err.path = orig;
- err.parent = parent;
- err.require = true;
- throw err;
- }
-
- var module = require.modules[resolved];
-
- // perform real require()
- // by invoking the module's
- // registered function
- if (!module.exports) {
- module.exports = {};
- module.client = module.component = true;
- module.call(this, module.exports, require.relative(resolved), module);
- }
-
- return module.exports;
-}
-
-/**
- * Registered modules.
- */
-
-require.modules = {};
-
-/**
- * Registered aliases.
- */
-
-require.aliases = {};
-
-/**
- * Resolve `path`.
- *
- * Lookup:
- *
- * - PATH/index.js
- * - PATH.js
- * - PATH
- *
- * @param {String} path
- * @return {String} path or null
- * @api private
- */
-
-require.resolve = function(path) {
- if (path.charAt(0) === '/') path = path.slice(1);
- var index = path + '/index.js';
-
- var paths = [
- path,
- path + '.js',
- path + '.json',
- path + '/index.js',
- path + '/index.json'
- ];
-
- for (var i = 0; i < paths.length; i++) {
- var path = paths[i];
- if (require.modules.hasOwnProperty(path)) return path;
- }
-
- if (require.aliases.hasOwnProperty(index)) {
- return require.aliases[index];
- }
-};
-
-/**
- * Normalize `path` relative to the current path.
- *
- * @param {String} curr
- * @param {String} path
- * @return {String}
- * @api private
- */
-
-require.normalize = function(curr, path) {
- var segs = [];
-
- if ('.' != path.charAt(0)) return path;
-
- curr = curr.split('/');
- path = path.split('/');
-
- for (var i = 0; i < path.length; ++i) {
- if ('..' == path[i]) {
- curr.pop();
- } else if ('.' != path[i] && '' != path[i]) {
- segs.push(path[i]);
- }
- }
-
- return curr.concat(segs).join('/');
-};
-
-/**
- * Register module at `path` with callback `definition`.
- *
- * @param {String} path
- * @param {Function} definition
- * @api private
- */
-
-require.register = function(path, definition) {
- require.modules[path] = definition;
-};
-
-/**
- * Alias a module definition.
- *
- * @param {String} from
- * @param {String} to
- * @api private
- */
-
-require.alias = function(from, to) {
- if (!require.modules.hasOwnProperty(from)) {
- throw new Error('Failed to alias "' + from + '", it does not exist');
- }
- require.aliases[to] = from;
-};
-
-/**
- * Return a require function relative to the `parent` path.
- *
- * @param {String} parent
- * @return {Function}
- * @api private
- */
-
-require.relative = function(parent) {
- var p = require.normalize(parent, '..');
-
- /**
- * lastIndexOf helper.
- */
-
- function lastIndexOf(arr, obj) {
- var i = arr.length;
- while (i--) {
- if (arr[i] === obj) return i;
- }
- return -1;
- }
-
- /**
- * The relative require() itself.
- */
-
- function localRequire(path) {
- var resolved = localRequire.resolve(path);
- return require(resolved, parent, path);
- }
-
- /**
- * Resolve relative to the parent.
- */
-
- localRequire.resolve = function(path) {
- var c = path.charAt(0);
- if ('/' == c) return path.slice(1);
- if ('.' == c) return require.normalize(p, path);
-
- // resolve deps by returning
- // the dep in the nearest "deps"
- // directory
- var segs = parent.split('/');
- var i = lastIndexOf(segs, 'deps') + 1;
- if (!i) i = 0;
- path = segs.slice(0, i + 1).join('/') + '/deps/' + path;
- return path;
- };
-
- /**
- * Check if module is defined at `path`.
- */
-
- localRequire.exists = function(path) {
- return require.modules.hasOwnProperty(localRequire.resolve(path));
- };
-
- return localRequire;
-};
-require.register("isarray/index.js", function(exports, require, module){
-module.exports = Array.isArray || function (arr) {
- return Object.prototype.toString.call(arr) == '[object Array]';
-};
-
-});
-require.alias("isarray/index.js", "isarray/index.js");
-
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/component.json b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/component.json
deleted file mode 100644
index 9e31b683..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/component.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name" : "isarray",
- "description" : "Array#isArray for older browsers",
- "version" : "0.0.1",
- "repository" : "juliangruber/isarray",
- "homepage": "https://github.com/juliangruber/isarray",
- "main" : "index.js",
- "scripts" : [
- "index.js"
- ],
- "dependencies" : {},
- "keywords": ["browser","isarray","array"],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT"
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/index.js b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/index.js
deleted file mode 100644
index 5f5ad45d..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = Array.isArray || function (arr) {
- return Object.prototype.toString.call(arr) == '[object Array]';
-};
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/package.json b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/package.json
deleted file mode 100644
index 19228ab6..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/isarray/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "isarray",
- "description": "Array#isArray for older browsers",
- "version": "0.0.1",
- "repository": {
- "type": "git",
- "url": "git://github.com/juliangruber/isarray.git"
- },
- "homepage": "https://github.com/juliangruber/isarray",
- "main": "index.js",
- "scripts": {
- "test": "tap test/*.js"
- },
- "dependencies": {},
- "devDependencies": {
- "tap": "*"
- },
- "keywords": [
- "browser",
- "isarray",
- "array"
- ],
- "author": {
- "name": "Julian Gruber",
- "email": "mail@juliangruber.com",
- "url": "http://juliangruber.com"
- },
- "license": "MIT",
- "_id": "isarray@0.0.1",
- "dist": {
- "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf",
- "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
- },
- "_from": "isarray@0.0.1",
- "_npmVersion": "1.2.18",
- "_npmUser": {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- },
- "maintainers": [
- {
- "name": "juliangruber",
- "email": "julian@juliangruber.com"
- }
- ],
- "directories": {},
- "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf",
- "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "bugs": {
- "url": "https://github.com/juliangruber/isarray/issues"
- },
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/.npmignore
deleted file mode 100644
index 206320cc..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/.npmignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build
-test
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/LICENSE
deleted file mode 100644
index 6de584a4..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright Joyent, Inc. and other Node contributors.
-
-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/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/README.md b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/README.md
deleted file mode 100644
index 4d2aa001..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-**string_decoder.js** (`require('string_decoder')`) from Node.js core
-
-Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details.
-
-Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.**
-
-The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version.
\ No newline at end of file
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/index.js b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/index.js
deleted file mode 100644
index b00e54fb..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/index.js
+++ /dev/null
@@ -1,221 +0,0 @@
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// 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.
-
-var Buffer = require('buffer').Buffer;
-
-var isBufferEncoding = Buffer.isEncoding
- || function(encoding) {
- switch (encoding && encoding.toLowerCase()) {
- case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
- default: return false;
- }
- }
-
-
-function assertEncoding(encoding) {
- if (encoding && !isBufferEncoding(encoding)) {
- throw new Error('Unknown encoding: ' + encoding);
- }
-}
-
-// StringDecoder provides an interface for efficiently splitting a series of
-// buffers into a series of JS strings without breaking apart multi-byte
-// characters. CESU-8 is handled as part of the UTF-8 encoding.
-//
-// @TODO Handling all encodings inside a single object makes it very difficult
-// to reason about this code, so it should be split up in the future.
-// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
-// points as used by CESU-8.
-var StringDecoder = exports.StringDecoder = function(encoding) {
- this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
- assertEncoding(encoding);
- switch (this.encoding) {
- case 'utf8':
- // CESU-8 represents each of Surrogate Pair by 3-bytes
- this.surrogateSize = 3;
- break;
- case 'ucs2':
- case 'utf16le':
- // UTF-16 represents each of Surrogate Pair by 2-bytes
- this.surrogateSize = 2;
- this.detectIncompleteChar = utf16DetectIncompleteChar;
- break;
- case 'base64':
- // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
- this.surrogateSize = 3;
- this.detectIncompleteChar = base64DetectIncompleteChar;
- break;
- default:
- this.write = passThroughWrite;
- return;
- }
-
- // Enough space to store all bytes of a single character. UTF-8 needs 4
- // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
- this.charBuffer = new Buffer(6);
- // Number of bytes received for the current incomplete multi-byte character.
- this.charReceived = 0;
- // Number of bytes expected for the current incomplete multi-byte character.
- this.charLength = 0;
-};
-
-
-// write decodes the given buffer and returns it as JS string that is
-// guaranteed to not contain any partial multi-byte characters. Any partial
-// character found at the end of the buffer is buffered up, and will be
-// returned when calling write again with the remaining bytes.
-//
-// Note: Converting a Buffer containing an orphan surrogate to a String
-// currently works, but converting a String to a Buffer (via `new Buffer`, or
-// Buffer#write) will replace incomplete surrogates with the unicode
-// replacement character. See https://codereview.chromium.org/121173009/ .
-StringDecoder.prototype.write = function(buffer) {
- var charStr = '';
- // if our last write ended with an incomplete multibyte character
- while (this.charLength) {
- // determine how many remaining bytes this buffer has to offer for this char
- var available = (buffer.length >= this.charLength - this.charReceived) ?
- this.charLength - this.charReceived :
- buffer.length;
-
- // add the new bytes to the char buffer
- buffer.copy(this.charBuffer, this.charReceived, 0, available);
- this.charReceived += available;
-
- if (this.charReceived < this.charLength) {
- // still not enough chars in this buffer? wait for more ...
- return '';
- }
-
- // remove bytes belonging to the current character from the buffer
- buffer = buffer.slice(available, buffer.length);
-
- // get the character that was split
- charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
-
- // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
- var charCode = charStr.charCodeAt(charStr.length - 1);
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- this.charLength += this.surrogateSize;
- charStr = '';
- continue;
- }
- this.charReceived = this.charLength = 0;
-
- // if there are no more bytes in this buffer, just emit our char
- if (buffer.length === 0) {
- return charStr;
- }
- break;
- }
-
- // determine and set charLength / charReceived
- this.detectIncompleteChar(buffer);
-
- var end = buffer.length;
- if (this.charLength) {
- // buffer the incomplete character bytes we got
- buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
- end -= this.charReceived;
- }
-
- charStr += buffer.toString(this.encoding, 0, end);
-
- var end = charStr.length - 1;
- var charCode = charStr.charCodeAt(end);
- // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
- if (charCode >= 0xD800 && charCode <= 0xDBFF) {
- var size = this.surrogateSize;
- this.charLength += size;
- this.charReceived += size;
- this.charBuffer.copy(this.charBuffer, size, 0, size);
- buffer.copy(this.charBuffer, 0, 0, size);
- return charStr.substring(0, end);
- }
-
- // or just emit the charStr
- return charStr;
-};
-
-// detectIncompleteChar determines if there is an incomplete UTF-8 character at
-// the end of the given buffer. If so, it sets this.charLength to the byte
-// length that character, and sets this.charReceived to the number of bytes
-// that are available for this character.
-StringDecoder.prototype.detectIncompleteChar = function(buffer) {
- // determine how many bytes we have to check at the end of this buffer
- var i = (buffer.length >= 3) ? 3 : buffer.length;
-
- // Figure out if one of the last i bytes of our buffer announces an
- // incomplete char.
- for (; i > 0; i--) {
- var c = buffer[buffer.length - i];
-
- // See http://en.wikipedia.org/wiki/UTF-8#Description
-
- // 110XXXXX
- if (i == 1 && c >> 5 == 0x06) {
- this.charLength = 2;
- break;
- }
-
- // 1110XXXX
- if (i <= 2 && c >> 4 == 0x0E) {
- this.charLength = 3;
- break;
- }
-
- // 11110XXX
- if (i <= 3 && c >> 3 == 0x1E) {
- this.charLength = 4;
- break;
- }
- }
- this.charReceived = i;
-};
-
-StringDecoder.prototype.end = function(buffer) {
- var res = '';
- if (buffer && buffer.length)
- res = this.write(buffer);
-
- if (this.charReceived) {
- var cr = this.charReceived;
- var buf = this.charBuffer;
- var enc = this.encoding;
- res += buf.slice(0, cr).toString(enc);
- }
-
- return res;
-};
-
-function passThroughWrite(buffer) {
- return buffer.toString(this.encoding);
-}
-
-function utf16DetectIncompleteChar(buffer) {
- this.charReceived = buffer.length % 2;
- this.charLength = this.charReceived ? 2 : 0;
-}
-
-function base64DetectIncompleteChar(buffer) {
- this.charReceived = buffer.length % 3;
- this.charLength = this.charReceived ? 3 : 0;
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/package.json b/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/package.json
deleted file mode 100644
index 0364d54b..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/node_modules/string_decoder/package.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "name": "string_decoder",
- "version": "0.10.31",
- "description": "The string_decoder module from Node core",
- "main": "index.js",
- "dependencies": {},
- "devDependencies": {
- "tap": "~0.4.8"
- },
- "scripts": {
- "test": "tap test/simple/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/rvagg/string_decoder.git"
- },
- "homepage": "https://github.com/rvagg/string_decoder",
- "keywords": [
- "string",
- "decoder",
- "browser",
- "browserify"
- ],
- "license": "MIT",
- "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0",
- "bugs": {
- "url": "https://github.com/rvagg/string_decoder/issues"
- },
- "_id": "string_decoder@0.10.31",
- "_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
- "_from": "string_decoder@>=0.10.0 <0.11.0",
- "_npmVersion": "1.4.23",
- "_npmUser": {
- "name": "rvagg",
- "email": "rod@vagg.org"
- },
- "maintainers": [
- {
- "name": "substack",
- "email": "mail@substack.net"
- },
- {
- "name": "rvagg",
- "email": "rod@vagg.org"
- }
- ],
- "dist": {
- "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94",
- "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/package.json b/scripts/node_modules/unzip/node_modules/readable-stream/package.json
deleted file mode 100644
index 9a28f435..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/package.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "name": "readable-stream",
- "version": "1.0.33",
- "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x",
- "main": "readable.js",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x",
- "inherits": "~2.0.1"
- },
- "devDependencies": {
- "tap": "~0.2.6"
- },
- "scripts": {
- "test": "tap test/simple/*.js"
- },
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/readable-stream.git"
- },
- "keywords": [
- "readable",
- "stream",
- "pipe"
- ],
- "browser": {
- "util": false
- },
- "author": {
- "name": "Isaac Z. Schlueter",
- "email": "i@izs.me",
- "url": "http://blog.izs.me/"
- },
- "license": "MIT",
- "gitHead": "0bf97a117c5646556548966409ebc57a6dda2638",
- "bugs": {
- "url": "https://github.com/isaacs/readable-stream/issues"
- },
- "homepage": "https://github.com/isaacs/readable-stream",
- "_id": "readable-stream@1.0.33",
- "_shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c",
- "_from": "readable-stream@>=1.0.31 <1.1.0",
- "_npmVersion": "1.4.28",
- "_npmUser": {
- "name": "rvagg",
- "email": "rod@vagg.org"
- },
- "maintainers": [
- {
- "name": "isaacs",
- "email": "i@izs.me"
- },
- {
- "name": "tootallnate",
- "email": "nathan@tootallnate.net"
- },
- {
- "name": "rvagg",
- "email": "rod@vagg.org"
- }
- ],
- "dist": {
- "shasum": "3a360dd66c1b1d7fd4705389860eda1d0f61126c",
- "tarball": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz"
- },
- "directories": {},
- "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
- "readme": "ERROR: No README data found!"
-}
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/passthrough.js b/scripts/node_modules/unzip/node_modules/readable-stream/passthrough.js
deleted file mode 100644
index 27e8d8a5..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/passthrough.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_passthrough.js")
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/readable.js b/scripts/node_modules/unzip/node_modules/readable-stream/readable.js
deleted file mode 100644
index 8b5337b5..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/readable.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify
-exports = module.exports = require('./lib/_stream_readable.js');
-exports.Stream = Stream;
-exports.Readable = exports;
-exports.Writable = require('./lib/_stream_writable.js');
-exports.Duplex = require('./lib/_stream_duplex.js');
-exports.Transform = require('./lib/_stream_transform.js');
-exports.PassThrough = require('./lib/_stream_passthrough.js');
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/transform.js b/scripts/node_modules/unzip/node_modules/readable-stream/transform.js
deleted file mode 100644
index 5d482f07..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/transform.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_transform.js")
diff --git a/scripts/node_modules/unzip/node_modules/readable-stream/writable.js b/scripts/node_modules/unzip/node_modules/readable-stream/writable.js
deleted file mode 100644
index e1e9efdf..00000000
--- a/scripts/node_modules/unzip/node_modules/readable-stream/writable.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require("./lib/_stream_writable.js")
diff --git a/scripts/node_modules/unzip/node_modules/setimmediate/LICENSE.txt b/scripts/node_modules/unzip/node_modules/setimmediate/LICENSE.txt
deleted file mode 100644
index 32b20de6..00000000
--- a/scripts/node_modules/unzip/node_modules/setimmediate/LICENSE.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, and Domenic Denicola
-
-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/scripts/node_modules/unzip/node_modules/setimmediate/README.md b/scripts/node_modules/unzip/node_modules/setimmediate/README.md
deleted file mode 100644
index 8d66667e..00000000
--- a/scripts/node_modules/unzip/node_modules/setimmediate/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-# setImmediate.js
-**A YuzuJS production**
-
-## Introduction
-
-**setImmediate.js** is a highly cross-browser implementation of the `setImmediate` and `clearImmediate` APIs, [proposed][spec] by Microsoft to the Web Performance Working Group. `setImmediate` allows scripts to yield to the browser, executing a given operation asynchronously, in a manner that is typically more efficient and consumes less power than the usual `setTimeout(..., 0)` pattern.
-
-setImmediate.js runs at “full speed” in the following browsers and environments, using various clever tricks:
-
- * Internet Explorer 6+
- * Firefox 3+
- * WebKit
- * Opera 9.5+
- * Node.js
- * Web workers in browsers that support `MessageChannel`, which I can't find solid info on.
-
-In all other browsers we fall back to using `setTimeout`, so it's always safe to use.
-
-## Macrotasks and Microtasks
-
-The `setImmediate` API, as specified, gives you access to the environment's [task queue][], sometimes known as its "macrotask" queue. This is crucially different from the [microtask queue][] used by web features such as `MutationObserver`, language features such as promises and `Object.observe`, and Node.js features such as `process.nextTick`. Each go-around of the macrotask queue yields back to the event loop once all queued tasks have been processed, even if the macrotask itself queued more macrotasks. Whereas, the microtask queue will continue executing any queued microtasks until it is exhausted.
-
-In practice, what this means is that if you call `setImmediate` inside of another task queued with `setImmediate`, you will yield back to the event loop and any I/O or rendering tasks that need to take place between those calls, instead of executing the queued task as soon as possible.
-
-If you are looking specifically to yield as part of a render loop, consider using [`requestAnimationFrame`][raf]; if you are looking solely for the control-flow ordering effects, use a microtask solution such as [asap][].
-
-## The Tricks
-
-### `process.nextTick`
-
-In Node.js versions below 0.9, `setImmediate` is not available, but [`process.nextTick`][nextTIck] is, so we use it to shim support for a global `setImmediate`. In Node.js 0.9 and above, `setImmediate` is available.
-
-Note that we check for *actual* Node.js environments, not emulated ones like those produced by browserify or similar. Such emulated environments often already include a `process.nextTick` shim that's not as browser-compatible as setImmediate.js.
-
-### `postMessage`
-
-In Firefox 3+, Internet Explorer 9+, all modern WebKit browsers, and Opera 9.5+, [`postMessage`][postMessage] is available and provides a good way to queue tasks on the event loop. It's quite the abuse, using a cross-document messaging protocol within the same document simply to get access to the event loop task queue, but until there are native implementations, this is the best option.
-
-Note that Internet Explorer 8 includes a synchronous version of `postMessage`. We detect this, or any other such synchronous implementation, and fall back to another trick.
-
-### `MessageChannel`
-
-Unfortunately, `postMessage` has completely different semantics inside web workers, and so cannot be used there. So we turn to [`MessageChannel`][MessageChannel], which has worse browser support, but does work inside a web worker.
-
-### `