diff --git a/node_modules/detect-file/LICENSE b/node_modules/detect-file/LICENSE
new file mode 100644
index 0000000..42f91ca
--- /dev/null
+++ b/node_modules/detect-file/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016-2017, Brian Woodward.
+
+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.
\ No newline at end of file
diff --git a/node_modules/detect-file/README.md b/node_modules/detect-file/README.md
new file mode 100644
index 0000000..dee6311
--- /dev/null
+++ b/node_modules/detect-file/README.md
@@ -0,0 +1,99 @@
+# detect-file [![NPM version](https://img.shields.io/npm/v/detect-file.svg?style=flat)](https://www.npmjs.com/package/detect-file) [![NPM monthly downloads](https://img.shields.io/npm/dm/detect-file.svg?style=flat)](https://npmjs.org/package/detect-file)  [![NPM total downloads](https://img.shields.io/npm/dt/detect-file.svg?style=flat)](https://npmjs.org/package/detect-file) [![Linux Build Status](https://img.shields.io/travis/doowb/detect-file.svg?style=flat&label=Travis)](https://travis-ci.org/doowb/detect-file) [![Windows Build Status](https://img.shields.io/appveyor/ci/doowb/detect-file.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/doowb/detect-file)
+
+> Detects if a file exists and returns the resolved filepath.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save detect-file
+```
+
+Install with [yarn](https://yarnpkg.com):
+
+```sh
+$ yarn add detect-file
+```
+
+## Usage
+
+```js
+var detect = require('detect-file');
+```
+
+## API
+
+### [detect](index.js#L33)
+
+Detect the given `filepath` if it exists.
+
+**Params**
+
+* `filepath` **{String}**: filepath to detect.
+* `options` **{Object}**: Additional options.
+* `options.nocase` **{Boolean}**: Set this to `true` to force case-insensitive filename checks. This is useful on case sensitive file systems.
+* `returns` **{String}**: Returns the detected filepath if it exists, otherwise returns `null`.
+
+**Example**
+
+```js
+var res = detect('package.json');
+console.log(res);
+//=> "package.json"
+
+var res = detect('fake-file.json');
+console.log(res)
+//=> null
+```
+
+## Case sensitive file systems
+
+When using the `nocase` option, this library will attempt to detect the filepath with the following methods:
+
+1. Try to read all files in the `filepath` using `fs.readdirSync`. If successful and `filepath` is a directory, return the `filepath`.
+2. Try to read all files in the `filepath`'s directory using `fs.readdirSync`. If successful, do case insensitive comparasions of the `filepath` to the files in `filepath`'s directory.
+
+## About
+
+### Related projects
+
+[fs-exists-sync](https://www.npmjs.com/package/fs-exists-sync): Drop-in replacement for `fs.existsSync` with zero dependencies. Other libs I found either have crucial differences… [more](https://github.com/jonschlinkert/fs-exists-sync) | [homepage](https://github.com/jonschlinkert/fs-exists-sync "Drop-in replacement for `fs.existsSync` with zero dependencies. Other libs I found either have crucial differences from fs.existsSync, or unnecessary dependencies. See README.md for more info.")
+
+### Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+### Building docs
+
+_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
+
+To generate the readme, run the following command:
+
+```sh
+$ npm install -g verbose/verb#dev verb-generate-readme && verb
+```
+
+### Running tests
+
+Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
+
+```sh
+$ npm install && npm test
+```
+
+### Author
+
+**Brian Woodward**
+
+* [github/doowb](https://github.com/doowb)
+* [twitter/doowb](https://twitter.com/doowb)
+
+### License
+
+Copyright © 2017, [Brian Woodward](https://github.com/doowb).
+Released under the [MIT License](LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on August 05, 2017._
\ No newline at end of file
diff --git a/node_modules/detect-file/index.js b/node_modules/detect-file/index.js
new file mode 100644
index 0000000..c7c47f1
--- /dev/null
+++ b/node_modules/detect-file/index.js
@@ -0,0 +1,109 @@
+/*!
+ * detect-file <https://github.com/doowb/detect-file>
+ *
+ * Copyright (c) 2016-2017, Brian Woodward.
+ * Released under the MIT License.
+ */
+
+'use strict';
+
+var fs = require('fs');
+var path = require('path');
+
+/**
+ * Detect the given `filepath` if it exists.
+ *
+ * ```js
+ * var res = detect('package.json');
+ * console.log(res);
+ * //=> "package.json"
+ *
+ * var res = detect('fake-file.json');
+ * console.log(res)
+ * //=> null
+ * ```
+ *
+ * @param  {String} `filepath` filepath to detect.
+ * @param  {Object} `options` Additional options.
+ * @param  {Boolean} `options.nocase` Set this to `true` to force case-insensitive filename checks. This is useful on case sensitive file systems.
+ * @return {String} Returns the detected filepath if it exists, otherwise returns `null`.
+ * @api public
+ */
+
+module.exports = function detect(filepath, options) {
+  if (!filepath || (typeof filepath !== 'string')) {
+    return null;
+  }
+  if (fs.existsSync(filepath)) {
+    return path.resolve(filepath);
+  }
+
+  options = options || {};
+  if (options.nocase === true) {
+    return nocase(filepath);
+  }
+  return null;
+};
+
+/**
+ * Check if the filepath exists by falling back to reading in the entire directory.
+ * Returns the real filepath (for case sensitive file systems) if found.
+ *
+ * @param  {String} `filepath` filepath to check.
+ * @return {String} Returns found filepath if exists, otherwise null.
+ */
+
+function nocase(filepath) {
+  filepath = path.resolve(filepath);
+  var res = tryReaddir(filepath);
+  if (res === null) {
+    return null;
+  }
+
+  // "filepath" is a directory, an error would be
+  // thrown if it doesn't exist. if we're here, it exists
+  if (res.path === filepath) {
+    return res.path;
+  }
+
+  // "filepath" is not a directory
+  // compare against upper case later
+  // see https://nodejs.org/en/docs/guides/working-with-different-filesystems/
+  var upper = filepath.toUpperCase();
+  var len = res.files.length;
+  var idx = -1;
+
+  while (++idx < len) {
+    var fp = path.resolve(res.path, res.files[idx]);
+    if (filepath === fp || upper === fp) {
+      return fp;
+    }
+    var fpUpper = fp.toUpperCase();
+    if (filepath === fpUpper || upper === fpUpper) {
+      return fp;
+    }
+  }
+
+  return null;
+}
+
+/**
+ * Try to read the filepath as a directory first, then fallback to the filepath's dirname.
+ *
+ * @param  {String} `filepath` path of the directory to read.
+ * @return {Object} Object containing `path` and `files` if succesful. Otherwise, null.
+ */
+
+function tryReaddir(filepath) {
+  var ctx = { path: filepath, files: [] };
+  try {
+    ctx.files = fs.readdirSync(filepath);
+    return ctx;
+  } catch (err) {}
+  try {
+    ctx.path = path.dirname(filepath);
+    ctx.files = fs.readdirSync(ctx.path);
+    return ctx;
+  } catch (err) {}
+  return null;
+}
diff --git a/node_modules/detect-file/package.json b/node_modules/detect-file/package.json
new file mode 100644
index 0000000..60a4598
--- /dev/null
+++ b/node_modules/detect-file/package.json
@@ -0,0 +1,91 @@
+{
+  "_from": "detect-file@^1.0.0",
+  "_id": "detect-file@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+  "_location": "/detect-file",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "detect-file@^1.0.0",
+    "name": "detect-file",
+    "escapedName": "detect-file",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/liftoff/findup-sync"
+  ],
+  "_resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+  "_shasum": "f0d66d03672a825cb1b73bdb3fe62310c8e552b7",
+  "_spec": "detect-file@^1.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\liftoff\\node_modules\\findup-sync",
+  "author": {
+    "name": "Brian Woodward",
+    "url": "https://github.com/doowb"
+  },
+  "bugs": {
+    "url": "https://github.com/doowb/detect-file/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Detects if a file exists and returns the resolved filepath.",
+  "devDependencies": {
+    "gulp-format-md": "*",
+    "mocha": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/doowb/detect-file",
+  "keywords": [
+    "detect",
+    "exists",
+    "file",
+    "file exists",
+    "file-path",
+    "filepath",
+    "path",
+    "resolve",
+    "resolve file",
+    "resolve filepath"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "detect-file",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/doowb/detect-file.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "related": {
+      "list": [
+        "fs-exists-sync"
+      ]
+    },
+    "reflinks": [
+      "verb",
+      "verb-readme-generator"
+    ],
+    "lint": {
+      "reflinks": true
+    }
+  },
+  "version": "1.0.0"
+}
