[
  {
    "path": ".gitignore",
    "content": "node_modules"
  },
  {
    "path": ".jshintrc",
    "content": "{\n\t// Enforcing\n\t\"bitwise\": true, \t\t\t\t// true: Prohibit bitwise operators (&, |, ^, etc.)\n\t\"camelcase\": false, \t\t\t// true: Identifiers must be in camelCase\n\t\"curly\": false, \t\t\t\t\t// true: Require {} for every new block or scope\n\t\"eqeqeq\": true, \t\t\t\t// true: Require triple equals (===) for comparison\n\t\"freeze\": true, \t\t\t\t// true: prohibits overwriting prototypes of native objects such as Array, Date etc.\n\t\"forin\": true, \t\t\t\t\t// true: Require filtering for..in loops with obj.hasOwnProperty()\n\t\"immed\": false, \t\t\t\t// true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`\n\t\"indent\": 4, \t\t\t\t\t// {int} Number of spaces to use for indentation\n\t\"latedef\": false, \t\t\t\t// true: Require variables/functions to be defined before being used\n\t\"newcap\": false, \t\t\t\t// true: Require capitalization of all constructor functions e.g. `new F()`\n\t\"noarg\": true, \t\t\t\t\t// true: Prohibit use of `arguments.caller` and `arguments.callee`\n\t\"noempty\": true, \t\t\t\t// true: Prohibit use of empty blocks\n\t\"nonbsp\": true, \t\t\t\t// true: Prohibit \"non-breaking whitespace\" characters.\n\t\"nonew\": false, \t\t\t\t// true: Prohibit use of constructors for side-effects (without assignment)\n\t\"plusplus\": false, \t\t\t\t// true: Prohibit use of `++` & `--`\n\t\"quotmark\": false, \t\t\t\t// Quotation mark consistency:\n\t\t\t\t\t\t\t\t\t// false: do nothing (default)\n\t\t\t\t\t\t\t\t\t// true: ensure whatever is used is consistent\n\t\t\t\t\t\t\t\t\t// \"single\": require single quotes\n\t\t\t\t\t\t\t\t\t// \"double\": require double quotes\n\t\"undef\": true, \t\t\t\t\t// true: Require all non-global variables to be declared (prevents global leaks)\n\t\"unused\": true, \t\t\t\t// true: Require all defined variables be used\n\t\"strict\": true, \t\t\t\t// true: Requires all functions run in ES5 Strict Mode\n\t\"maxparams\": false, \t\t\t// {int} Max number of formal params allowed per function\n\t\"maxdepth\": false, \t\t\t\t// {int} Max depth of nested blocks (within functions)\n\t\"maxstatements\": false, \t\t// {int} Max number statements per function\n\t\"maxcomplexity\": false, \t\t// {int} Max cyclomatic complexity per function\n\t\"maxlen\": false, \t\t\t\t// {int} Max number of characters per line\n\n\t// Relaxing\n\t\"asi\": false, \t\t\t\t\t// true: Tolerate Automatic Semicolon Insertion (no semicolons)\n\t\"boss\": false, \t\t\t\t\t// true: Tolerate assignments where comparisons would be expected\n\t\"debug\": false, \t\t\t\t// true: Allow debugger statements e.g. browser breakpoints.\n\t\"eqnull\": false, \t\t\t\t// true: Tolerate use of `== null`\n\t\"es5\": false, \t\t\t\t\t// true: Allow ES5 syntax (ex: getters and setters)\n\t\"esnext\": false, \t\t\t\t// true: Allow ES.next (ES6) syntax (ex: `const`)\n\t\"moz\": false, \t\t\t\t\t// true: Allow Mozilla specific syntax (extends and overrides esnext features)\n\t\t\t\t\t\t\t\t\t// (ex: `for each`, multiple try/catch, function expression…)\n\t\"evil\": false, \t\t\t\t\t// true: Tolerate use of `eval` and `new Function()`\n\t\"expr\": false, \t\t\t\t\t// true: Tolerate `ExpressionStatement` as Programs\n\t\"funcscope\": false, \t\t\t// true: Tolerate defining variables inside control statements\n\t\"globalstrict\": true, \t\t\t// true: Allow global \"use strict\" (also enables 'strict')\n\t\"iterator\": false, \t\t\t\t// true: Tolerate using the `__iterator__` property\n\t\"lastsemic\": false, \t\t\t// true: Tolerate omitting a semicolon for the last statement of a 1-line block\n\t\"laxbreak\": false, \t\t\t\t// true: Tolerate possibly unsafe line breakings\n\t\"laxcomma\": false, \t\t\t\t// true: Tolerate comma-first style coding\n\t\"loopfunc\": false, \t\t\t\t// true: Tolerate functions being defined in loops\n\t\"multistr\": false, \t\t\t\t// true: Tolerate multi-line strings\n\t\"noyield\": false, \t\t\t\t// true: Tolerate generator functions with no yield statement in them.\n\t\"notypeof\": false, \t\t\t\t// true: Tolerate invalid typeof operator values\n\t\"proto\": false, \t\t\t\t// true: Tolerate using the `__proto__` property\n\t\"scripturl\": false, \t\t\t// true: Tolerate script-targeted URLs\n\t\"shadow\": false, \t\t\t\t// true: Allows re-define variables later in code e.g. `var x=1; x=2;`\n\t\"sub\": false, \t\t\t\t\t// true: Tolerate using `[]` notation when it can still be expressed in dot notation\n\t\"supernew\": false, \t\t\t\t// true: Tolerate `new function () { ... };` and `new Object;`\n\t\"validthis\": false, \t\t\t// true: Tolerate using this in a non-constructor function\n\n\t// Environments\n\t\"browser\": false, \t\t\t\t// Web Browser (window, document, etc)\n\t\"browserify\": false, \t\t\t// Browserify (node.js code in the browser)\n\t\"couch\": false, \t\t\t\t// CouchDB\n\t\"devel\": true, \t\t\t\t\t// Development/debugging (alert, confirm, etc)\n\t\"dojo\": false, \t\t\t\t\t// Dojo Toolkit\n\t\"jasmine\": false, \t\t\t\t// Jasmine\n\t\"jquery\": false, \t\t\t\t// jQuery\n\t\"mocha\": true, \t\t\t\t\t// Mocha\n\t\"mootools\": false, \t\t\t\t// MooTools\n\t\"node\": true, \t\t\t\t\t// Node.js\n\t\"nonstandard\": false, \t\t\t// Widely adopted globals (escape, unescape, etc)\n\t\"prototypejs\": false, \t\t\t// Prototype and Scriptaculous\n\t\"qunit\": false, \t\t\t\t// QUnit\n\t\"rhino\": false, \t\t\t\t// Rhino\n\t\"shelljs\": false, \t\t\t\t// ShellJS\n\t\"worker\": false, \t\t\t\t// Web Workers\n\t\"wsh\": false, \t\t\t\t\t// Windows Scripting Host\n\t\"yui\": false, \t\t\t\t\t// Yahoo User Interface\n\n\t// Custom Globals\n\t\"globals\": {\t\t\t\t\t // additional predefined global variables\n\t}\n}"
  },
  {
    "path": ".travis.yml",
    "content": "language: node_js\r\nnode_js:\r\n  - \"0.10\"\r\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "Copyright (c) 2014 Glen R. Goodwin (@areinet)\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n"
  },
  {
    "path": "README.md",
    "content": "[![Build Status](https://travis-ci.org/arei/npmbox.svg)](https://travis-ci.org/arei/npmbox)\n\n[![NPM](https://nodei.co/npm/npmbox.png)](https://nodei.co/npm/npmbox/)\n\n-------\n**DEPRECATED** I am officially deprecating this entire package. It has been a extremely long time since this got any attention at all and I no longer have any idea if it works on npm > v5 or not, nor do I have plans to try and figure it out if not.\n\n-------\n\n## What is npmbox?\n\nnpm addon utility for creating and installing from an archive file of an npm install, including dependencies.  This lets you create a \"box\" of an installable package and move it to an offline system that will only install from that box.\n\nnpmbox is intended to be a proof of concept with regards to this issue filled against this npm feature request: [[Feature] Bundle/Include Dependencies](https://github.com/isaacs/npm/issues/4210).  Ideally, we would like to see the npmbox functionality built into npm so a third party tool like npmbox is not required or necessary. Please go add your support over at that ticket to help get us some visibility... or, even better, go write the code!\n\n## npmbox news\n\nBREAKING CHANGE May 26, 2017: npm 5 will break npmbox\n  * **WARNING! npm v5 is not compatable with npmbox**. \n  * Unfortuantely, this means npmbox will not work with npm v5 or later.\n  * npmbox will get fixed, eventually, but until one of us gets time to fix it npmbox/npm5 will remiain broken.\n  * The npm v5 changes are actually really good news for npmbox though, so hopefully a new version in the not so distant future with some really nice changes.\n  * Read the npm v5 release notes here: ([npm5 release notes](http://blog.npmjs.org/post/161081169345/v500))\n\nUPDATE April 19, 2017: v4.2.1 of npmbox is out.\n  * Escapes package names with forward slash characters. #86\n  * Minor linting changes.\n\nUPDATE December 22, 2016: v4.2.0 of npmbox is out.\n  * Support for accepting a `package.json` file when boxing. This will cause its\n    dependencies to get boxed.\n  * Start using a temporary directory instead of the CWD for temporary files and\n    directories. **Note:** This fixes the problem noted in v4.1.0 whereby\n    `npmbox` of the current directory would fail.\n  * New unbox option `--install=<pkg>` to install any package while using the\n    box contents for dependencies. This can be used to install a local package\n    (from the filesystem) while using a box for dependencies, e.g.\n    `cd path/to/my/package; npmunbox --install=. path/to/box.npmbox`\n  * New unbox option `--scripts` to enable running of scripts. (By default,\n    npmbox acts like `--ignore-scripts` was specified.)\n  * New options `--proxy` and `--https-proxy` which pass through to the\n    underlying `npm` invocation. Works on both `npmbox` and `npmunbox`. In the\n    latter case, this can help prevent unboxing from inadvertently hitting the\n    network (by specifying nonexistent proxies).\n\nAlso worthy of note is that npm, inc. has begun thinking and working in how to do this within npm itself (and hopefully obsoleting this project entirely).  There's a good blog post over at npm, inc called \"dealing with problematic dependencies in a restricted network environment\" that details some of the problems: [Check it out here!](http://blog.npmjs.org/post/145724408060/dealing-with-problematic-dependencies-in-a)\n\n## Usage of `npmbox`\n\nGiven some package, like `express` this command will create a archive file of that package and all of its dependencies, such that a npmunbox of that archive file will install express and all of its dependencies.\n\n    npmbox - Create an archive for offline installation of one or more packages.\n\n    Usage:\n\n          npmbox --help\n          npmbox [options] <package> <package>...\n\n    Options:\n\n        -v, --verbose         Shows npm output which is normally hidden.\n        -s, --silent          Shows no output whatsoever.\n        -t, --target          Specify the .npmbox file to write.\n        --proxy=<url>         npm --proxy switch.\n        --https-proxy=<url>   npm --https-proxy switch.\n\nYou must specify at least one package. Packages can be anything accepted as\nan argument to `npm install`, and can also be a local path to a `.json` file,\nassumed to be in `package.json` format; in this case, the dependencies listed\nin the file are included in the box (except for `devDependencies`).\n\nAll specified packages get bundled into a single archive.\n\nnpmbox files end with the .npmbox extension.\n\nNOTE: When creating an archive file for a package destined to be installed on an offline machine clear your npm cache before using npmbox.\n\n    npm cache clean\n\n## Usage of `npmunbox`\n\nGiven some .npmbox file (must end with the .npmbox extension), installs the contents and all of it dependencies.\n\n    npmunbox - Extracts a .npmbox file and installs the contained package.\n\n    Usage:\n\n        npmunbox --help\n        npmunbox [options] <nmpbox-file> <npmbox-file>...\n\n    Options:\n\n        -v, --verbose         Shows npm output which is normally hidden.\n        -s, --silent          Shows additional output which is normally hidden.\n        -p, --path            Specify the path to a folder from which the .npmbox file(s) will be read.\n        -i, --install=<pkg>   Installs the indicated package instead of using the .npmbox manifest.\n        --scripts             Enable running of scripts during installation.\n        -g, --global          Installs package globally as if --global was passed to npm.\n        -C, --prefix          npm --prefix switch.\n        -S, --save            npm --save switch.\n        -D, --save-dev        npm --save-dev switch.\n        -O, --save-optional   npm --save-optional switch.\n        -B, --save-bundle     npm --save-bundle switch.\n        -E, --save-exact      npm --save-exact switch.\n        --proxy=<url>         npm --proxy switch.\n        --https-proxy=<url>   npm --https-proxy switch.\n\nYou must specify at least one file.\n\nYou may specify more than one file, and each will be installed.\n\nIf an .npmbox file contains multiple packages, unboxing the .npmbox will install ALL of those packages.\n\n## Using `npmunbox` without npmbox being installed\n\nA particular use case with npmunbox comes up fairly often: **how do I use npmbox without first installing npmbox**.  Specifically, many people have asked for a way to run npmunbox as a means to installing npmbox.  You can see that this is a bit of a chicken and egg problem.  How do we install npmbox from an npmbox file?\n\n### Installing npmbox from an .npmbox file\n\n**On a system that does have access to the Internet, you need to do the following:**\n\n1). If npmbox is not globally installed on your online system, do so now:\n\n    npm install -g npmbox\n\n2). In a folder in which you can read/write:\n\n    npmbox npmbox\n\n3). Copy the resulting `npmbox.npmbox` file to you offline system in whatever manner allowed to you,  This could involve coping to movable media and transferring that way, however you would do it.\n\n**On the system you want to install npmbox to, do the following:**\n\n1). Create a new directory:\n\n    mkdir somedir\n\n2). Change to it:\n\n    cd somedir\n\n3). Copy the npmbox.npmbox folder into this directory:\n\n    cp /media/usb/npmbox.npmbox .\n\nor\n\n    copy E:\\npmbox.npmbox .\n\n4). Untar the .npmbox file.  This will create the .npmbox.cache folder.\n\n    tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox\n\nNOTE: If for some reason `--no-same-owner` or `--no-same-permissions` do not work, remove them and adjust the permissions/ownership yourself.  You will need to ensure that npm can see all the files in the .npmbox.cache file structure.\n\nNOTE: On some OSes it may also be necessary to drop the `-z` switch from the tar command as well.\n\nNOTE: On windows you might not have the tar command.  You can use another zip utility (like 7-zip or winzip) to extract the file if you like.  Just please note that the file is a .tar.gz file and thus you may need to extract it twice, once for the zip, the second for the tar.  **If you do this, please make sure to remove the tar file from your local directory before running the npm command below.**\n\n5). Install npmbox globally using the following command.\n\nFor unix or macs...\n\n    npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox\n\nFor windows...\n\n    npm install --global --cache .\\.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox\n\nNOTE: If you have a file called `npmbox` (no extension) in the local directory, this will not work correctly.  Please remove said `npmbox` file.\n\n6). Once npmbox is installed globally you can use it to install other .npmbox files:\n\n    npmunbox blah\n\nNOTE: If you are running into issues where npmunbox is still trying to reach out to the internet it may help to try clearing your npm cache on the machine\n\n    npm cache clean\n\n## Common Problems\n\nQuick FAQ to hopefully answer some of the questions out there that seem to keep creeping up...\n\n1). Help Please!\n\nSorry, I am only one person and I already have a full time job.  Using open source solutions come at the risk of almost no support. If after reading this entire faq you still think you have a bug, file a bug.  Or better yet, grab the source code, fix it, and submit a pull request.  I love pull requests.\n\n2). npmunbox keep trying to connect to registry.npmjs.org on my offline system.\n\n99% of the time this occurs is because the npmbox didn't get some resource that npmunbox is looking for and cannot find in the npmbox file. This happens.  There are TONS of edge cases that npmbox misses.  Two worth nothing:\n  * Some packages reference git repos instead of npm packages.  This has been fixed as of version 3.0 of npmbox.  Very exciting.\n  * Packages that execute external scripts that call out to git repos or npm are entirely outside of the control of npmbox.  Not much we can do about that.\n\n3). When I run the command described above to install npmbox on my offline machine I get an error.\n\nThis if frequently caused by incorrectly referencing where the `.npmbox-cache` file is.  Please check the section of the command `--cache .\\.npmbox-cache` and make sure it is pointing at the correct location.\n\n4). When is npm going to add this functionality?\n\nnpm, inc. is actively working on this problem as we speak.  Read this blog post for some of the challenges they are facing:  [Check it out here!](http://blog.npmjs.org/post/145724408060/dealing-with-problematic-dependencies-in-a)\n\n5). I used to be able to create multiple .npmbox files with a single command. Why did that change?\n\nIn order to support multiple npm packages in a single .npmbox file we had to change how this works.  It's still possible to create multiple .npmbox per package, but you will just need to run the command multiple times.\n\n6). But I wanted it to work the old way with one .npmbox file per package.\n\nSorry.  The multiple packages per single file change is a big deal.  It lets you create a single .npmbox with multiple packages but without redundant libraries being include multiple times.  So nice. Multiple packages in a single .npmbox file also lets you unbox a single .npmbox file and get multiple installs.\n"
  },
  {
    "path": "bin/npmbox",
    "content": "#!/usr/bin/env node\n\n// npmbox by Glen R. Goodwin (@areinet)\n// https://github.com/arei/npmbox.git\n\nvar path = require('path');\nvar fs = require('fs');\nvar lib = path.join(path.dirname(fs.realpathSync(__filename)), '../');\n\nrequire(lib + '/npmbox');\n"
  },
  {
    "path": "bin/npmunbox",
    "content": "#!/usr/bin/env node\n\n// npmbox by Glen R. Goodwin (@areinet)\n// https://github.com/arei/npmbox.git\n\nvar path = require('path');\nvar fs = require('fs');\nvar lib = path.join(path.dirname(fs.realpathSync(__filename)), '../');\n\nrequire(lib + '/npmunbox');"
  },
  {
    "path": "npm-shrinkwrap.json",
    "content": "{\n  \"name\": \"npmbox\",\n  \"version\": \"4.2.0\",\n  \"dependencies\": {\n    \"assertion-error\": {\n      \"version\": \"1.0.2\",\n      \"from\": \"assertion-error@>=1.0.1 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz\"\n    },\n    \"balanced-match\": {\n      \"version\": \"0.4.2\",\n      \"from\": \"balanced-match@>=0.4.1 <0.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz\"\n    },\n    \"block-stream\": {\n      \"version\": \"0.0.9\",\n      \"from\": \"block-stream@*\",\n      \"resolved\": \"https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz\"\n    },\n    \"bluebird\": {\n      \"version\": \"2.10.2\",\n      \"from\": \"bluebird@>=2.9.34 <3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz\"\n    },\n    \"brace-expansion\": {\n      \"version\": \"1.1.6\",\n      \"from\": \"brace-expansion@>=1.0.0 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz\"\n    },\n    \"builtin-modules\": {\n      \"version\": \"1.1.1\",\n      \"from\": \"builtin-modules@>=1.0.0 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz\"\n    },\n    \"chai\": {\n      \"version\": \"3.5.0\",\n      \"from\": \"chai@>=3.2.0 <4.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/chai/-/chai-3.5.0.tgz\"\n    },\n    \"commander\": {\n      \"version\": \"2.9.0\",\n      \"from\": \"commander@>=2.8.1 <3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/commander/-/commander-2.9.0.tgz\"\n    },\n    \"concat-map\": {\n      \"version\": \"0.0.1\",\n      \"from\": \"concat-map@0.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz\"\n    },\n    \"debug\": {\n      \"version\": \"2.2.0\",\n      \"from\": \"debug@2.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-2.2.0.tgz\"\n    },\n    \"deep-eql\": {\n      \"version\": \"0.1.3\",\n      \"from\": \"deep-eql@>=0.1.3 <0.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz\",\n      \"dependencies\": {\n        \"type-detect\": {\n          \"version\": \"0.1.1\",\n          \"from\": \"type-detect@0.1.1\",\n          \"resolved\": \"https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz\"\n        }\n      }\n    },\n    \"diff\": {\n      \"version\": \"1.4.0\",\n      \"from\": \"diff@1.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/diff/-/diff-1.4.0.tgz\"\n    },\n    \"escape-string-regexp\": {\n      \"version\": \"1.0.2\",\n      \"from\": \"escape-string-regexp@1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz\"\n    },\n    \"fs-extra\": {\n      \"version\": \"1.0.0\",\n      \"from\": \"fs-extra@1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz\"\n    },\n    \"fstream\": {\n      \"version\": \"1.0.10\",\n      \"from\": \"fstream@>=1.0.7 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz\"\n    },\n    \"glob\": {\n      \"version\": \"3.2.11\",\n      \"from\": \"glob@3.2.11\",\n      \"resolved\": \"https://registry.npmjs.org/glob/-/glob-3.2.11.tgz\"\n    },\n    \"graceful-fs\": {\n      \"version\": \"4.1.5\",\n      \"from\": \"graceful-fs@>=4.1.2 <5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz\"\n    },\n    \"graceful-readlink\": {\n      \"version\": \"1.0.1\",\n      \"from\": \"graceful-readlink@>=1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz\"\n    },\n    \"growl\": {\n      \"version\": \"1.9.2\",\n      \"from\": \"growl@1.9.2\",\n      \"resolved\": \"https://registry.npmjs.org/growl/-/growl-1.9.2.tgz\"\n    },\n    \"hosted-git-info\": {\n      \"version\": \"2.1.5\",\n      \"from\": \"hosted-git-info@>=2.1.4 <3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz\"\n    },\n    \"inflight\": {\n      \"version\": \"1.0.6\",\n      \"from\": \"inflight@>=1.0.4 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz\"\n    },\n    \"inherits\": {\n      \"version\": \"2.0.1\",\n      \"from\": \"inherits@>=2.0.0 <2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz\"\n    },\n    \"is\": {\n      \"version\": \"3.1.0\",\n      \"from\": \"is@3.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/is/-/is-3.1.0.tgz\"\n    },\n    \"is-builtin-module\": {\n      \"version\": \"1.0.0\",\n      \"from\": \"is-builtin-module@>=1.0.0 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz\"\n    },\n    \"jade\": {\n      \"version\": \"0.26.3\",\n      \"from\": \"jade@0.26.3\",\n      \"resolved\": \"https://registry.npmjs.org/jade/-/jade-0.26.3.tgz\",\n      \"dependencies\": {\n        \"commander\": {\n          \"version\": \"0.6.1\",\n          \"from\": \"commander@0.6.1\",\n          \"resolved\": \"https://registry.npmjs.org/commander/-/commander-0.6.1.tgz\"\n        },\n        \"mkdirp\": {\n          \"version\": \"0.3.0\",\n          \"from\": \"mkdirp@0.3.0\",\n          \"resolved\": \"https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz\"\n        }\n      }\n    },\n    \"jju\": {\n      \"version\": \"1.3.0\",\n      \"from\": \"jju@>=1.1.0 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/jju/-/jju-1.3.0.tgz\"\n    },\n    \"json-parse-helpfulerror\": {\n      \"version\": \"1.0.3\",\n      \"from\": \"json-parse-helpfulerror@>=1.0.2 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz\"\n    },\n    \"jsonfile\": {\n      \"version\": \"2.4.0\",\n      \"from\": \"jsonfile@>=2.1.0 <3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz\",\n      \"dependencies\": {\n        \"graceful-fs\": {\n          \"version\": \"4.1.11\",\n          \"from\": \"graceful-fs@>=4.1.6 <5.0.0\",\n          \"resolved\": \"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz\",\n          \"optional\": true\n        }\n      }\n    },\n    \"klaw\": {\n      \"version\": \"1.3.1\",\n      \"from\": \"klaw@>=1.0.0 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz\",\n      \"dependencies\": {\n        \"graceful-fs\": {\n          \"version\": \"4.1.11\",\n          \"from\": \"graceful-fs@^4.1.9\",\n          \"resolved\": \"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz\",\n          \"optional\": true\n        }\n      }\n    },\n    \"lru-cache\": {\n      \"version\": \"2.7.3\",\n      \"from\": \"lru-cache@>=2.0.0 <3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz\"\n    },\n    \"minimatch\": {\n      \"version\": \"0.3.0\",\n      \"from\": \"minimatch@>=0.3.0 <0.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz\"\n    },\n    \"minimist\": {\n      \"version\": \"0.0.8\",\n      \"from\": \"minimist@0.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz\"\n    },\n    \"mkdirp\": {\n      \"version\": \"0.5.1\",\n      \"from\": \"mkdirp@>=0.5.0 >=0.0.0 <1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz\"\n    },\n    \"mocha\": {\n      \"version\": \"2.5.3\",\n      \"from\": \"mocha@>=2.2.5 <3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz\",\n      \"dependencies\": {\n        \"commander\": {\n          \"version\": \"2.3.0\",\n          \"from\": \"commander@2.3.0\",\n          \"resolved\": \"https://registry.npmjs.org/commander/-/commander-2.3.0.tgz\"\n        }\n      }\n    },\n    \"mout\": {\n      \"version\": \"0.11.1\",\n      \"from\": \"mout@>=0.11.0 <0.12.0\",\n      \"resolved\": \"https://registry.npmjs.org/mout/-/mout-0.11.1.tgz\"\n    },\n    \"ms\": {\n      \"version\": \"0.7.1\",\n      \"from\": \"ms@0.7.1\",\n      \"resolved\": \"https://registry.npmjs.org/ms/-/ms-0.7.1.tgz\"\n    },\n    \"normalize-package-data\": {\n      \"version\": \"2.3.5\",\n      \"from\": \"normalize-package-data@>=2.0.0 <3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz\"\n    },\n    \"npm\": {\n      \"version\": \"3.10.3\",\n      \"from\": \"npm@3.10.3\",\n      \"resolved\": \"https://registry.npmjs.org/npm/-/npm-3.10.3.tgz\",\n      \"dependencies\": {\n        \"abbrev\": {\n          \"version\": \"1.0.9\",\n          \"from\": \"abbrev@1.0.9\",\n          \"resolved\": \"https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz\"\n        },\n        \"ansi-regex\": {\n          \"version\": \"2.0.0\",\n          \"from\": \"ansi-regex@2.0.0\",\n          \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz\"\n        },\n        \"ansicolors\": {\n          \"version\": \"0.3.2\",\n          \"from\": \"ansicolors@>=0.3.2 <0.4.0\",\n          \"resolved\": \"https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz\"\n        },\n        \"ansistyles\": {\n          \"version\": \"0.1.3\",\n          \"from\": \"ansistyles@>=0.1.3 <0.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/ansistyles/-/ansistyles-0.1.3.tgz\"\n        },\n        \"aproba\": {\n          \"version\": \"1.0.4\",\n          \"from\": \"aproba@>=1.0.3 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz\"\n        },\n        \"archy\": {\n          \"version\": \"1.0.0\",\n          \"from\": \"archy@>=1.0.0 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/archy/-/archy-1.0.0.tgz\"\n        },\n        \"asap\": {\n          \"version\": \"2.0.4\",\n          \"from\": \"asap@latest\",\n          \"resolved\": \"https://unpm.uberinternal.com/asap/-/asap-2.0.4.tgz\"\n        },\n        \"chownr\": {\n          \"version\": \"1.0.1\",\n          \"from\": \"chownr@>=1.0.1 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz\"\n        },\n        \"cmd-shim\": {\n          \"version\": \"2.0.2\",\n          \"from\": \"cmd-shim@2.0.2\",\n          \"resolved\": \"https://registry.npmjs.org/cmd-shim/-/cmd-shim-2.0.2.tgz\"\n        },\n        \"columnify\": {\n          \"version\": \"1.5.4\",\n          \"from\": \"columnify@1.5.4\",\n          \"resolved\": \"https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz\",\n          \"dependencies\": {\n            \"wcwidth\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"wcwidth@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.0.tgz\",\n              \"dependencies\": {\n                \"defaults\": {\n                  \"version\": \"1.0.3\",\n                  \"from\": \"defaults@>=1.0.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz\",\n                  \"dependencies\": {\n                    \"clone\": {\n                      \"version\": \"1.0.2\",\n                      \"from\": \"clone@>=1.0.2 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/clone/-/clone-1.0.2.tgz\"\n                    }\n                  }\n                }\n              }\n            }\n          }\n        },\n        \"config-chain\": {\n          \"version\": \"1.1.10\",\n          \"from\": \"config-chain@1.1.10\",\n          \"resolved\": \"https://registry.npmjs.org/config-chain/-/config-chain-1.1.10.tgz\",\n          \"dependencies\": {\n            \"proto-list\": {\n              \"version\": \"1.2.4\",\n              \"from\": \"proto-list@>=1.2.1 <1.3.0\",\n              \"resolved\": \"https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz\"\n            }\n          }\n        },\n        \"debuglog\": {\n          \"version\": \"1.0.1\",\n          \"from\": \"debuglog@1.0.1\",\n          \"resolved\": \"https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz\"\n        },\n        \"dezalgo\": {\n          \"version\": \"1.0.3\",\n          \"from\": \"dezalgo@>=1.0.3 <1.1.0\"\n        },\n        \"editor\": {\n          \"version\": \"1.0.0\",\n          \"from\": \"editor@>=1.0.0 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/editor/-/editor-1.0.0.tgz\"\n        },\n        \"fs-vacuum\": {\n          \"version\": \"1.2.9\",\n          \"from\": \"fs-vacuum@latest\",\n          \"resolved\": \"https://registry.npmjs.org/fs-vacuum/-/fs-vacuum-1.2.9.tgz\"\n        },\n        \"fs-write-stream-atomic\": {\n          \"version\": \"1.0.8\",\n          \"from\": \"fs-write-stream-atomic@1.0.8\"\n        },\n        \"fstream\": {\n          \"version\": \"1.0.10\",\n          \"from\": \"fstream@>=1.0.10 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz\"\n        },\n        \"fstream-npm\": {\n          \"version\": \"1.1.0\",\n          \"from\": \"fstream-npm@latest\",\n          \"resolved\": \"https://registry.npmjs.org/fstream-npm/-/fstream-npm-1.1.0.tgz\",\n          \"dependencies\": {\n            \"fstream-ignore\": {\n              \"version\": \"1.0.5\",\n              \"from\": \"fstream-ignore@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz\",\n              \"dependencies\": {\n                \"minimatch\": {\n                  \"version\": \"3.0.0\",\n                  \"from\": \"minimatch@>=3.0.0 <4.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz\",\n                  \"dependencies\": {\n                    \"brace-expansion\": {\n                      \"version\": \"1.1.4\",\n                      \"from\": \"brace-expansion@>=1.0.0 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz\",\n                      \"dependencies\": {\n                        \"balanced-match\": {\n                          \"version\": \"0.4.1\",\n                          \"from\": \"balanced-match@>=0.4.1 <0.5.0\",\n                          \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz\"\n                        },\n                        \"concat-map\": {\n                          \"version\": \"0.0.1\",\n                          \"from\": \"concat-map@0.0.1\",\n                          \"resolved\": \"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz\"\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        },\n        \"glob\": {\n          \"version\": \"7.0.4\",\n          \"from\": \"glob@>=7.0.3 <7.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/glob/-/glob-7.0.4.tgz\",\n          \"dependencies\": {\n            \"fs.realpath\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"fs.realpath@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz\"\n            },\n            \"minimatch\": {\n              \"version\": \"3.0.0\",\n              \"from\": \"minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz\",\n              \"dependencies\": {\n                \"brace-expansion\": {\n                  \"version\": \"1.1.5\",\n                  \"from\": \"brace-expansion@>=1.0.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz\",\n                  \"dependencies\": {\n                    \"balanced-match\": {\n                      \"version\": \"0.4.1\",\n                      \"from\": \"balanced-match@>=0.4.1 <0.5.0\",\n                      \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz\"\n                    },\n                    \"concat-map\": {\n                      \"version\": \"0.0.1\",\n                      \"from\": \"concat-map@0.0.1\",\n                      \"resolved\": \"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz\"\n                    }\n                  }\n                }\n              }\n            },\n            \"path-is-absolute\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"path-is-absolute@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz\"\n            }\n          }\n        },\n        \"graceful-fs\": {\n          \"version\": \"4.1.4\",\n          \"from\": \"graceful-fs@>=4.1.3 <4.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.4.tgz\"\n        },\n        \"has-unicode\": {\n          \"version\": \"2.0.1\",\n          \"from\": \"has-unicode@>=2.0.0 <2.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz\"\n        },\n        \"hosted-git-info\": {\n          \"version\": \"2.1.5\",\n          \"from\": \"hosted-git-info@latest\",\n          \"resolved\": \"https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz\"\n        },\n        \"iferr\": {\n          \"version\": \"0.1.5\",\n          \"from\": \"iferr@>=0.1.5 <0.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz\"\n        },\n        \"imurmurhash\": {\n          \"version\": \"0.1.4\",\n          \"from\": \"imurmurhash@>=0.1.4 <0.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz\"\n        },\n        \"inflight\": {\n          \"version\": \"1.0.5\",\n          \"from\": \"inflight@latest\",\n          \"resolved\": \"https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz\"\n        },\n        \"inherits\": {\n          \"version\": \"2.0.1\",\n          \"from\": \"inherits@>=2.0.1 <2.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz\"\n        },\n        \"ini\": {\n          \"version\": \"1.3.4\",\n          \"from\": \"ini@>=1.3.4 <1.4.0\",\n          \"resolved\": \"https://registry.npmjs.org/ini/-/ini-1.3.4.tgz\"\n        },\n        \"init-package-json\": {\n          \"version\": \"1.9.4\",\n          \"from\": \"init-package-json@latest\",\n          \"resolved\": \"https://registry.npmjs.org/init-package-json/-/init-package-json-1.9.4.tgz\",\n          \"dependencies\": {\n            \"glob\": {\n              \"version\": \"6.0.4\",\n              \"from\": \"glob@>=6.0.0 <7.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/glob/-/glob-6.0.4.tgz\",\n              \"dependencies\": {\n                \"minimatch\": {\n                  \"version\": \"3.0.0\",\n                  \"from\": \"minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0\",\n                  \"dependencies\": {\n                    \"brace-expansion\": {\n                      \"version\": \"1.1.4\",\n                      \"from\": \"brace-expansion@>=1.0.0 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.4.tgz\",\n                      \"dependencies\": {\n                        \"balanced-match\": {\n                          \"version\": \"0.4.1\",\n                          \"from\": \"balanced-match@>=0.4.1 <0.5.0\",\n                          \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz\"\n                        },\n                        \"concat-map\": {\n                          \"version\": \"0.0.1\",\n                          \"from\": \"concat-map@0.0.1\"\n                        }\n                      }\n                    }\n                  }\n                },\n                \"path-is-absolute\": {\n                  \"version\": \"1.0.0\",\n                  \"from\": \"path-is-absolute@>=1.0.0 <2.0.0\"\n                }\n              }\n            },\n            \"promzard\": {\n              \"version\": \"0.3.0\",\n              \"from\": \"promzard@>=0.3.0 <0.4.0\",\n              \"resolved\": \"https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz\"\n            }\n          }\n        },\n        \"lockfile\": {\n          \"version\": \"1.0.1\",\n          \"from\": \"lockfile@>=1.0.1 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/lockfile/-/lockfile-1.0.1.tgz\"\n        },\n        \"lodash._baseindexof\": {\n          \"version\": \"3.1.0\",\n          \"from\": \"lodash._baseindexof@3.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz\"\n        },\n        \"lodash._baseuniq\": {\n          \"version\": \"4.6.0\",\n          \"from\": \"lodash._baseuniq@latest\",\n          \"resolved\": \"https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz\",\n          \"dependencies\": {\n            \"lodash._createset\": {\n              \"version\": \"4.0.3\",\n              \"from\": \"lodash._createset@>=4.0.0 <4.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz\"\n            },\n            \"lodash._root\": {\n              \"version\": \"3.0.1\",\n              \"from\": \"lodash._root@>=3.0.0 <3.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz\"\n            }\n          }\n        },\n        \"lodash._bindcallback\": {\n          \"version\": \"3.0.1\",\n          \"from\": \"lodash._bindcallback@3.0.1\",\n          \"resolved\": \"https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz\"\n        },\n        \"lodash._cacheindexof\": {\n          \"version\": \"3.0.2\",\n          \"from\": \"lodash._cacheindexof@3.0.2\",\n          \"resolved\": \"https://registry.npmjs.org/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz\"\n        },\n        \"lodash._createcache\": {\n          \"version\": \"3.1.2\",\n          \"from\": \"lodash._createcache@3.1.2\",\n          \"resolved\": \"https://registry.npmjs.org/lodash._createcache/-/lodash._createcache-3.1.2.tgz\"\n        },\n        \"lodash._getnative\": {\n          \"version\": \"3.9.1\",\n          \"from\": \"lodash._getnative@3.9.1\",\n          \"resolved\": \"https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz\"\n        },\n        \"lodash.clonedeep\": {\n          \"version\": \"4.3.2\",\n          \"from\": \"lodash.clonedeep@4.3.2\",\n          \"resolved\": \"https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.3.2.tgz\",\n          \"dependencies\": {\n            \"lodash._baseclone\": {\n              \"version\": \"4.5.3\",\n              \"from\": \"lodash._baseclone@>=4.0.0 <5.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-4.5.3.tgz\"\n            }\n          }\n        },\n        \"lodash.restparam\": {\n          \"version\": \"3.6.1\",\n          \"from\": \"lodash.restparam@3.6.1\",\n          \"resolved\": \"https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz\"\n        },\n        \"lodash.union\": {\n          \"version\": \"4.4.0\",\n          \"from\": \"lodash.union@latest\",\n          \"resolved\": \"https://registry.npmjs.org/lodash.union/-/lodash.union-4.4.0.tgz\",\n          \"dependencies\": {\n            \"lodash._baseflatten\": {\n              \"version\": \"4.2.1\",\n              \"from\": \"lodash._baseflatten@>=4.2.0 <4.3.0\",\n              \"resolved\": \"https://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-4.2.1.tgz\"\n            },\n            \"lodash.rest\": {\n              \"version\": \"4.0.3\",\n              \"from\": \"lodash.rest@>=4.0.0 <5.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/lodash.rest/-/lodash.rest-4.0.3.tgz\"\n            }\n          }\n        },\n        \"lodash.uniq\": {\n          \"version\": \"4.3.0\",\n          \"from\": \"lodash.uniq@latest\",\n          \"resolved\": \"https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.3.0.tgz\"\n        },\n        \"lodash.without\": {\n          \"version\": \"4.2.0\",\n          \"from\": \"lodash.without@latest\",\n          \"resolved\": \"https://registry.npmjs.org/lodash.without/-/lodash.without-4.2.0.tgz\",\n          \"dependencies\": {\n            \"lodash._basedifference\": {\n              \"version\": \"4.5.0\",\n              \"from\": \"lodash._basedifference@>=4.5.0 <4.6.0\",\n              \"resolved\": \"https://registry.npmjs.org/lodash._basedifference/-/lodash._basedifference-4.5.0.tgz\",\n              \"dependencies\": {\n                \"lodash._root\": {\n                  \"version\": \"3.0.1\",\n                  \"from\": \"lodash._root@>=3.0.0 <3.1.0\",\n                  \"resolved\": \"https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz\"\n                }\n              }\n            },\n            \"lodash.rest\": {\n              \"version\": \"4.0.3\",\n              \"from\": \"lodash.rest@>=4.0.0 <5.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/lodash.rest/-/lodash.rest-4.0.3.tgz\"\n            }\n          }\n        },\n        \"mkdirp\": {\n          \"version\": \"0.5.1\",\n          \"from\": \"mkdirp@>=0.5.1 <0.6.0\",\n          \"resolved\": \"https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz\",\n          \"dependencies\": {\n            \"minimist\": {\n              \"version\": \"0.0.8\",\n              \"from\": \"minimist@0.0.8\",\n              \"resolved\": \"https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz\"\n            }\n          }\n        },\n        \"node-gyp\": {\n          \"version\": \"3.3.1\",\n          \"from\": \"node-gyp@3.3.1\",\n          \"resolved\": \"https://registry.npmjs.org/node-gyp/-/node-gyp-3.3.1.tgz\",\n          \"dependencies\": {\n            \"glob\": {\n              \"version\": \"4.5.3\",\n              \"from\": \"glob@>=3.0.0 <4.0.0||>=4.0.0 <5.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/glob/-/glob-4.5.3.tgz\",\n              \"dependencies\": {\n                \"minimatch\": {\n                  \"version\": \"2.0.10\",\n                  \"from\": \"minimatch@>=2.0.1 <3.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz\",\n                  \"dependencies\": {\n                    \"brace-expansion\": {\n                      \"version\": \"1.1.3\",\n                      \"from\": \"brace-expansion@>=1.0.0 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz\",\n                      \"dependencies\": {\n                        \"balanced-match\": {\n                          \"version\": \"0.3.0\",\n                          \"from\": \"balanced-match@>=0.3.0 <0.4.0\",\n                          \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz\"\n                        },\n                        \"concat-map\": {\n                          \"version\": \"0.0.1\",\n                          \"from\": \"concat-map@0.0.1\",\n                          \"resolved\": \"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz\"\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            },\n            \"minimatch\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"minimatch@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz\",\n              \"dependencies\": {\n                \"lru-cache\": {\n                  \"version\": \"2.7.3\",\n                  \"from\": \"lru-cache@>=2.0.0 <3.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz\"\n                },\n                \"sigmund\": {\n                  \"version\": \"1.0.1\",\n                  \"from\": \"sigmund@>=1.0.0 <1.1.0\",\n                  \"resolved\": \"https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz\"\n                }\n              }\n            },\n            \"npmlog\": {\n              \"version\": \"2.0.4\",\n              \"from\": \"npmlog@>=0.0.0 <1.0.0||>=1.0.0 <2.0.0||>=2.0.0 <3.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz\",\n              \"dependencies\": {\n                \"ansi\": {\n                  \"version\": \"0.3.1\",\n                  \"from\": \"ansi@~0.3.1\",\n                  \"resolved\": \"https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz\"\n                },\n                \"are-we-there-yet\": {\n                  \"version\": \"1.1.2\",\n                  \"from\": \"are-we-there-yet@~1.1.2\",\n                  \"resolved\": \"https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz\",\n                  \"dependencies\": {\n                    \"delegates\": {\n                      \"version\": \"1.0.0\",\n                      \"from\": \"delegates@^1.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz\"\n                    }\n                  }\n                },\n                \"gauge\": {\n                  \"version\": \"1.2.7\",\n                  \"from\": \"gauge@>=1.2.5 <1.3.0\",\n                  \"resolved\": \"https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz\",\n                  \"dependencies\": {\n                    \"lodash.pad\": {\n                      \"version\": \"4.4.0\",\n                      \"from\": \"lodash.pad@>=4.1.0 <5.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.4.0.tgz\",\n                      \"dependencies\": {\n                        \"lodash._baseslice\": {\n                          \"version\": \"4.0.0\",\n                          \"from\": \"lodash._baseslice@>=4.0.0 <4.1.0\",\n                          \"resolved\": \"https://registry.npmjs.org/lodash._baseslice/-/lodash._baseslice-4.0.0.tgz\"\n                        },\n                        \"lodash._basetostring\": {\n                          \"version\": \"4.12.0\",\n                          \"from\": \"lodash._basetostring@>=4.12.0 <4.13.0\",\n                          \"resolved\": \"https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz\"\n                        },\n                        \"lodash.tostring\": {\n                          \"version\": \"4.1.3\",\n                          \"from\": \"lodash.tostring@>=4.0.0 <5.0.0\",\n                          \"resolved\": \"https://registry.npmjs.org/lodash.tostring/-/lodash.tostring-4.1.3.tgz\"\n                        }\n                      }\n                    },\n                    \"lodash.padend\": {\n                      \"version\": \"4.5.0\",\n                      \"from\": \"lodash.padend@>=4.1.0 <5.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.5.0.tgz\",\n                      \"dependencies\": {\n                        \"lodash._baseslice\": {\n                          \"version\": \"4.0.0\",\n                          \"from\": \"lodash._baseslice@~4.0.0\",\n                          \"resolved\": \"https://registry.npmjs.org/lodash._baseslice/-/lodash._baseslice-4.0.0.tgz\"\n                        },\n                        \"lodash._basetostring\": {\n                          \"version\": \"4.12.0\",\n                          \"from\": \"lodash._basetostring@~4.12.0\",\n                          \"resolved\": \"https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz\"\n                        },\n                        \"lodash.tostring\": {\n                          \"version\": \"4.1.3\",\n                          \"from\": \"lodash.tostring@^4.0.0\",\n                          \"resolved\": \"https://registry.npmjs.org/lodash.tostring/-/lodash.tostring-4.1.3.tgz\"\n                        }\n                      }\n                    },\n                    \"lodash.padstart\": {\n                      \"version\": \"4.5.0\",\n                      \"from\": \"lodash.padstart@>=4.1.0 <5.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.5.0.tgz\",\n                      \"dependencies\": {\n                        \"lodash._baseslice\": {\n                          \"version\": \"4.0.0\",\n                          \"from\": \"lodash._baseslice@~4.0.0\",\n                          \"resolved\": \"https://registry.npmjs.org/lodash._baseslice/-/lodash._baseslice-4.0.0.tgz\"\n                        },\n                        \"lodash._basetostring\": {\n                          \"version\": \"4.12.0\",\n                          \"from\": \"lodash._basetostring@~4.12.0\",\n                          \"resolved\": \"https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz\"\n                        },\n                        \"lodash.tostring\": {\n                          \"version\": \"4.1.3\",\n                          \"from\": \"lodash.tostring@^4.0.0\",\n                          \"resolved\": \"https://registry.npmjs.org/lodash.tostring/-/lodash.tostring-4.1.3.tgz\"\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            },\n            \"path-array\": {\n              \"version\": \"1.0.1\",\n              \"from\": \"path-array@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz\",\n              \"dependencies\": {\n                \"array-index\": {\n                  \"version\": \"1.0.0\",\n                  \"from\": \"array-index@>=1.0.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz\",\n                  \"dependencies\": {\n                    \"debug\": {\n                      \"version\": \"2.2.0\",\n                      \"from\": \"debug@*\",\n                      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-2.2.0.tgz\",\n                      \"dependencies\": {\n                        \"ms\": {\n                          \"version\": \"0.7.1\",\n                          \"from\": \"ms@0.7.1\",\n                          \"resolved\": \"https://registry.npmjs.org/ms/-/ms-0.7.1.tgz\"\n                        }\n                      }\n                    },\n                    \"es6-symbol\": {\n                      \"version\": \"3.0.2\",\n                      \"from\": \"es6-symbol@>=3.0.2 <4.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.0.2.tgz\",\n                      \"dependencies\": {\n                        \"d\": {\n                          \"version\": \"0.1.1\",\n                          \"from\": \"d@>=0.1.1 <0.2.0\",\n                          \"resolved\": \"https://registry.npmjs.org/d/-/d-0.1.1.tgz\"\n                        },\n                        \"es5-ext\": {\n                          \"version\": \"0.10.11\",\n                          \"from\": \"es5-ext@>=0.10.10 <0.11.0\",\n                          \"resolved\": \"https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.11.tgz\",\n                          \"dependencies\": {\n                            \"es6-iterator\": {\n                              \"version\": \"2.0.0\",\n                              \"from\": \"es6-iterator@>=2.0.0 <3.0.0\",\n                              \"resolved\": \"https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz\"\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        },\n        \"nopt\": {\n          \"version\": \"3.0.6\",\n          \"from\": \"nopt@>=3.0.6 <3.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz\"\n        },\n        \"normalize-git-url\": {\n          \"version\": \"3.0.2\",\n          \"from\": \"normalize-git-url@>=3.0.2 <3.1.0\"\n        },\n        \"normalize-package-data\": {\n          \"version\": \"2.3.5\",\n          \"from\": \"normalize-package-data@>=2.3.5 <2.4.0\",\n          \"resolved\": \"https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz\",\n          \"dependencies\": {\n            \"is-builtin-module\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"is-builtin-module@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz\",\n              \"dependencies\": {\n                \"builtin-modules\": {\n                  \"version\": \"1.1.1\",\n                  \"from\": \"builtin-modules@>=1.0.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz\"\n                }\n              }\n            }\n          }\n        },\n        \"npm-cache-filename\": {\n          \"version\": \"1.0.2\",\n          \"from\": \"npm-cache-filename@>=1.0.2 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz\"\n        },\n        \"npm-install-checks\": {\n          \"version\": \"3.0.0\",\n          \"from\": \"npm-install-checks@3.0.0\"\n        },\n        \"npm-package-arg\": {\n          \"version\": \"4.2.0\",\n          \"from\": \"npm-package-arg@4.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.2.0.tgz\"\n        },\n        \"npm-registry-client\": {\n          \"version\": \"7.1.2\",\n          \"from\": \"npm-registry-client@latest\",\n          \"resolved\": \"https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-7.1.2.tgz\",\n          \"dependencies\": {\n            \"concat-stream\": {\n              \"version\": \"1.5.1\",\n              \"from\": \"concat-stream@>=1.4.6 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz\",\n              \"dependencies\": {\n                \"readable-stream\": {\n                  \"version\": \"2.0.6\",\n                  \"from\": \"readable-stream@>=2.0.0 <2.1.0\",\n                  \"resolved\": \"https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz\",\n                  \"dependencies\": {\n                    \"core-util-is\": {\n                      \"version\": \"1.0.2\",\n                      \"from\": \"core-util-is@>=1.0.0 <1.1.0\"\n                    },\n                    \"isarray\": {\n                      \"version\": \"1.0.0\",\n                      \"from\": \"isarray@>=1.0.0 <1.1.0\"\n                    },\n                    \"process-nextick-args\": {\n                      \"version\": \"1.0.7\",\n                      \"from\": \"process-nextick-args@>=1.0.6 <1.1.0\",\n                      \"resolved\": \"https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz\"\n                    },\n                    \"string_decoder\": {\n                      \"version\": \"0.10.31\",\n                      \"from\": \"string_decoder@>=0.10.0 <0.11.0\"\n                    },\n                    \"util-deprecate\": {\n                      \"version\": \"1.0.2\",\n                      \"from\": \"util-deprecate@>=1.0.1 <1.1.0\"\n                    }\n                  }\n                },\n                \"typedarray\": {\n                  \"version\": \"0.0.6\",\n                  \"from\": \"typedarray@>=0.0.5 <0.1.0\",\n                  \"resolved\": \"https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz\"\n                }\n              }\n            },\n            \"retry\": {\n              \"version\": \"0.8.0\",\n              \"from\": \"retry@>=0.8.0 <0.9.0\",\n              \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.8.0.tgz\"\n            }\n          }\n        },\n        \"npm-user-validate\": {\n          \"version\": \"0.1.4\",\n          \"from\": \"npm-user-validate@latest\",\n          \"resolved\": \"https://registry.npmjs.org/npm-user-validate/-/npm-user-validate-0.1.4.tgz\"\n        },\n        \"npmlog\": {\n          \"version\": \"3.1.2\",\n          \"from\": \"npmlog@latest\",\n          \"resolved\": \"https://registry.npmjs.org/npmlog/-/npmlog-3.1.2.tgz\",\n          \"dependencies\": {\n            \"are-we-there-yet\": {\n              \"version\": \"1.1.2\",\n              \"from\": \"are-we-there-yet@>=1.1.2 <1.2.0\",\n              \"resolved\": \"http://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz\",\n              \"dependencies\": {\n                \"delegates\": {\n                  \"version\": \"1.0.0\",\n                  \"from\": \"delegates@>=1.0.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz\"\n                }\n              }\n            },\n            \"console-control-strings\": {\n              \"version\": \"1.1.0\",\n              \"from\": \"console-control-strings@>=1.1.0 <1.2.0\",\n              \"resolved\": \"https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz\"\n            },\n            \"gauge\": {\n              \"version\": \"2.6.0\",\n              \"from\": \"gauge@>=2.6.0 <2.7.0\",\n              \"resolved\": \"https://registry.npmjs.org/gauge/-/gauge-2.6.0.tgz\",\n              \"dependencies\": {\n                \"has-color\": {\n                  \"version\": \"0.1.7\",\n                  \"from\": \"has-color@>=0.1.7 <0.2.0\",\n                  \"resolved\": \"https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz\"\n                },\n                \"object-assign\": {\n                  \"version\": \"4.1.0\",\n                  \"from\": \"object-assign@>=4.0.1 <5.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz\"\n                },\n                \"signal-exit\": {\n                  \"version\": \"3.0.0\",\n                  \"from\": \"signal-exit@>=3.0.0 <4.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.0.tgz\"\n                },\n                \"string-width\": {\n                  \"version\": \"1.0.1\",\n                  \"from\": \"string-width@>=1.0.1 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz\",\n                  \"dependencies\": {\n                    \"code-point-at\": {\n                      \"version\": \"1.0.0\",\n                      \"from\": \"code-point-at@>=1.0.0 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz\",\n                      \"dependencies\": {\n                        \"number-is-nan\": {\n                          \"version\": \"1.0.0\",\n                          \"from\": \"number-is-nan@>=1.0.0 <2.0.0\",\n                          \"resolved\": \"https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz\"\n                        }\n                      }\n                    },\n                    \"is-fullwidth-code-point\": {\n                      \"version\": \"1.0.0\",\n                      \"from\": \"is-fullwidth-code-point@>=1.0.0 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz\",\n                      \"dependencies\": {\n                        \"number-is-nan\": {\n                          \"version\": \"1.0.0\",\n                          \"from\": \"number-is-nan@^1.0.0\",\n                          \"resolved\": \"http://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz\"\n                        }\n                      }\n                    }\n                  }\n                },\n                \"wide-align\": {\n                  \"version\": \"1.1.0\",\n                  \"from\": \"wide-align@>=1.1.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz\"\n                }\n              }\n            },\n            \"set-blocking\": {\n              \"version\": \"2.0.0\",\n              \"from\": \"set-blocking@>=2.0.0 <2.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz\"\n            }\n          }\n        },\n        \"once\": {\n          \"version\": \"1.3.3\",\n          \"from\": \"once@>=1.3.3 <1.4.0\",\n          \"resolved\": \"https://registry.npmjs.org/once/-/once-1.3.3.tgz\"\n        },\n        \"opener\": {\n          \"version\": \"1.4.1\",\n          \"from\": \"opener@>=1.4.1 <1.5.0\",\n          \"resolved\": \"https://registry.npmjs.org/opener/-/opener-1.4.1.tgz\"\n        },\n        \"osenv\": {\n          \"version\": \"0.1.3\",\n          \"from\": \"osenv@>=0.1.3 <0.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz\",\n          \"dependencies\": {\n            \"os-homedir\": {\n              \"version\": \"1.0.1\",\n              \"from\": \"os-homedir@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz\"\n            },\n            \"os-tmpdir\": {\n              \"version\": \"1.0.1\",\n              \"from\": \"os-tmpdir@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz\"\n            }\n          }\n        },\n        \"path-is-inside\": {\n          \"version\": \"1.0.1\",\n          \"from\": \"path-is-inside@>=1.0.1 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz\"\n        },\n        \"read\": {\n          \"version\": \"1.0.7\",\n          \"from\": \"read@>=1.0.7 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/read/-/read-1.0.7.tgz\",\n          \"dependencies\": {\n            \"mute-stream\": {\n              \"version\": \"0.0.5\",\n              \"from\": \"mute-stream@>=0.0.4 <0.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz\"\n            }\n          }\n        },\n        \"read-cmd-shim\": {\n          \"version\": \"1.0.1\",\n          \"from\": \"read-cmd-shim@>=1.0.1 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz\"\n        },\n        \"read-installed\": {\n          \"version\": \"4.0.3\",\n          \"from\": \"read-installed@>=4.0.3 <4.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz\",\n          \"dependencies\": {\n            \"util-extend\": {\n              \"version\": \"1.0.3\",\n              \"from\": \"util-extend@>=1.0.1 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz\"\n            }\n          }\n        },\n        \"read-package-json\": {\n          \"version\": \"2.0.4\",\n          \"from\": \"read-package-json@>=2.0.3 <2.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/read-package-json/-/read-package-json-2.0.4.tgz\",\n          \"dependencies\": {\n            \"glob\": {\n              \"version\": \"6.0.4\",\n              \"from\": \"glob@>=6.0.0 <7.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/glob/-/glob-6.0.4.tgz\",\n              \"dependencies\": {\n                \"minimatch\": {\n                  \"version\": \"3.0.0\",\n                  \"from\": \"minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0\",\n                  \"dependencies\": {\n                    \"brace-expansion\": {\n                      \"version\": \"1.1.3\",\n                      \"from\": \"brace-expansion@>=1.0.0 <2.0.0\",\n                      \"dependencies\": {\n                        \"balanced-match\": {\n                          \"version\": \"0.3.0\",\n                          \"from\": \"balanced-match@>=0.3.0 <0.4.0\"\n                        },\n                        \"concat-map\": {\n                          \"version\": \"0.0.1\",\n                          \"from\": \"concat-map@0.0.1\"\n                        }\n                      }\n                    }\n                  }\n                },\n                \"path-is-absolute\": {\n                  \"version\": \"1.0.0\",\n                  \"from\": \"path-is-absolute@>=1.0.0 <2.0.0\"\n                }\n              }\n            },\n            \"json-parse-helpfulerror\": {\n              \"version\": \"1.0.3\",\n              \"from\": \"json-parse-helpfulerror@>=1.0.2 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz\",\n              \"dependencies\": {\n                \"jju\": {\n                  \"version\": \"1.3.0\",\n                  \"from\": \"jju@>=1.1.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/jju/-/jju-1.3.0.tgz\"\n                }\n              }\n            }\n          }\n        },\n        \"read-package-tree\": {\n          \"version\": \"5.1.5\",\n          \"from\": \"read-package-tree@>=5.1.4 <5.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.1.5.tgz\"\n        },\n        \"readable-stream\": {\n          \"version\": \"2.1.4\",\n          \"from\": \"readable-stream@latest\",\n          \"resolved\": \"https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.4.tgz\",\n          \"dependencies\": {\n            \"buffer-shims\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"buffer-shims@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz\"\n            },\n            \"core-util-is\": {\n              \"version\": \"1.0.2\",\n              \"from\": \"core-util-is@>=1.0.0 <1.1.0\"\n            },\n            \"isarray\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"isarray@>=1.0.0 <1.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz\"\n            },\n            \"process-nextick-args\": {\n              \"version\": \"1.0.7\",\n              \"from\": \"process-nextick-args@>=1.0.6 <1.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz\"\n            },\n            \"string_decoder\": {\n              \"version\": \"0.10.31\",\n              \"from\": \"string_decoder@>=0.10.0 <0.11.0\"\n            },\n            \"util-deprecate\": {\n              \"version\": \"1.0.2\",\n              \"from\": \"util-deprecate@>=1.0.1 <1.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz\"\n            }\n          }\n        },\n        \"readdir-scoped-modules\": {\n          \"version\": \"1.0.2\",\n          \"from\": \"readdir-scoped-modules@1.0.2\",\n          \"resolved\": \"https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz\"\n        },\n        \"realize-package-specifier\": {\n          \"version\": \"3.0.3\",\n          \"from\": \"realize-package-specifier@>=3.0.2 <3.1.0\"\n        },\n        \"request\": {\n          \"version\": \"2.72.0\",\n          \"from\": \"request@latest\",\n          \"resolved\": \"https://registry.npmjs.org/request/-/request-2.72.0.tgz\",\n          \"dependencies\": {\n            \"aws-sign2\": {\n              \"version\": \"0.6.0\",\n              \"from\": \"aws-sign2@>=0.6.0 <0.7.0\",\n              \"resolved\": \"https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz\"\n            },\n            \"aws4\": {\n              \"version\": \"1.3.2\",\n              \"from\": \"aws4@>=1.2.1 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/aws4/-/aws4-1.3.2.tgz\",\n              \"dependencies\": {\n                \"lru-cache\": {\n                  \"version\": \"4.0.1\",\n                  \"from\": \"lru-cache@>=4.0.0 <5.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz\",\n                  \"dependencies\": {\n                    \"pseudomap\": {\n                      \"version\": \"1.0.2\",\n                      \"from\": \"pseudomap@>=1.0.1 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz\"\n                    },\n                    \"yallist\": {\n                      \"version\": \"2.0.0\",\n                      \"from\": \"yallist@>=2.0.0 <3.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz\"\n                    }\n                  }\n                }\n              }\n            },\n            \"bl\": {\n              \"version\": \"1.1.2\",\n              \"from\": \"bl@>=1.1.2 <1.2.0\",\n              \"resolved\": \"https://registry.npmjs.org/bl/-/bl-1.1.2.tgz\",\n              \"dependencies\": {\n                \"readable-stream\": {\n                  \"version\": \"2.0.6\",\n                  \"from\": \"readable-stream@>=2.0.5 <2.1.0\",\n                  \"resolved\": \"https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz\",\n                  \"dependencies\": {\n                    \"core-util-is\": {\n                      \"version\": \"1.0.2\",\n                      \"from\": \"core-util-is@>=1.0.0 <1.1.0\"\n                    },\n                    \"isarray\": {\n                      \"version\": \"1.0.0\",\n                      \"from\": \"isarray@>=1.0.0 <1.1.0\"\n                    },\n                    \"process-nextick-args\": {\n                      \"version\": \"1.0.6\",\n                      \"from\": \"process-nextick-args@>=1.0.6 <1.1.0\"\n                    },\n                    \"string_decoder\": {\n                      \"version\": \"0.10.31\",\n                      \"from\": \"string_decoder@>=0.10.0 <0.11.0\"\n                    },\n                    \"util-deprecate\": {\n                      \"version\": \"1.0.2\",\n                      \"from\": \"util-deprecate@>=1.0.1 <1.1.0\"\n                    }\n                  }\n                }\n              }\n            },\n            \"caseless\": {\n              \"version\": \"0.11.0\",\n              \"from\": \"caseless@>=0.11.0 <0.12.0\",\n              \"resolved\": \"https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz\"\n            },\n            \"combined-stream\": {\n              \"version\": \"1.0.5\",\n              \"from\": \"combined-stream@>=1.0.5 <1.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz\",\n              \"dependencies\": {\n                \"delayed-stream\": {\n                  \"version\": \"1.0.0\",\n                  \"from\": \"delayed-stream@>=1.0.0 <1.1.0\",\n                  \"resolved\": \"https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz\"\n                }\n              }\n            },\n            \"extend\": {\n              \"version\": \"3.0.0\",\n              \"from\": \"extend@>=3.0.0 <3.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/extend/-/extend-3.0.0.tgz\"\n            },\n            \"forever-agent\": {\n              \"version\": \"0.6.1\",\n              \"from\": \"forever-agent@>=0.6.1 <0.7.0\",\n              \"resolved\": \"https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz\"\n            },\n            \"form-data\": {\n              \"version\": \"1.0.0-rc4\",\n              \"from\": \"form-data@>=1.0.0-rc3 <1.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz\",\n              \"dependencies\": {\n                \"async\": {\n                  \"version\": \"1.5.2\",\n                  \"from\": \"async@>=1.4.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/async/-/async-1.5.2.tgz\"\n                }\n              }\n            },\n            \"har-validator\": {\n              \"version\": \"2.0.6\",\n              \"from\": \"har-validator@>=2.0.2 <2.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz\",\n              \"dependencies\": {\n                \"chalk\": {\n                  \"version\": \"1.1.3\",\n                  \"from\": \"chalk@>=1.1.1 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz\",\n                  \"dependencies\": {\n                    \"ansi-styles\": {\n                      \"version\": \"2.2.1\",\n                      \"from\": \"ansi-styles@>=2.2.1 <3.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz\"\n                    },\n                    \"escape-string-regexp\": {\n                      \"version\": \"1.0.5\",\n                      \"from\": \"escape-string-regexp@>=1.0.2 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz\"\n                    },\n                    \"has-ansi\": {\n                      \"version\": \"2.0.0\",\n                      \"from\": \"has-ansi@>=2.0.0 <3.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz\"\n                    },\n                    \"supports-color\": {\n                      \"version\": \"2.0.0\",\n                      \"from\": \"supports-color@>=2.0.0 <3.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz\"\n                    }\n                  }\n                },\n                \"commander\": {\n                  \"version\": \"2.9.0\",\n                  \"from\": \"commander@>=2.8.1 <3.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/commander/-/commander-2.9.0.tgz\",\n                  \"dependencies\": {\n                    \"graceful-readlink\": {\n                      \"version\": \"1.0.1\",\n                      \"from\": \"graceful-readlink@>=1.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz\"\n                    }\n                  }\n                },\n                \"is-my-json-valid\": {\n                  \"version\": \"2.13.1\",\n                  \"from\": \"is-my-json-valid@>=2.12.4 <3.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz\",\n                  \"dependencies\": {\n                    \"generate-function\": {\n                      \"version\": \"2.0.0\",\n                      \"from\": \"generate-function@>=2.0.0 <3.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz\"\n                    },\n                    \"generate-object-property\": {\n                      \"version\": \"1.2.0\",\n                      \"from\": \"generate-object-property@>=1.1.0 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz\",\n                      \"dependencies\": {\n                        \"is-property\": {\n                          \"version\": \"1.0.2\",\n                          \"from\": \"is-property@>=1.0.0 <2.0.0\",\n                          \"resolved\": \"https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz\"\n                        }\n                      }\n                    },\n                    \"jsonpointer\": {\n                      \"version\": \"2.0.0\",\n                      \"from\": \"jsonpointer@2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz\"\n                    },\n                    \"xtend\": {\n                      \"version\": \"4.0.1\",\n                      \"from\": \"xtend@>=4.0.0 <5.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz\"\n                    }\n                  }\n                },\n                \"pinkie-promise\": {\n                  \"version\": \"2.0.1\",\n                  \"from\": \"pinkie-promise@>=2.0.0 <3.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz\",\n                  \"dependencies\": {\n                    \"pinkie\": {\n                      \"version\": \"2.0.4\",\n                      \"from\": \"pinkie@>=2.0.0 <3.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz\"\n                    }\n                  }\n                }\n              }\n            },\n            \"hawk\": {\n              \"version\": \"3.1.3\",\n              \"from\": \"hawk@>=3.1.0 <3.2.0\",\n              \"resolved\": \"https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz\",\n              \"dependencies\": {\n                \"boom\": {\n                  \"version\": \"2.10.1\",\n                  \"from\": \"boom@>=2.0.0 <3.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/boom/-/boom-2.10.1.tgz\"\n                },\n                \"cryptiles\": {\n                  \"version\": \"2.0.5\",\n                  \"from\": \"cryptiles@>=2.0.0 <3.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz\"\n                },\n                \"hoek\": {\n                  \"version\": \"2.16.3\",\n                  \"from\": \"hoek@>=2.0.0 <3.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz\"\n                },\n                \"sntp\": {\n                  \"version\": \"1.0.9\",\n                  \"from\": \"sntp@>=1.0.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz\"\n                }\n              }\n            },\n            \"http-signature\": {\n              \"version\": \"1.1.1\",\n              \"from\": \"http-signature@>=1.1.0 <1.2.0\",\n              \"resolved\": \"https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz\",\n              \"dependencies\": {\n                \"assert-plus\": {\n                  \"version\": \"0.2.0\",\n                  \"from\": \"assert-plus@>=0.2.0 <0.3.0\",\n                  \"resolved\": \"https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz\"\n                },\n                \"jsprim\": {\n                  \"version\": \"1.2.2\",\n                  \"from\": \"jsprim@>=1.2.2 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz\",\n                  \"dependencies\": {\n                    \"extsprintf\": {\n                      \"version\": \"1.0.2\",\n                      \"from\": \"extsprintf@1.0.2\",\n                      \"resolved\": \"https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz\"\n                    },\n                    \"json-schema\": {\n                      \"version\": \"0.2.2\",\n                      \"from\": \"json-schema@0.2.2\",\n                      \"resolved\": \"https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz\"\n                    },\n                    \"verror\": {\n                      \"version\": \"1.3.6\",\n                      \"from\": \"verror@1.3.6\",\n                      \"resolved\": \"https://registry.npmjs.org/verror/-/verror-1.3.6.tgz\"\n                    }\n                  }\n                },\n                \"sshpk\": {\n                  \"version\": \"1.7.4\",\n                  \"from\": \"sshpk@>=1.7.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/sshpk/-/sshpk-1.7.4.tgz\",\n                  \"dependencies\": {\n                    \"asn1\": {\n                      \"version\": \"0.2.3\",\n                      \"from\": \"asn1@>=0.2.3 <0.3.0\",\n                      \"resolved\": \"https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz\"\n                    },\n                    \"dashdash\": {\n                      \"version\": \"1.13.0\",\n                      \"from\": \"dashdash@>=1.10.1 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/dashdash/-/dashdash-1.13.0.tgz\",\n                      \"dependencies\": {\n                        \"assert-plus\": {\n                          \"version\": \"1.0.0\",\n                          \"from\": \"assert-plus@>=1.0.0 <2.0.0\",\n                          \"resolved\": \"https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz\"\n                        }\n                      }\n                    },\n                    \"ecc-jsbn\": {\n                      \"version\": \"0.1.1\",\n                      \"from\": \"ecc-jsbn@>=0.0.1 <1.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz\",\n                      \"optional\": true\n                    },\n                    \"jodid25519\": {\n                      \"version\": \"1.0.2\",\n                      \"from\": \"jodid25519@>=1.0.0 <2.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz\",\n                      \"optional\": true\n                    },\n                    \"jsbn\": {\n                      \"version\": \"0.1.0\",\n                      \"from\": \"jsbn@>=0.1.0 <0.2.0\",\n                      \"resolved\": \"https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz\",\n                      \"optional\": true\n                    },\n                    \"tweetnacl\": {\n                      \"version\": \"0.14.3\",\n                      \"from\": \"tweetnacl@>=0.13.0 <1.0.0\",\n                      \"resolved\": \"https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz\",\n                      \"optional\": true\n                    }\n                  }\n                }\n              }\n            },\n            \"is-typedarray\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"is-typedarray@>=1.0.0 <1.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz\"\n            },\n            \"isstream\": {\n              \"version\": \"0.1.2\",\n              \"from\": \"isstream@>=0.1.2 <0.2.0\",\n              \"resolved\": \"https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz\"\n            },\n            \"json-stringify-safe\": {\n              \"version\": \"5.0.1\",\n              \"from\": \"json-stringify-safe@>=5.0.1 <5.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz\"\n            },\n            \"mime-types\": {\n              \"version\": \"2.1.10\",\n              \"from\": \"mime-types@>=2.1.7 <2.2.0\",\n              \"resolved\": \"https://registry.npmjs.org/mime-types/-/mime-types-2.1.10.tgz\",\n              \"dependencies\": {\n                \"mime-db\": {\n                  \"version\": \"1.22.0\",\n                  \"from\": \"mime-db@>=1.22.0 <1.23.0\",\n                  \"resolved\": \"https://registry.npmjs.org/mime-db/-/mime-db-1.22.0.tgz\"\n                }\n              }\n            },\n            \"node-uuid\": {\n              \"version\": \"1.4.7\",\n              \"from\": \"node-uuid@>=1.4.7 <1.5.0\",\n              \"resolved\": \"https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz\"\n            },\n            \"oauth-sign\": {\n              \"version\": \"0.8.1\",\n              \"from\": \"oauth-sign@>=0.8.0 <0.9.0\",\n              \"resolved\": \"https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz\"\n            },\n            \"qs\": {\n              \"version\": \"6.1.0\",\n              \"from\": \"qs@>=6.1.0 <6.2.0\",\n              \"resolved\": \"https://registry.npmjs.org/qs/-/qs-6.1.0.tgz\"\n            },\n            \"stringstream\": {\n              \"version\": \"0.0.5\",\n              \"from\": \"stringstream@>=0.0.4 <0.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz\"\n            },\n            \"tough-cookie\": {\n              \"version\": \"2.2.2\",\n              \"from\": \"tough-cookie@>=2.2.0 <2.3.0\",\n              \"resolved\": \"https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz\"\n            },\n            \"tunnel-agent\": {\n              \"version\": \"0.4.2\",\n              \"from\": \"tunnel-agent@>=0.4.1 <0.5.0\",\n              \"resolved\": \"https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz\"\n            }\n          }\n        },\n        \"retry\": {\n          \"version\": \"0.9.0\",\n          \"from\": \"retry@latest\",\n          \"resolved\": \"https://registry.npmjs.org/retry/-/retry-0.9.0.tgz\"\n        },\n        \"rimraf\": {\n          \"version\": \"2.5.2\",\n          \"from\": \"rimraf@>=2.5.1 <2.6.0\",\n          \"resolved\": \"https://registry.npmjs.org/rimraf/-/rimraf-2.5.2.tgz\"\n        },\n        \"semver\": {\n          \"version\": \"5.1.0\",\n          \"from\": \"semver@>=5.1.0 <5.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/semver/-/semver-5.1.0.tgz\"\n        },\n        \"sha\": {\n          \"version\": \"2.0.1\",\n          \"from\": \"sha@>=2.0.1 <2.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/sha/-/sha-2.0.1.tgz\"\n        },\n        \"slide\": {\n          \"version\": \"1.1.6\",\n          \"from\": \"slide@>=1.1.6 <1.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/slide/-/slide-1.1.6.tgz\"\n        },\n        \"sorted-object\": {\n          \"version\": \"2.0.0\",\n          \"from\": \"sorted-object@latest\",\n          \"resolved\": \"https://registry.npmjs.org/sorted-object/-/sorted-object-2.0.0.tgz\"\n        },\n        \"strip-ansi\": {\n          \"version\": \"3.0.1\",\n          \"from\": \"strip-ansi@*\",\n          \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz\"\n        },\n        \"tar\": {\n          \"version\": \"2.2.1\",\n          \"from\": \"tar@>=2.2.1 <2.3.0\",\n          \"resolved\": \"https://registry.npmjs.org/tar/-/tar-2.2.1.tgz\",\n          \"dependencies\": {\n            \"block-stream\": {\n              \"version\": \"0.0.8\",\n              \"from\": \"block-stream@*\",\n              \"resolved\": \"https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz\"\n            }\n          }\n        },\n        \"text-table\": {\n          \"version\": \"0.2.0\",\n          \"from\": \"text-table@>=0.2.0 <0.3.0\",\n          \"resolved\": \"https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz\"\n        },\n        \"uid-number\": {\n          \"version\": \"0.0.6\",\n          \"from\": \"uid-number@0.0.6\",\n          \"resolved\": \"https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz\"\n        },\n        \"umask\": {\n          \"version\": \"1.1.0\",\n          \"from\": \"umask@>=1.1.0 <1.2.0\",\n          \"resolved\": \"https://registry.npmjs.org/umask/-/umask-1.1.0.tgz\"\n        },\n        \"unique-filename\": {\n          \"version\": \"1.1.0\",\n          \"from\": \"unique-filename@>=1.1.0 <2.0.0\",\n          \"resolved\": \"https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz\",\n          \"dependencies\": {\n            \"unique-slug\": {\n              \"version\": \"2.0.0\",\n              \"from\": \"unique-slug@>=2.0.0 <3.0.0\"\n            }\n          }\n        },\n        \"unpipe\": {\n          \"version\": \"1.0.0\",\n          \"from\": \"unpipe@>=1.0.0 <1.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz\"\n        },\n        \"validate-npm-package-license\": {\n          \"version\": \"3.0.1\",\n          \"from\": \"validate-npm-package-license@3.0.1\",\n          \"resolved\": \"https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz\",\n          \"dependencies\": {\n            \"spdx-correct\": {\n              \"version\": \"1.0.2\",\n              \"from\": \"spdx-correct@>=1.0.0 <1.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz\",\n              \"dependencies\": {\n                \"spdx-license-ids\": {\n                  \"version\": \"1.2.0\",\n                  \"from\": \"spdx-license-ids@>=1.0.2 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.0.tgz\"\n                }\n              }\n            },\n            \"spdx-expression-parse\": {\n              \"version\": \"1.0.2\",\n              \"from\": \"spdx-expression-parse@>=1.0.0 <1.1.0\",\n              \"resolved\": \"https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz\",\n              \"dependencies\": {\n                \"spdx-exceptions\": {\n                  \"version\": \"1.0.4\",\n                  \"from\": \"spdx-exceptions@>=1.0.4 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz\"\n                },\n                \"spdx-license-ids\": {\n                  \"version\": \"1.2.0\",\n                  \"from\": \"spdx-license-ids@>=1.0.0 <2.0.0\"\n                }\n              }\n            }\n          }\n        },\n        \"validate-npm-package-name\": {\n          \"version\": \"2.2.2\",\n          \"from\": \"validate-npm-package-name@>=2.2.2 <2.3.0\",\n          \"resolved\": \"https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-2.2.2.tgz\",\n          \"dependencies\": {\n            \"builtins\": {\n              \"version\": \"0.0.7\",\n              \"from\": \"builtins@0.0.7\",\n              \"resolved\": \"https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz\"\n            }\n          }\n        },\n        \"which\": {\n          \"version\": \"1.2.10\",\n          \"from\": \"which@latest\",\n          \"resolved\": \"https://registry.npmjs.org/which/-/which-1.2.10.tgz\",\n          \"dependencies\": {\n            \"isexe\": {\n              \"version\": \"1.1.2\",\n              \"from\": \"isexe@>=1.1.1 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz\"\n            }\n          }\n        },\n        \"wrappy\": {\n          \"version\": \"1.0.2\",\n          \"from\": \"wrappy@latest\",\n          \"resolved\": \"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz\"\n        },\n        \"write-file-atomic\": {\n          \"version\": \"1.1.4\",\n          \"from\": \"write-file-atomic@>=1.1.4 <2.0.0\"\n        }\n      }\n    },\n    \"npm-package-arg\": {\n      \"version\": \"4.2.0\",\n      \"from\": \"npm-package-arg@4.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-4.2.0.tgz\",\n      \"dependencies\": {\n        \"hosted-git-info\": {\n          \"version\": \"2.1.5\",\n          \"from\": \"hosted-git-info@>=2.1.5 <3.0.0\",\n          \"resolved\": \"https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz\"\n        },\n        \"semver\": {\n          \"version\": \"5.1.1\",\n          \"from\": \"semver@>=5.1.0 <6.0.0\",\n          \"resolved\": \"https://registry.npmjs.org/semver/-/semver-5.1.1.tgz\"\n        }\n      }\n    },\n    \"once\": {\n      \"version\": \"1.4.0\",\n      \"from\": \"once@>=1.3.0 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/once/-/once-1.4.0.tgz\"\n    },\n    \"optimist\": {\n      \"version\": \"0.6.1\",\n      \"from\": \"https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz\",\n      \"resolved\": \"https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz\",\n      \"dependencies\": {\n        \"minimist\": {\n          \"version\": \"0.0.10\",\n          \"from\": \"minimist@>=0.0.1 <0.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz\"\n        },\n        \"wordwrap\": {\n          \"version\": \"0.0.3\",\n          \"from\": \"wordwrap@>=0.0.2 <0.1.0\",\n          \"resolved\": \"https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz\"\n        }\n      }\n    },\n    \"os-tmpdir\": {\n      \"version\": \"1.0.2\",\n      \"from\": \"os-tmpdir@>=1.0.1 <1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz\"\n    },\n    \"path-is-absolute\": {\n      \"version\": \"1.0.1\",\n      \"from\": \"path-is-absolute@>=1.0.0 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz\"\n    },\n    \"read-package-json\": {\n      \"version\": \"2.0.4\",\n      \"from\": \"read-package-json@2.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/read-package-json/-/read-package-json-2.0.4.tgz\",\n      \"dependencies\": {\n        \"glob\": {\n          \"version\": \"6.0.4\",\n          \"from\": \"glob@>=6.0.0 <7.0.0\",\n          \"resolved\": \"https://registry.npmjs.org/glob/-/glob-6.0.4.tgz\"\n        },\n        \"minimatch\": {\n          \"version\": \"3.0.3\",\n          \"from\": \"minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0\",\n          \"resolved\": \"https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz\"\n        }\n      }\n    },\n    \"rimraf\": {\n      \"version\": \"2.5.2\",\n      \"from\": \"rimraf@2.5.2\",\n      \"resolved\": \"https://registry.npmjs.org/rimraf/-/rimraf-2.5.2.tgz\",\n      \"dependencies\": {\n        \"glob\": {\n          \"version\": \"7.0.5\",\n          \"from\": \"glob@>=7.0.0 <8.0.0\",\n          \"resolved\": \"https://registry.npmjs.org/glob/-/glob-7.0.5.tgz\",\n          \"dependencies\": {\n            \"fs.realpath\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"fs.realpath@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz\"\n            },\n            \"inflight\": {\n              \"version\": \"1.0.5\",\n              \"from\": \"inflight@>=1.0.4 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz\",\n              \"dependencies\": {\n                \"wrappy\": {\n                  \"version\": \"1.0.2\",\n                  \"from\": \"wrappy@>=1.0.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz\"\n                }\n              }\n            },\n            \"inherits\": {\n              \"version\": \"2.0.1\",\n              \"from\": \"inherits@>=2.0.0 <3.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz\"\n            },\n            \"minimatch\": {\n              \"version\": \"3.0.2\",\n              \"from\": \"minimatch@>=3.0.2 <4.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz\",\n              \"dependencies\": {\n                \"brace-expansion\": {\n                  \"version\": \"1.1.5\",\n                  \"from\": \"brace-expansion@>=1.0.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz\",\n                  \"dependencies\": {\n                    \"balanced-match\": {\n                      \"version\": \"0.4.1\",\n                      \"from\": \"balanced-match@>=0.4.1 <0.5.0\",\n                      \"resolved\": \"https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.1.tgz\"\n                    },\n                    \"concat-map\": {\n                      \"version\": \"0.0.1\",\n                      \"from\": \"concat-map@0.0.1\",\n                      \"resolved\": \"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz\"\n                    }\n                  }\n                }\n              }\n            },\n            \"once\": {\n              \"version\": \"1.3.3\",\n              \"from\": \"once@>=1.3.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/once/-/once-1.3.3.tgz\",\n              \"dependencies\": {\n                \"wrappy\": {\n                  \"version\": \"1.0.2\",\n                  \"from\": \"wrappy@>=1.0.0 <2.0.0\",\n                  \"resolved\": \"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz\"\n                }\n              }\n            },\n            \"path-is-absolute\": {\n              \"version\": \"1.0.0\",\n              \"from\": \"path-is-absolute@>=1.0.0 <2.0.0\",\n              \"resolved\": \"https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz\"\n            }\n          }\n        }\n      }\n    },\n    \"semver\": {\n      \"version\": \"5.3.0\",\n      \"from\": \"semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0||>=5.0.0 <6.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/semver/-/semver-5.3.0.tgz\"\n    },\n    \"sigmund\": {\n      \"version\": \"1.0.1\",\n      \"from\": \"sigmund@>=1.0.0 <1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz\"\n    },\n    \"spdx-correct\": {\n      \"version\": \"1.0.2\",\n      \"from\": \"spdx-correct@>=1.0.0 <1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz\"\n    },\n    \"spdx-expression-parse\": {\n      \"version\": \"1.0.4\",\n      \"from\": \"spdx-expression-parse@>=1.0.0 <1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz\"\n    },\n    \"spdx-license-ids\": {\n      \"version\": \"1.2.2\",\n      \"from\": \"spdx-license-ids@>=1.0.2 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz\"\n    },\n    \"supports-color\": {\n      \"version\": \"1.2.0\",\n      \"from\": \"supports-color@1.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz\"\n    },\n    \"tar\": {\n      \"version\": \"2.2.1\",\n      \"from\": \"tar@>=2.1.1 <3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/tar/-/tar-2.2.1.tgz\"\n    },\n    \"tar.gz\": {\n      \"version\": \"1.0.2\",\n      \"from\": \"tar.gz@1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/tar.gz/-/tar.gz-1.0.2.tgz\"\n    },\n    \"tmp\": {\n      \"version\": \"0.0.31\",\n      \"from\": \"tmp@0.0.31\",\n      \"resolved\": \"https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz\"\n    },\n    \"to-iso-string\": {\n      \"version\": \"0.0.2\",\n      \"from\": \"to-iso-string@0.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz\"\n    },\n    \"type-detect\": {\n      \"version\": \"1.0.0\",\n      \"from\": \"type-detect@>=1.0.0 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz\"\n    },\n    \"validate-npm-package-license\": {\n      \"version\": \"3.0.1\",\n      \"from\": \"validate-npm-package-license@>=3.0.1 <4.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz\"\n    },\n    \"wrappy\": {\n      \"version\": \"1.0.2\",\n      \"from\": \"wrappy@>=1.0.0 <2.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz\"\n    }\n  }\n}\n"
  },
  {
    "path": "npmbox.js",
    "content": "// npmbox by Glen R. Goodwin (@areinet)\n// https://github.com/arei/npmbox.git\n\n// Creates an archive \"box\" of one or more npm packages and their dependencies.\n\n\"use strict\";\n\nvar boxxer = require(\"./npmboxxer.js\");\n\nvar argv = require(\"optimist\")\n\t.string([\n\t\t\"proxy\",\n\t\t\"https-proxy\"\n\t])\n\t.boolean([\"v\",\"verbose\",\"s\",\"silent\"])\n\t.options(\"t\", {\n\t\talias: \"target\",\n\t\tdefault: null\n\t})\n\t.argv;\n\nvar args = argv._;\nif (args.length<1 || argv.help) {\n\tconsole.log(\"npmbox - Create an archive for offline installation of the given package.\");\n\tconsole.log(\"\");\n\tconsole.log(\"Usage: \");\n\tconsole.log(\"\");\n\tconsole.log(\"  npmbox --help\");\n\tconsole.log(\"  npmbox [options] <package> <package>...\");\n\tconsole.log(\"\");\n\tconsole.log(\"Options:\");\n\tconsole.log(\"\");\n\tconsole.log(\"  -v, --verbose         Shows additional output which is normally hidden.\");\n\tconsole.log(\"  -s, --silent          Hide all output.\");\n\tconsole.log(\"  -t, --target          Specify the target .npmbox file to write.\");\n\tconsole.log(\"  --proxy=<url>         npm --proxy switch.\");\n\tconsole.log(\"  --https-proxy=<url>   npm --https-proxy switch.\");\n\tconsole.log(\"\");\n\tprocess.exit(0);\n}\n\nvar options = {\n\tverbose: argv.v || argv.verbose || false,\n\tsilent: argv.s || argv.silent || false,\n\ttarget: argv.t || argv.target || null,\n\tproxy: argv.proxy || null,\n\t\"https-proxy\": argv[\"https-proxy\"] || null\n};\n\nvar sources = args;\n\nvar complete = function(err) {\n\tif (err) console.log(\"\\nERROR: \",err,\"\\n\\nnpmbox halted.\");\n\tprocess.reallyExit(err?1:0);\n};\n\nsources = sources.filter(function(source){\n\treturn !!source;\n});\nif (sources && sources.length>0) {\n\tif (!options.silent) console.log(\"\\nBoxing \"+sources.join(\", \")+\"...\");\n\tboxxer.box(sources,options,complete);\n}\nelse complete();\n"
  },
  {
    "path": "npmboxxer.js",
    "content": "// npmbox by Glen R. Goodwin (@areinet)\n// https://github.com/arei/npmbox.git\n\n// Shared code for npmbox/npmunbox\n\n\"use strict\";\n\n(function(){\n\tvar npm = require(\"npm\");\n\tvar fs = require(\"fs\");\n\tvar fsx = require(\"fs-extra\");\n\tvar path = require(\"path\");\n\tvar readJson = require(\"read-package-json\");\n\tvar targz = require(\"tar.gz\");\n\tvar tmp = require(\"tmp\");\n\tvar is = require(\"is\");\n\tvar npa = require(\"npm-package-arg\");\n\n\t// Tell the `tmp` package to try to delete temporary files even when the\n\t// process exits with an error.\n\ttmp.setGracefulCleanup();\n\n\t// Make the main temporary directory and two subdirectories for box contents\n\t// and additional workspace (respectively). `unsafeCleanup` just means that\n\t// the directory should be removed on process exit even if it's not empty.\n\tvar tmpDir = tmp.dirSync({prefix: \"npmbox-\", unsafeCleanup: true});\n\tvar cache = path.resolve(tmpDir.name,\"cache\",\".npmbox.cache\");\n\tvar work = path.resolve(tmpDir.name,\"work\");\n\tfsx.mkdirsSync(cache);\n\tfsx.mkdirsSync(work);\n\n\t// This takes an install target (typically a simple package name, but\n\t// sometimes a path or a general URL) and converts it into a form that is\n\t// suitable as a simple filesystem component (name without slashes),\n\t// including a `.npmbox` suffix.\n\tvar encodeTarget = function(target) {\n\t\treturn encodeURIComponent(target)+\".npmbox\";\n\t};\n\n\t// This reverses the action of `encodeTarget()`, and also strips away the\n\t// directory prefix.\n\tvar decodeTarget = function(encoded) {\n\t\tencoded = path.basename(encoded).replace(/\\.npmbox$/, \"\");\n\t\treturn decodeURIComponent(encoded);\n\t};\n\n\tvar cleanAll = function(callback) {\n\t\tif (fs.existsSync(tmpDir.name)) fsx.remove(tmpDir.name,callback);\n\t\telse callback();\n\t};\n\n\t// Given a key/value pair from a dependency map (e.g. in a `package.json`\n\t// file), return the dependency name. In the case of an implied name in the\n\t// value, that is, a usual package dependency (e.g. `\"foo\": \"^1.2\"`), this\n\t// joins the key and value with an `@`. When the value is fully specified,\n\t// this just returns the value.\n\tvar fixDependency = function(key,value) {\n\t\tvar parsed = npa(value); // We use npm's own mechanism to decide.\n\t\tif (parsed.name===null) return key+\"@\"+value;\n\t\telse return value;\n\t};\n\n\t// Given a dependency map (e.g. from a `package.json` file), return a list\n\t// of the full dependency names. Returns an empty list if given `null`.\n\tvar listDependencies = function(depMap) {\n\t\tvar result = [];\n\t\tvar keys = Object.keys(depMap||{});\n\t\tfor (var i = 0; i<keys.length; i++) {\n\t\t\tvar k = keys[i];\n\t\t\tresult.push(fixDependency(k,depMap[k]));\n\t\t}\n\t\treturn result;\n\t};\n\n\tvar tarCreate = function(source,target,callback) {\n\t\tnew targz().compress(source,target,callback);\n\t};\n\n\tvar tarExtract = function(source,target,callback) {\n\t\t// Unfortunately, the `tar.gz` package at v1.0.2 will sometimes make its\n\t\t// callback before it's done extracting all the files, but _later_\n\t\t// versions of the package have other bugs that prevent extraction from\n\t\t// working at all. What we do here is keep checking the contents of the\n\t\t// directory (recursive walk) until they settle.\n\n\t\tvar prevSize = -1; // Total size we found on the most recent iteration.\n\n\t\tvar checkIfDone = function(err) {\n\t\t\tif (err) return callback(err);\n\n\t\t\tvar totalSize = 0; // Total size of all files in the target dir.\n\t\t\tfsx.walk(target)\n\t\t\t\t.on(\"readable\",function(){\n\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\tvar item = this.read();\n\t\t\t\t\t\tif (!item) break;\n\t\t\t\t\t\ttotalSize += item.stats.isFile() ? item.stats.size : 1;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on(\"end\",function(){\n\t\t\t\t\tif (totalSize === prevSize) {\n\t\t\t\t\t\t// Contents have not changed in size since the previous\n\t\t\t\t\t\t// iteration. Done!\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Contents have changed. Note the new size, delay a\n\t\t\t\t\t\t// moment, and then check again.\n\t\t\t\t\t\tprevSize = totalSize;\n\t\t\t\t\t\tsetTimeout(checkIfDone,250);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on(\"error\",function(err){\n\t\t\t\t\treturn callback(err);\n\t\t\t\t});\n\t\t};\n\n\t\tnew targz().extract(source,target,checkIfDone);\n\t};\n\n\tvar npmInit = function(options,callback) {\n\t\tnpm.load(options,callback);\n\t};\n\n\tvar npmInstall = function(source,callback) {\n\t\tif (!is.array(source)) source = [source];\n\n\t\tvar cl = console.log;\n\t\tconsole.log = function() {};\n\t\tnpm.commands.install(source,function() {\n\t\t\tconsole.log = cl;\n\t\t\tcallback.apply(this,arguments);\n\t\t});\n\t};\n\n\tvar npmDependencies = function(packageName,options,callback) {\n\t\tif (!packageName) return callback(null);\n\n\t\tvar checked = {};\n\t\tvar results = {};\n\t\tvar pending = [];\n\n\t\tvar done = function(packageName) {\n\t\t\tpending = pending.filter(function(p){\n\t\t\t\treturn p!==packageName;\n\t\t\t});\n\t\t\tif (pending.length>0) return;\n\n\t\t\tvar deps = Object.keys(results);\n\t\t\tdeps = deps.sort();\n\n\t\t\tcallback(null,deps);\n\t\t};\n\n\t\tvar lookupPackageDependencies = function(packageInfo) {\n\t\t\tvar children = [];\n\t\t\tif (packageInfo.dependencies) {\n\t\t\t\tObject.keys(packageInfo.dependencies).forEach(function(key){\n\t\t\t\t\tvar value = packageInfo.dependencies[key];\n\t\t\t\t\tif (key && value) children.push(key+\"@\"+value);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (packageInfo.optionalDependencies) {\n\t\t\t\tObject.keys(packageInfo.optionalDependencies).forEach(function(key){\n\t\t\t\t\tvar value = packageInfo.optionalDependencies[key];\n\t\t\t\t\tif (key && value) children.push(key+\"@\"+value);\n\t\t\t\t});\n\t\t\t}\n\t\t\t// if (packageInfo.devDependencies) {\n\t\t\t// \tObject.keys(packageInfo.devDependencies).forEach(function(key){\n\t\t\t// \t\tvar value = packageInfo.devDependencies[key];\n\t\t\t// \t\tif (key && value) children.push(key+\"@\"+value);\n\t\t\t// \t});\n\t\t\t// }\n\n\t\t\tchildren.forEach(function(childPackageName){\n\t\t\t\tlookup(childPackageName);\n\t\t\t});\n\t\t};\n\n\t\tvar lookup = function(packageName) {\n\t\t\tif (checked[packageName]) return;\n\n\t\t\tpending.push(packageName);\n\t\t\tchecked[packageName] = true;\n\n\t\t\tvar args = [packageName];\n\n\t\t\tif (!options.silent) console.log(\"  Querying \"+packageName);\n\n\t\t\tvar packageDetails = npa(packageName);\n\t\t\tvar packageType = packageDetails && packageDetails.type || null;\n\n\t\t\tif(packageType===\"git\" || packageType===\"hosted\" || packageType===\"local\") {\n\t\t\t\tnpm.commands.cache.add(packageName,null,null,false,function(err,packageInfo) {\n\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\tlookupPackageDependencies(packageInfo);\n\n\t\t\t\t\tdone(packageName);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnpm.commands.view(args,true,function(err,deps){\n\t\t\t\t\tif (err && err.statusCode && err.statusCode===404) return done(packageName);\n\t\t\t\t\tif (err) return callback(err);\n\t\t\t\t\tif (!deps) return callback(\"Package '\"+packageName+\"' was not found in npm.\");\n\n\t\t\t\t\tvar found = Object.keys(deps).slice(-1)[0]; // we want the last entry.\n\t\t\t\t\tif (found) {\n\t\t\t\t\t\tvar fullname = packageDetails && packageDetails.name || packageName;\n\t\t\t\t\t\tfullname += \"@\"+found;\n\t\t\t\t\t\tresults[fullname] = true;\n\n\t\t\t\t\t\tlookupPackageDependencies(deps[found]);\n\t\t\t\t\t}\n\n\t\t\t\t\tdone(packageName);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tlookup(packageName);\n\t};\n\n\tvar npmDownload = function(packageNames,options,callback) {\n\t\tif (!packageNames) return callback(null);\n\t\tif (!is.array(packageNames)) packageNames = [packageNames];\n\n\t\tvar pending = [].concat(packageNames);\n\n\t\tvar done = function(packageName) {\n\t\t\tpending = pending.filter(function(p){\n\t\t\t\treturn p!==packageName;\n\t\t\t});\n\t\t\tif (pending.length>0) return;\n\t\t\tcallback(null,packageNames);\n\t\t};\n\n\t\tvar populate = function(packageName) {\n\t\t\tif (!options.silent) console.log(\"  Downloading \"+packageName);\n\n\t\t\t//npm.commands.cache.add(name,ver,where,scrub,cb)\n\t\t\tnpm.commands.cache.add(packageName,null,null,false,function(err){\n\t\t\t\tif (err) return callback(\"Error occurred downloading '\"+packageName+\"' to cache.\");\n\t\t\t\tdone(packageName);\n\t\t\t});\n\n\t\t};\n\n\t\tpackageNames.forEach(function(packageName){\n\t\t\tpopulate(packageName);\n\t\t});\n\t};\n\n\tvar box = function(source,options,callback) {\n\t\tvar done = function(err) {\n\t\t\tcleanAll(function(){\n\t\t\t\tcallback.call(this,err);\n\t\t\t});\n\t\t};\n\n\t\tvar next = function() {\n\t\t\tsource = sources.shift();\n\n\t\t\tif (!source) pack();\n\t\t\telse if (source.match(/\\.json$/)) {\n\t\t\t\t// `source` names a JSON file, assumed to be in `package.json` format. Read it and extract its\n\t\t\t\t// dependencies. Add them to the `sources`, and then keep on boxing.\n\t\t\t\treadJson(source, console.log, function(err, obj){\n\t\t\t\t\tif (err) return done(err);\n\t\t\t\t\tsources = sources.concat(\n\t\t\t\t\t\tlistDependencies(obj.dependencies),\n\t\t\t\t\t\tlistDependencies(obj.optionalDependencies),\n\t\t\t\t\t\tlistDependencies(obj.bundledDependencies));\n\t\t\t\t\tnext();\n\t\t\t\t});\n\t\t\t}\n\t\t\telse extractPackageName();\n\t\t};\n\n\t\tvar pack = function() {\n\t\t\tif (!options.silent) console.log(\"  Packing \"+target+\"...\");\n\n\t\t\ttarCreate(cache,target,function(err){\n\t\t\t\tif (err) return done(err);\n\t\t\t\tdone();\n\t\t\t});\n\t\t};\n\n\t\tvar stack = function(deps) {\n\t\t\tnpmDownload(deps,options,function(err){\n\t\t\t\tif (err) return done(err);\n\t\t\t\tnext();\n\t\t\t});\n\t\t};\n\n\t\tvar rack = function(packageName) {\n\t\t\t// **Note:** The given `packageName` is the same as the `source` for regular packages (that come from the\n\t\t\t// registry), but in other cases (hosted, git, local) the name is instead constructed to refer to the\n\t\t\t// package by its name and version as stored in the cache.\n\t\t\tvar flagfile = path.resolve(cache,encodeTarget(packageName));\n\t\t\tfs.writeFileSync(flagfile,packageName);\n\n\t\t\tnpmDependencies(source,options,function(err,deps){\n\t\t\t\tif (err) return done(err);\n\t\t\t\tstack(deps);\n\t\t\t});\n\t\t};\n\n\t\tvar setTarget = function (packageName) {\n\t\t\ttarget = path.resolve(packageName+\".npmbox\");\n\t\t\tif (fs.existsSync(target)) {\n\t\t\t\treturn done(\"An .npmbox file already exists with this name.  Please remove it and try again.\");\n\t\t\t}\n\t\t};\n\n\t\tvar extractPackageName = function() {\n\t\t\tvar packageType;\n\t\t\ttry {\n\t\t\t\tpackageType = npa(source).type;\n\t\t\t}\n\t\t\tcatch(e) {\n\t\t\t\treturn done(e);\n\t\t\t}\n\n\t\t\tif (packageType===\"git\" || packageType===\"hosted\" || packageType===\"local\") {\n\t\t\t\tvar doingWhat = (packageType===\"local\") ? \"Copying\" : \"Cloning\";\n\t\t\t\tconsole.log(\"  \"+doingWhat+\" \"+source);\n\t\t\t\tnpm.commands.cache.add(source,null,null,false,function(err,packageInfo) {\n\t\t\t\t\tif (err) return done(err);\n\t\t\t\t\tif (packageInfo && packageInfo.name && packageInfo.version) {\n\t\t\t\t\t\tif (!target) setTarget(path.basename(packageInfo.name));\n\t\t\t\t\t\t// Because we just want to take the package from the cache when unboxing, instead of referring\n\t\t\t\t\t\t// to the original `source` (which might be a local path or network reference), we instead\n\t\t\t\t\t\t// rewrite it in a form that gets explicitly recognized while unboxing.\n\t\t\t\t\t\track(\"file:\"+packageInfo.name+\"-\"+packageInfo.version+\".tgz\");\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treturn done(\"Package has no name or no version\");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!target) setTarget(npa(source).escapedName);  // escapedName is necessary to support scoped packages\n\t\t\t\track(source);\n\t\t\t}\n\t\t};\n\n\t\tvar init = function() {\n\t\t\tvar npmoptions = {\n\t\t\t\tcache: cache,\n\t\t\t\tprefix: work,\n\t\t\t\tglobal: true,\n\t\t\t\toptional: true,\n\t\t\t\tforce: true,\n\t\t\t\tprogress: false,\n\t\t\t\tcolor: false,\n\t\t\t\t\"ignore-scripts\": true,\n\t\t\t\tloglevel: options && options.verbose ? \"http\" : \"silent\"\n\t\t\t};\n\t\t\tif (options.proxy) npmoptions.proxy = options.proxy;\n\t\t\tif (options[\"https-proxy\"]) npmoptions[\"https-proxy\"] = options[\"https-proxy\"];\n\n\t\t\tnpmInit(npmoptions,function(err){\n\t\t\t\tif (err) return done(err);\n\t\t\t\tnext();\n\t\t\t});\n\t\t};\n\n\t\tvar target = options.target && path.resolve(options.target) || null;\n\t\tif (target) setTarget(target);\n\n\t\tvar sources = source && source instanceof Array && source || source && [source] || [];\n\n\t\tinit();\n\t};\n\n\t// This _just_ unpacks the indicated box into the working cache directory.\n\tvar unpack = function(source,options,callback) {\n\t\tif (!fs.existsSync(source)) {\n\t\t\tsource = path.resolve(options.path,source+\".npmbox\");\n\t\t\tif (!fs.existsSync(source)) {\n\t\t\t\tcallback(\"No .npmbox file found: \"+source);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (!options.silent) console.log(\"  Unpacking \"+source+\"...\");\n\n\t\t// `dirname` to go up one layer because the top level of the box\n\t\t// archive is `.npmbox.cache`.\n\t\ttarExtract(source,path.dirname(cache),function(err){\n\t\t\tif (err) {\n\t\t\t\t// var packageName = path.basename(target);\n\t\t\t\tif (!options.silent) console.log(\"An error occurred while unpacking \"+source+\".\");\n\t\t\t\tif (!options.silent) console.log(source+\" was not processed.\");\n\t\t\t\tif (options.verbose) console.log(err);\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tcallback();\n\t\t});\n\t};\n\n\t// Initialize npm for unboxing operations.\n\tvar npmInitForUnbox = function(options,callback){\n\t\toptions.cache = cache;\n\t\toptions.loglevel = options.verbose ? \"verbose\" : \"silent\";\n\t\toptions.progress = false;\n\t\toptions.color = false;\n\t\toptions[\"cache-min\"] = 1000 * 365.25 * 24 * 60 * 60; // a thousand years\n\t\toptions[\"fetch-retries\"] = 0;\n\t\toptions[\"fetch-retry-factor\"] = 0;\n\t\toptions[\"fetch-retry-mintimeout\"] = 1;\n\t\toptions[\"fetch-retry-maxtimeout\"] = 2;\n\n\t\tnpmInit(options,callback);\n\t};\n\n\t// This _just_ installs the given package, using whatever cache has been\n\t// upacked.\n\tvar installPackage = function(target,options,callback) {\n\t\tif (!options.silent) console.log(\"  Installing \"+target+\"...\");\n\n\t\tif (target.match(/^file:/)) {\n\t\t\t// This is a target that was originally included via a local path or network-based name (URL, git ID).\n\t\t\t// Move the cached package out of the cache before installing, because otherwise `npm` will have trouble\n\t\t\t// figuring out what to do. (It doesn't like being asked to install from cache paths.)\n\t\t\tvar parts = target.match(/^file:((.+)-(.+)\\.tgz)$/);\n\t\t\tvar fullName = parts[1];\n\t\t\tvar name = parts[2];\n\t\t\tvar version = parts[3];\n\t\t\ttarget = path.resolve(work,fullName);\n\t\t\tfs.renameSync(path.resolve(cache,name,version,\"package.tgz\"),target);\n\t\t\ttarget = \"file:\"+target;\n\t\t}\n\n\t\tnpmInstall(target,function(err){\n\t\t\tif (err) {\n\t\t\t\tif (!options.silent) console.log(\"An error occurred while installing \"+target+\".\");\n\t\t\t\tif (!options.silent) console.log(target+\" was not installed.\");\n\t\t\t\tif (options.verbose) console.log(err);\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tcallback();\n\t\t});\n\t}\n\n\tvar unbox = function(source,options,callback) {\n\t\tvar targets = [];\n\t\tvar target = null;\n\n\t\tvar done = function(err) {\n\t\t\tif (!options.silent) console.log(\"  Done.\");\n\t\t\tcleanAll(function(){\n\t\t\t\tcallback(err);\n\t\t\t});\n\t\t};\n\n\t\tvar next = function(err) {\n\t\t\tif (err) return done(err);\n\n\t\t\ttarget = targets.shift();\n\t\t\tif (!target) return done();\n\n\t\t\tinstallPackage(target,options,next);\n\t\t};\n\n\t\tvar getTargets = function() {\n\t\t\ttargets = {};\n\n\t\t\tfs.readdir(cache,function(err,files){\n\t\t\t\tif (err) return done(err);\n\n\t\t\t\tfiles.filter(function(file){\n\t\t\t\t\treturn file.match(/\\.npmbox$/);\n\t\t\t\t}).forEach(function(file){\n\t\t\t\t\tfile = path.basename(file).replace(/\\.npmbox$/,\"\");\n\t\t\t\t\ttargets[decodeTarget(file)] = true;\n\t\t\t\t});\n\n\t\t\t\ttargets = Object.keys(targets);\n\t\t\t\tif (targets.length === 0) {\n\t\t\t\t\t// This is a legacy `.npmbox` file which instead of having embedded flag files just uses the name of\n\t\t\t\t\t// the archive file to determine what to install.\n\t\t\t\t\ttargets = [path.basename(source).replace(/\\.npmbox$/,\"\")];\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t});\n\t\t};\n\n\t\tvar doUnpack = function(err) {\n\t\t\tif (err) return done(err);\n\t\t\tunpack(source,options,function(err){\n\t\t\t\tif (err) return done(err);\n\t\t\t\tgetTargets();\n\t\t\t});\n\t\t};\n\n\t\tnpmInitForUnbox(options,doUnpack);\n\t};\n\n\t// Installs a single package, assuming that the cache has already been\n\t// set up. This supports the `--install` option to `npmunbox`.\n\tvar install = function(target,options,callback) {\n\t\tvar done = function(err) {\n\t\t\tif (!options.silent) console.log(\"  Done.\");\n\t\t\tcleanAll(function(){\n\t\t\t\tcallback(err);\n\t\t\t});\n\t\t};\n\n\t\tvar doInstall = function(err) {\n\t\t\tif (err) return done(err);\n\t\t\tinstallPackage(target,options,done);\n\t\t};\n\n\t\tnpmInitForUnbox(options,doInstall);\n\t};\n\n\tvar cleanup = function(callback) {\n\t\tcleanAll(function(err){\n\t\t\tcallback(err);\n\t\t});\n\t};\n\n\tmodule.exports = {\n\t\tbox: box,\n\t\tunbox: unbox,\n\t\tunpack: unpack,\n\t\tinstall: install,\n\t\tcleanup: cleanup\n\t};\n\n})();\n"
  },
  {
    "path": "npmunbox.js",
    "content": "// npmbox by Glen R. Goodwin (@areinet)\n// https://github.com/arei/npmbox.git\n\n// Extracts an .npmbox file and installs the contained package.\n\n\"use strict\";\n\nvar boxxer = require(\"./npmboxxer.js\");\nvar utils = require(\"./utils\");\n\nvar argv = require(\"optimist\")\n\t.string([\n\t\t\"C\",\"prefix\",\n\t\t\"proxy\",\n\t\t\"https-proxy\"\n\t])\n\t.boolean([\n\t\t\"v\",\"verbose\",\n\t\t\"s\",\"silent\",\n\t\t\"g\",\"global\",\n\t\t\"scripts\",\n\t\t\"S\",\"save\",\n\t\t\"D\",\"save-dev\",\n\t\t\"O\",\"save-optional\",\n\t\t\"B\",\"save-bundle\",\n\t\t\"E\",\"save-exact\"\n\t])\n\t.options(\"p\", {\n\t\talias: \"path\",\n\t\tdefault: process.cwd()\n\t})\n\t.options(\"i\", {\n\t\talias: \"install\"\n\t})\n\t.argv;\n\nvar args = argv._;\nif (args.length<1 || argv.help) {\n\tconsole.log(\"npmunbox - Extracts one or more .npmbox files and installs the contained package(s).\");\n\tconsole.log(\"\");\n\tconsole.log(\"Usage: \");\n\tconsole.log(\"\");\n\tconsole.log(\"  npmunbox --help\");\n\tconsole.log(\"  npmunbox [options] <nmpbox-file> <npmbox-file>...\");\n\tconsole.log(\"\");\n\tconsole.log(\"Options:\");\n\tconsole.log(\"\");\n\tconsole.log(\"  -v, --verbose         Shows npm output which is normally hidden.\");\n\tconsole.log(\"  -s, --silent          Hide all output.\");\n\tconsole.log(\"  -p, --path            Specify the path to a folder from which the .npmbox file(s) will be read.\");\n\tconsole.log(\"  -i, --install=<pkg>   Installs the indicated package instead of using the .npmbox manifest.\");\n\tconsole.log(\"  --scripts             Enable running of scripts during installation.\");\n\tconsole.log(\"  -g, --global          Installs package(s) globally as if --global was passed to npm.\");\n\tconsole.log(\"  -C, --prefix          npm --prefix switch.\");\n\tconsole.log(\"  -S, --save            npm --save switch.\");\n\tconsole.log(\"  -D, --save-dev        npm --save-dev switch.\");\n\tconsole.log(\"  -O, --save-optional   npm --save-optional switch.\");\n\tconsole.log(\"  -B, --save-bundle     npm --save-bundle switch.\");\n\tconsole.log(\"  -E, --save-exact      npm --save-exact switch.\");\n\tconsole.log(\"  --proxy=<url>         npm --proxy switch.\");\n\tconsole.log(\"  --https-proxy=<url>   npm --https-proxy switch.\");\n\tconsole.log(\"\");\n\tprocess.exit(0);\n}\n\nvar options = {\n\tverbose: argv.v || argv.verbose || false,\n\tsilent: argv.s || argv.silent || false,\n\tglobal: argv.g || argv.global || false,\n\tsave: argv.S || argv.save || false,\n\t\"save-dev\": argv.D || argv[\"save-dev\"] || false,\n\t\"save-optional\": argv.O || argv[\"save-optional\"] || false,\n\t\"save-bundle\": argv.B || argv[\"save-bundle\"] || false,\n\t\"save-exact\": argv.E || argv[\"save-exact\"] || false,\n\t\"ignore-scripts\": !argv.scripts,\n\tpath: argv.p || argv.path || false\n};\nif (argv.C || argv.prefix) options.prefix = argv.C || argv.prefix;\nif (argv.proxy) options.proxy = argv.proxy;\nif (argv[\"https-proxy\"]) options[\"https-proxy\"] = argv[\"https-proxy\"];\n\nvar errorCount = 0;\nvar sources = args.filter(function(source){\n\treturn !!source;\n});\n\nvar complete = function() {\n\tboxxer.cleanup(function(){\n\t\tprocess.reallyExit(errorCount);\n\t});\n};\n\nvar reportErrors = function(args) {\n\targs.forEach(function(arg){\n\t\terrorCount += 1;\n\t\tconsole.error(\" \",arg);\n\t});\n}\n\n// Handles the case where we pay attention to the manifests inside the box(es).\nvar unboxFromManifest = function() {\n\tvar unboxDone = function(err) {\n\t\tif (err) reportErrors(utils.flatten(utils.toArray(arguments)));\n\t\tunboxNext();\n\t};\n\n\tvar unboxNext = function() {\n\t\tvar source = sources.shift();\n\t\tif (!source) return complete();\n\n\t\tunboxExecute(source);\n\t};\n\n\tvar unboxExecute = function(source) {\n\t\tif (!options.silent) console.log(\"\\nUnboxing \"+source+\"...\");\n\t\tboxxer.unbox(source,options,unboxDone);\n\t};\n\n\tunboxNext();\n}\n\n// Handles the case where we are installing a package listed via the `--install`\n// option. This unpacks all the boxes (on top of each other) and then does a\n// single `npm install`.\nvar unboxWithInstallOption = function(pkg) {\n\tvar installDone = function(err) {\n\t\tif (err) reportErrors(utils.flatten(utils.toArray(arguments)));\n\t\tcomplete();\n\t};\n\n\tvar unpackDone = function(err) {\n\t\tif (err) {\n\t\t\treportErrors(utils.flatten(utils.toArray(arguments)));\n\t\t\treturn complete();\n\t\t}\n\t\tunpackNext();\n\t};\n\n\tvar unpackNext = function() {\n\t\tvar source = sources.shift();\n\t\tif (source) unpackExecute(source);\n\t\telse {\n\t\t\tboxxer.install(pkg,options,installDone);\n\t\t}\n\t};\n\n\tvar unpackExecute = function(source) {\n\t\tboxxer.unpack(source,options,unpackDone);\n\t};\n\n\tunpackNext();\n}\n\nif (sources.length===0) return complete();\nelse if (argv.install) unboxWithInstallOption(argv.install);\nelse unboxFromManifest();\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"author\": \"Glen R. Goodwin (http://www.arei.net)\",\n  \"name\": \"npmbox\",\n  \"keywords\": [\n    \"npm\",\n    \"npm utility\",\n    \"npm pack\",\n    \"npm package\",\n    \"npm utilities\",\n    \"npm archive\",\n    \"npm unpack\",\n    \"npm zip\",\n    \"npm unzip\",\n    \"unpack\",\n    \"pack\",\n    \"npmbox\",\n    \"npmunbox\",\n    \"zip\",\n    \"unzip\",\n    \"offline\",\n    \"npm offline\",\n    \"offline install\",\n    \"install\",\n    \"install offline\",\n    \"npm install\",\n    \"npm install offline\",\n    \"npm offline install\",\n    \"box\",\n    \"unbox\"\n  ],\n  \"description\": \"npm addon utility for creating and installing from an archive file of an npm install, including dependencies.\",\n  \"version\": \"4.2.1\",\n  \"homepage\": \"http://github.com/arei/npmbox\",\n  \"bugs\": {\n    \"url\": \"http://github.com/arei/npmbox/issues\"\n  },\n  \"license\": \"MIT\",\n  \"licenses\": [\n    {\n      \"type\": \"MIT\",\n      \"url\": \"http://github.com/arei/npmbox/blob/master/LICENSE.txt\"\n    }\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/arei/npmbox.git\"\n  },\n  \"main\": \"npmboxxer.js\",\n  \"bin\": {\n    \"npmbox\": \"./bin/npmbox\",\n    \"npmunbox\": \"./bin/npmunbox\"\n  },\n  \"engines\": {\n    \"node\": \">=4.0.0\"\n  },\n  \"dependencies\": {\n    \"fs-extra\": \"1.0.0\",\n    \"is\": \"3.1.0\",\n    \"npm\": \"3.10.3\",\n    \"npm-package-arg\": \"4.2.0\",\n    \"optimist\": \"0.6.1\",\n    \"read-package-json\": \"2.0.4\",\n    \"tar.gz\": \"1.0.2\",\n    \"tmp\": \"0.0.31\"\n  },\n  \"devDependencies\": {},\n  \"optionalDependencies\": {}\n}\n"
  },
  {
    "path": "utils.js",
    "content": "// npmbox by Glen R. Goodwin (@areinet)\r\n// https://github.com/arei/npmbox.git\r\n\r\n// Utility code for npmbox/npmunbox\r\n\r\n\"use strict\";\r\n\r\nvar is = require(\"is\");\r\n\r\nvar toArray = function(a) {\r\n\treturn Array.prototype.slice.call(a);\r\n};\r\nmodule.exports.toArray = toArray;\r\n\r\nvar flatten = function(a) {\r\n\tif (!is.array(a)) return a;\r\n\ta = a && is.array(a) && a.reduce(function(a,x){\r\n\t\treturn a.concat(flatten(x));\r\n\t},[]);\r\n\treturn a;\r\n};\r\nmodule.exports.flatten = flatten;\r\n\r\n\r\n"
  }
]