diff --git a/node_modules/unset-value/LICENSE b/node_modules/unset-value/LICENSE
new file mode 100644
index 0000000..ec85897
--- /dev/null
+++ b/node_modules/unset-value/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015, 2017, 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/unset-value/README.md b/node_modules/unset-value/README.md
new file mode 100644
index 0000000..f0fec3d
--- /dev/null
+++ b/node_modules/unset-value/README.md
@@ -0,0 +1,131 @@
+# unset-value [![NPM version](https://img.shields.io/npm/v/unset-value.svg?style=flat)](https://www.npmjs.com/package/unset-value) [![NPM monthly downloads](https://img.shields.io/npm/dm/unset-value.svg?style=flat)](https://npmjs.org/package/unset-value)  [![NPM total downloads](https://img.shields.io/npm/dt/unset-value.svg?style=flat)](https://npmjs.org/package/unset-value) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/unset-value.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/unset-value)
+
+> Delete nested properties from an object using dot notation.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save unset-value
+```
+
+## Usage
+
+```js
+var unset = require('unset-value');
+
+var obj = {a: {b: {c: 'd', e: 'f'}}};
+unset(obj, 'a.b.c');
+console.log(obj);
+//=> {a: {b: {e: 'f'}}};
+```
+
+## Examples
+
+### Updates the object when a property is deleted
+
+```js
+var obj = {a: 'b'};
+unset(obj, 'a');
+console.log(obj);
+//=> {}
+```
+
+### Returns true when a property is deleted
+
+```js
+unset({a: 'b'}, 'a') // true
+```
+
+### Returns `true` when a property does not exist
+
+This is consistent with `delete` behavior in that it does not
+throw when a property does not exist.
+
+```js
+unset({a: {b: {c: 'd'}}}, 'd') // true
+```
+
+### delete nested values
+
+```js
+var one = {a: {b: {c: 'd'}}};
+unset(one, 'a.b');
+console.log(one);
+//=> {a: {}}
+
+var two = {a: {b: {c: 'd'}}};
+unset(two, 'a.b.c');
+console.log(two);
+//=> {a: {b: {}}}
+
+var three = {a: {b: {c: 'd', e: 'f'}}};
+unset(three, 'a.b.c');
+console.log(three);
+//=> {a: {b: {e: 'f'}}}
+```
+
+### throws on invalid args
+
+```js
+unset();
+// 'expected an object.'
+```
+
+## About
+
+### Related projects
+
+* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value "Use property paths (`a.b.c`) to get a nested value from an object.")
+* [get-values](https://www.npmjs.com/package/get-values): Return an array of all values from the given object. | [homepage](https://github.com/jonschlinkert/get-values "Return an array of all values from the given object.")
+* [omit-value](https://www.npmjs.com/package/omit-value): Omit properties from an object or deeply nested property of an object using object path… [more](https://github.com/jonschlinkert/omit-value) | [homepage](https://github.com/jonschlinkert/omit-value "Omit properties from an object or deeply nested property of an object using object path notation.")
+* [put-value](https://www.npmjs.com/package/put-value): Update only existing values from an object, works with dot notation paths like `a.b.c` and… [more](https://github.com/tunnckocore/put-value#readme) | [homepage](https://github.com/tunnckocore/put-value#readme "Update only existing values from an object, works with dot notation paths like `a.b.c` and support deep nesting.")
+* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value "Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths.")
+* [union-value](https://www.npmjs.com/package/union-value): Set an array of unique values as the property of an object. Supports setting deeply… [more](https://github.com/jonschlinkert/union-value) | [homepage](https://github.com/jonschlinkert/union-value "Set an array of unique values as the property of an object. Supports setting deeply nested properties using using object-paths/dot notation.")
+* [upsert-value](https://www.npmjs.com/package/upsert-value): Update or set nested values and any intermediaries with dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/doowb/upsert-value "Update or set nested values and any intermediaries with dot notation (`'a.b.c'`) paths.")
+
+### Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+### Contributors
+
+| **Commits** | **Contributor** | 
+| --- | --- |
+| 6 | [jonschlinkert](https://github.com/jonschlinkert) |
+| 2 | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) |
+
+### 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
+
+**Jon Schlinkert**
+
+* [github/jonschlinkert](https://github.com/jonschlinkert)
+* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
+
+### License
+
+Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT License](LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.4.2, on February 25, 2017._
\ No newline at end of file
diff --git a/node_modules/unset-value/index.js b/node_modules/unset-value/index.js
new file mode 100644
index 0000000..a919010
--- /dev/null
+++ b/node_modules/unset-value/index.js
@@ -0,0 +1,32 @@
+/*!
+ * unset-value <https://github.com/jonschlinkert/unset-value>
+ *
+ * Copyright (c) 2015, 2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+'use strict';
+
+var isObject = require('isobject');
+var has = require('has-value');
+
+module.exports = function unset(obj, prop) {
+  if (!isObject(obj)) {
+    throw new TypeError('expected an object.');
+  }
+  if (obj.hasOwnProperty(prop)) {
+    delete obj[prop];
+    return true;
+  }
+
+  if (has(obj, prop)) {
+    var segs = prop.split('.');
+    var last = segs.pop();
+    while (segs.length && segs[segs.length - 1].slice(-1) === '\\') {
+      last = segs.pop().slice(0, -1) + '.' + last;
+    }
+    while (segs.length) obj = obj[prop = segs.shift()];
+    return (delete obj[last]);
+  }
+  return true;
+};
diff --git a/node_modules/unset-value/node_modules/has-value/LICENSE b/node_modules/unset-value/node_modules/has-value/LICENSE
new file mode 100644
index 0000000..39245ac
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-value/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-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/unset-value/node_modules/has-value/README.md b/node_modules/unset-value/node_modules/has-value/README.md
new file mode 100644
index 0000000..a927633
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-value/README.md
@@ -0,0 +1,130 @@
+# has-value [![NPM version](https://img.shields.io/npm/v/has-value.svg?style=flat)](https://www.npmjs.com/package/has-value) [![NPM downloads](https://img.shields.io/npm/dm/has-value.svg?style=flat)](https://npmjs.org/package/has-value) [![Build Status](https://img.shields.io/travis/jonschlinkert/has-value.svg?style=flat)](https://travis-ci.org/jonschlinkert/has-value)
+
+> Returns true if a value exists, false if empty. Works with deeply nested values using object paths.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install has-value --save
+```
+
+**Works for:**
+
+* booleans
+* functions
+* numbers (pass `true` as the last arg to treat zero as a value instead of falsey)
+* strings
+* nulls
+* object
+* arrays
+
+## Usage
+
+Works with nested object paths or a single value:
+
+```js
+var hasValue = require('has-value');
+
+hasValue({a: {b: {c: 'foo'}}} 'a.b.c');
+//=> true
+
+hasValue('a');
+//=> true
+
+hasValue('');
+//=> false
+
+hasValue(1);
+//=> true
+
+hasValue(0);
+//=> false
+
+hasValue(0, true); // pass `true` as the last arg to treat zero as a value
+//=> true
+
+hasValue({a: 'a'}});
+//=> true
+
+hasValue({}});
+//=> false
+
+hasValue(['a']);
+//=> true
+
+hasValue([]);
+//=> false
+
+hasValue(function(foo) {}); // function length/arity
+//=> true
+
+hasValue(function() {});
+//=> false
+
+hasValue(true);
+hasValue(false);
+//=> true
+```
+
+## isEmpty
+
+To do the opposite and test for empty values, do:
+
+```js
+function isEmpty(o, isZero) {
+  return !hasValue.apply(hasValue, arguments);
+}
+```
+
+## Related projects
+
+You might also be interested in these projects:
+
+* [get-object](https://www.npmjs.com/package/get-object): Get a property from an object using dot (object path) notation. | [homepage](https://github.com/jonschlinkert/get-object)
+* [get-property](https://www.npmjs.com/package/get-property): Get a nested property or its value from an object using simple `a.b.c` paths. | [homepage](https://github.com/jonschlinkert/get-property)
+* [get-value](https://www.npmjs.com/package/get-value): Use property paths (`a.b.c`) to get a nested value from an object. | [homepage](https://github.com/jonschlinkert/get-value)
+* [set-value](https://www.npmjs.com/package/set-value): Create nested values and any intermediaries using dot notation (`'a.b.c'`) paths. | [homepage](https://github.com/jonschlinkert/set-value)
+
+## Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/has-value/issues/new).
+
+## Building docs
+
+Generate readme and API documentation with [verb](https://github.com/verbose/verb):
+
+```sh
+$ npm install verb && npm run docs
+```
+
+Or, if [verb](https://github.com/verbose/verb) is installed globally:
+
+```sh
+$ 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/has-value/blob/master/LICENSE).
+
+***
+
+_This file was generated by [verb](https://github.com/verbose/verb), v, on March 27, 2016._
\ No newline at end of file
diff --git a/node_modules/unset-value/node_modules/has-value/index.js b/node_modules/unset-value/node_modules/has-value/index.js
new file mode 100644
index 0000000..90687c8
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-value/index.js
@@ -0,0 +1,19 @@
+/*!
+ * has-value <https://github.com/jonschlinkert/has-value>
+ *
+ * Copyright (c) 2014-2016, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */
+
+'use strict';
+
+var isObject = require('isobject');
+var hasValues = require('has-values');
+var get = require('get-value');
+
+module.exports = function(obj, prop, noZero) {
+  if (isObject(obj)) {
+    return hasValues(get(obj, prop), noZero);
+  }
+  return hasValues(obj, prop);
+};
diff --git a/node_modules/unset-value/node_modules/has-value/node_modules/isobject/LICENSE b/node_modules/unset-value/node_modules/has-value/node_modules/isobject/LICENSE
new file mode 100644
index 0000000..39245ac
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-value/node_modules/isobject/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-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/unset-value/node_modules/has-value/node_modules/isobject/README.md b/node_modules/unset-value/node_modules/has-value/node_modules/isobject/README.md
new file mode 100644
index 0000000..9dd897a
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-value/node_modules/isobject/README.md
@@ -0,0 +1,112 @@
+# isobject [![NPM version](https://img.shields.io/npm/v/isobject.svg?style=flat)](https://www.npmjs.com/package/isobject) [![NPM downloads](https://img.shields.io/npm/dm/isobject.svg?style=flat)](https://npmjs.org/package/isobject) [![Build Status](https://img.shields.io/travis/jonschlinkert/isobject.svg?style=flat)](https://travis-ci.org/jonschlinkert/isobject)
+
+Returns true if the value is an object and not an array or null.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install isobject --save
+```
+
+Use [is-plain-object](https://github.com/jonschlinkert/is-plain-object) if you want only objects that are created by the `Object` constructor.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install isobject
+```
+
+Install with [bower](http://bower.io/)
+
+```sh
+$ bower install isobject
+```
+
+## Usage
+
+```js
+var isObject = require('isobject');
+```
+
+**True**
+
+All of the following return `true`:
+
+```js
+isObject({});
+isObject(Object.create({}));
+isObject(Object.create(Object.prototype));
+isObject(Object.create(null));
+isObject({});
+isObject(new Foo);
+isObject(/foo/);
+```
+
+**False**
+
+All of the following return `false`:
+
+```js
+isObject();
+isObject(function () {});
+isObject(1);
+isObject([]);
+isObject(undefined);
+isObject(null);
+```
+
+## Related projects
+
+You might also be interested in these projects:
+
+[merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep)
+
+* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow)
+* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object)
+* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of)
+
+## Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/isobject/issues/new).
+
+## Building docs
+
+Generate readme and API documentation with [verb](https://github.com/verbose/verb):
+
+```sh
+$ npm install verb && npm run docs
+```
+
+Or, if [verb](https://github.com/verbose/verb) is installed globally:
+
+```sh
+$ 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/isobject/blob/master/LICENSE).
+
+***
+
+_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on April 25, 2016._
\ No newline at end of file
diff --git a/node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js b/node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js
new file mode 100644
index 0000000..aa0dce0
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js
@@ -0,0 +1,14 @@
+/*!
+ * isobject <https://github.com/jonschlinkert/isobject>
+ *
+ * Copyright (c) 2014-2015, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */
+
+'use strict';
+
+var isArray = require('isarray');
+
+module.exports = function isObject(val) {
+  return val != null && typeof val === 'object' && isArray(val) === false;
+};
diff --git a/node_modules/unset-value/node_modules/has-value/node_modules/isobject/package.json b/node_modules/unset-value/node_modules/has-value/node_modules/isobject/package.json
new file mode 100644
index 0000000..ac922b5
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-value/node_modules/isobject/package.json
@@ -0,0 +1,98 @@
+{
+  "_from": "isobject@^2.0.0",
+  "_id": "isobject@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+  "_location": "/unset-value/has-value/isobject",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "isobject@^2.0.0",
+    "name": "isobject",
+    "escapedName": "isobject",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/unset-value/has-value"
+  ],
+  "_resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+  "_shasum": "f065561096a3f1da2ef46272f815c840d87e0c89",
+  "_spec": "isobject@^2.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\unset-value\\node_modules\\has-value",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/isobject/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "isarray": "1.0.0"
+  },
+  "deprecated": false,
+  "description": "Returns true if the value is an object and not an array or null.",
+  "devDependencies": {
+    "gulp-format-md": "^0.1.9",
+    "mocha": "^2.4.5"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/isobject",
+  "keywords": [
+    "check",
+    "is",
+    "is-object",
+    "isobject",
+    "kind",
+    "kind-of",
+    "kindof",
+    "native",
+    "object",
+    "type",
+    "typeof",
+    "value"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "isobject",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/isobject.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "related": {
+      "list": [
+        "merge-deep",
+        "extend-shallow",
+        "is-plain-object",
+        "kind-of"
+      ]
+    },
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "lint": {
+      "reflinks": true
+    },
+    "reflinks": [
+      "verb"
+    ]
+  },
+  "version": "2.1.0"
+}
diff --git a/node_modules/unset-value/node_modules/has-value/package.json b/node_modules/unset-value/node_modules/has-value/package.json
new file mode 100644
index 0000000..3fe05d1
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-value/package.json
@@ -0,0 +1,114 @@
+{
+  "_from": "has-value@^0.3.1",
+  "_id": "has-value@0.3.1",
+  "_inBundle": false,
+  "_integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+  "_location": "/unset-value/has-value",
+  "_phantomChildren": {
+    "isarray": "1.0.0"
+  },
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "has-value@^0.3.1",
+    "name": "has-value",
+    "escapedName": "has-value",
+    "rawSpec": "^0.3.1",
+    "saveSpec": null,
+    "fetchSpec": "^0.3.1"
+  },
+  "_requiredBy": [
+    "/unset-value"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+  "_shasum": "7b1f58bada62ca827ec0a2078025654845995e1f",
+  "_spec": "has-value@^0.3.1",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\unset-value",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/has-value/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "get-value": "^2.0.3",
+    "has-values": "^0.1.4",
+    "isobject": "^2.0.0"
+  },
+  "deprecated": false,
+  "description": "Returns true if a value exists, false if empty. Works with deeply nested values using object paths.",
+  "devDependencies": {
+    "gulp-format-md": "^0.1.7",
+    "mocha": "^2.4.5"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/has-value",
+  "keywords": [
+    "array",
+    "boolean",
+    "empty",
+    "find",
+    "function",
+    "has",
+    "hasOwn",
+    "javascript",
+    "js",
+    "key",
+    "keys",
+    "node.js",
+    "null",
+    "number",
+    "object",
+    "properties",
+    "property",
+    "string",
+    "type",
+    "util",
+    "utilities",
+    "utility",
+    "value"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "has-value",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/has-value.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "run": true,
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "related": {
+      "list": [
+        "get-object",
+        "get-property",
+        "get-value",
+        "set-value"
+      ]
+    },
+    "reflinks": [
+      "verb"
+    ],
+    "lint": {
+      "reflinks": true
+    }
+  },
+  "version": "0.3.1"
+}
diff --git a/node_modules/unset-value/node_modules/has-values/LICENSE b/node_modules/unset-value/node_modules/has-values/LICENSE
new file mode 100644
index 0000000..39245ac
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-values/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-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/unset-value/node_modules/has-values/README.md b/node_modules/unset-value/node_modules/has-values/README.md
new file mode 100644
index 0000000..13319c5
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-values/README.md
@@ -0,0 +1,114 @@
+# has-values [![NPM version](https://img.shields.io/npm/v/has-values.svg?style=flat)](https://www.npmjs.com/package/has-values) [![NPM downloads](https://img.shields.io/npm/dm/has-values.svg?style=flat)](https://npmjs.org/package/has-values) [![Build Status](https://img.shields.io/travis/jonschlinkert/has-values.svg?style=flat)](https://travis-ci.org/jonschlinkert/has-values)
+
+> Returns true if any values exist, false if empty. Works for booleans, functions, numbers, strings, nulls, objects and arrays.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install has-values --save
+```
+
+## Usage
+
+```js
+var hasValue = require('has-values');
+
+hasValue('a');
+//=> true
+
+hasValue('');
+//=> false
+
+hasValue(1);
+//=> true
+
+hasValue(0);
+//=> false
+
+hasValue(0, true); // treat zero as a value
+//=> true
+
+hasValue({a: 'a'}});
+//=> true
+
+hasValue({}});
+//=> false
+
+hasValue(['a']);
+//=> true
+
+hasValue([]);
+//=> false
+
+hasValue(function(foo) {}); // function length/arity
+//=> true
+
+hasValue(function() {});
+//=> false
+
+hasValue(true);
+hasValue(false);
+//=> true
+```
+
+## isEmpty
+
+To test for empty values, do:
+
+```js
+function isEmpty(o, isZero) {
+  return !hasValue(o, isZero);
+}
+```
+
+## Related projects
+
+You might also be interested in these projects:
+
+* [has-value](https://www.npmjs.com/package/has-value): Returns true if a value exists, false if empty. Works with deeply nested values using… [more](https://www.npmjs.com/package/has-value) | [homepage](https://github.com/jonschlinkert/has-value)
+* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object)
+* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject)
+
+## Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/has-values/issues/new).
+
+## Building docs
+
+Generate readme and API documentation with [verb](https://github.com/verbose/verb):
+
+```sh
+$ npm install verb && npm run docs
+```
+
+Or, if [verb](https://github.com/verbose/verb) is installed globally:
+
+```sh
+$ 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/has-values/blob/master/LICENSE).
+
+***
+
+_This file was generated by [verb](https://github.com/verbose/verb), v, on March 27, 2016._
\ No newline at end of file
diff --git a/node_modules/unset-value/node_modules/has-values/index.js b/node_modules/unset-value/node_modules/has-values/index.js
new file mode 100644
index 0000000..6d04ba1
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-values/index.js
@@ -0,0 +1,36 @@
+/*!
+ * has-values <https://github.com/jonschlinkert/has-values>
+ *
+ * Copyright (c) 2014-2015, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */
+
+'use strict';
+
+module.exports = function hasValue(o, noZero) {
+  if (o === null || o === undefined) {
+    return false;
+  }
+
+  if (typeof o === 'boolean') {
+    return true;
+  }
+
+  if (typeof o === 'number') {
+    if (o === 0 && noZero === true) {
+      return false;
+    }
+    return true;
+  }
+
+  if (o.length !== undefined) {
+    return o.length !== 0;
+  }
+
+  for (var key in o) {
+    if (o.hasOwnProperty(key)) {
+      return true;
+    }
+  }
+  return false;
+};
diff --git a/node_modules/unset-value/node_modules/has-values/package.json b/node_modules/unset-value/node_modules/has-values/package.json
new file mode 100644
index 0000000..bdd4490
--- /dev/null
+++ b/node_modules/unset-value/node_modules/has-values/package.json
@@ -0,0 +1,106 @@
+{
+  "_from": "has-values@^0.1.4",
+  "_id": "has-values@0.1.4",
+  "_inBundle": false,
+  "_integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+  "_location": "/unset-value/has-values",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "has-values@^0.1.4",
+    "name": "has-values",
+    "escapedName": "has-values",
+    "rawSpec": "^0.1.4",
+    "saveSpec": null,
+    "fetchSpec": "^0.1.4"
+  },
+  "_requiredBy": [
+    "/unset-value/has-value"
+  ],
+  "_resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+  "_shasum": "6d61de95d91dfca9b9a02089ad384bff8f62b771",
+  "_spec": "has-values@^0.1.4",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\unset-value\\node_modules\\has-value",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/has-values/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Returns true if any values exist, false if empty. Works for booleans, functions, numbers, strings, nulls, objects and arrays. ",
+  "devDependencies": {
+    "gulp-format-md": "^0.1.7",
+    "mocha": "^2.4.5"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/has-values",
+  "keywords": [
+    "array",
+    "boolean",
+    "empty",
+    "find",
+    "function",
+    "has",
+    "hasOwn",
+    "javascript",
+    "js",
+    "key",
+    "keys",
+    "node.js",
+    "null",
+    "number",
+    "object",
+    "properties",
+    "property",
+    "string",
+    "type",
+    "util",
+    "utilities",
+    "utility",
+    "value"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "has-values",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/has-values.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "run": true,
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "related": {
+      "list": [
+        "has-value",
+        "isobject",
+        "is-plain-object"
+      ]
+    },
+    "reflinks": [
+      "verb"
+    ],
+    "lint": {
+      "reflinks": true
+    }
+  },
+  "version": "0.1.4"
+}
diff --git a/node_modules/unset-value/package.json b/node_modules/unset-value/package.json
new file mode 100644
index 0000000..03af860
--- /dev/null
+++ b/node_modules/unset-value/package.json
@@ -0,0 +1,112 @@
+{
+  "_from": "unset-value@^1.0.0",
+  "_id": "unset-value@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+  "_location": "/unset-value",
+  "_phantomChildren": {
+    "get-value": "2.0.6",
+    "isarray": "1.0.0"
+  },
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "unset-value@^1.0.0",
+    "name": "unset-value",
+    "escapedName": "unset-value",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/cache-base"
+  ],
+  "_resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+  "_shasum": "8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559",
+  "_spec": "unset-value@^1.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\cache-base",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/unset-value/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "email": "wtgtybhertgeghgtwtg@gmail.com",
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    }
+  ],
+  "dependencies": {
+    "has-value": "^0.3.1",
+    "isobject": "^3.0.0"
+  },
+  "deprecated": false,
+  "description": "Delete nested properties from an object using dot notation.",
+  "devDependencies": {
+    "gulp-format-md": "^0.1.11",
+    "mocha": "*",
+    "should": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/unset-value",
+  "keywords": [
+    "del",
+    "delete",
+    "key",
+    "object",
+    "omit",
+    "prop",
+    "property",
+    "remove",
+    "unset",
+    "value"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "unset-value",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/unset-value.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "related": {
+      "list": [
+        "get-value",
+        "get-values",
+        "omit-value",
+        "put-value",
+        "set-value",
+        "union-value",
+        "upsert-value"
+      ]
+    },
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "lint": {
+      "reflinks": true
+    }
+  },
+  "version": "1.0.0"
+}
