diff --git a/node_modules/is-negated-glob/LICENSE b/node_modules/is-negated-glob/LICENSE
new file mode 100644
index 0000000..66ae69c
--- /dev/null
+++ b/node_modules/is-negated-glob/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Jon Schlinkert
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/is-negated-glob/README.md b/node_modules/is-negated-glob/README.md
new file mode 100644
index 0000000..c909408
--- /dev/null
+++ b/node_modules/is-negated-glob/README.md
@@ -0,0 +1,73 @@
+# is-negated-glob [![NPM version](https://img.shields.io/npm/v/is-negated-glob.svg?style=flat)](https://www.npmjs.com/package/is-negated-glob) [![NPM downloads](https://img.shields.io/npm/dm/is-negated-glob.svg?style=flat)](https://npmjs.org/package/is-negated-glob) [![Build Status](https://img.shields.io/travis/jonschlinkert/is-negated-glob.svg?style=flat)](https://travis-ci.org/jonschlinkert/is-negated-glob)
+
+> Returns an object with a `negated` boolean and the `!` stripped from negation patterns. Also respects extglobs.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save is-negated-glob
+```
+
+## Usage
+
+```js
+var isNegatedGlob = require('is-negated-glob');
+
+console.log(isNegatedGlob('foo'));
+// { pattern: 'foo', negated: false }
+
+console.log(isNegatedGlob('!foo'));
+// { pattern: 'foo', negated: true }
+
+console.log(isNegatedGlob('!(foo)'));
+// extglob patterns are ignored
+// { pattern: '!(foo)', negated: false }
+```
+
+## About
+
+### Related projects
+
+* [is-extglob](https://www.npmjs.com/package/is-extglob): Returns true if a string has an extglob. | [homepage](https://github.com/jonschlinkert/is-extglob "Returns true if a string has an extglob.")
+* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet")
+* [to-absolute-glob](https://www.npmjs.com/package/to-absolute-glob): Make a glob pattern absolute, ensuring that negative globs and patterns with trailing slashes are… [more](https://github.com/jonschlinkert/to-absolute-glob) | [homepage](https://github.com/jonschlinkert/to-absolute-glob "Make a glob pattern absolute, ensuring that negative globs and patterns with trailing slashes are correctly handled.")
+
+### Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+### Building docs
+
+_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_
+
+To generate the readme and API documentation with [verb](https://github.com/verbose/verb):
+
+```sh
+$ npm install -g verb verb-generate-readme && verb
+```
+
+### Running tests
+
+Install dev dependencies:
+
+```sh
+$ npm install -d && npm test
+```
+
+### Author
+
+**Jon Schlinkert**
+
+* [github/jonschlinkert](https://github.com/jonschlinkert)
+* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
+
+### License
+
+Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT license](https://github.com/jonschlinkert/is-negated-glob/blob/master/LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.1.30, on September 08, 2016._
\ No newline at end of file
diff --git a/node_modules/is-negated-glob/index.js b/node_modules/is-negated-glob/index.js
new file mode 100644
index 0000000..d1c060d
--- /dev/null
+++ b/node_modules/is-negated-glob/index.js
@@ -0,0 +1,15 @@
+'use strict';
+
+module.exports = function(pattern) {
+  if (typeof pattern !== 'string') {
+    throw new TypeError('expected a string');
+  }
+
+  var glob = { negated: false, pattern: pattern, original: pattern };
+  if (pattern.charAt(0) === '!' && pattern.charAt(1) !== '(') {
+    glob.negated = true;
+    glob.pattern = pattern.slice(1);
+  }
+
+  return glob;
+};
diff --git a/node_modules/is-negated-glob/package.json b/node_modules/is-negated-glob/package.json
new file mode 100644
index 0000000..b85a2ba
--- /dev/null
+++ b/node_modules/is-negated-glob/package.json
@@ -0,0 +1,100 @@
+{
+  "_from": "is-negated-glob@^1.0.0",
+  "_id": "is-negated-glob@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
+  "_location": "/is-negated-glob",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "is-negated-glob@^1.0.0",
+    "name": "is-negated-glob",
+    "escapedName": "is-negated-glob",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/glob-stream",
+    "/to-absolute-glob"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
+  "_shasum": "6910bca5da8c95e784b5751b976cf5a10fee36d2",
+  "_spec": "is-negated-glob@^1.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\glob-stream",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/is-negated-glob/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Returns an object with a `negated` boolean and the `!` stripped from negation patterns. Also respects extglobs.",
+  "devDependencies": {
+    "gulp-format-md": "^0.1.10",
+    "mocha": "^3.0.2"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js",
+    "LICENSE",
+    "README.md"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-negated-glob",
+  "keywords": [
+    "extglob",
+    "glob",
+    "inverse",
+    "inverted",
+    "is",
+    "is-glob",
+    "match",
+    "micromatch",
+    "negate",
+    "negated",
+    "negation",
+    "negative",
+    "pattern",
+    "test"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "is-negated-glob",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-negated-glob.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "related": {
+      "list": [
+        "is-extglob",
+        "is-glob",
+        "to-absolute-glob"
+      ]
+    },
+    "reflinks": [
+      "verb",
+      "verb-generate-readme"
+    ],
+    "lint": {
+      "reflinks": true
+    }
+  },
+  "version": "1.0.0"
+}
