diff --git a/node_modules/is-jpg/index.js b/node_modules/is-jpg/index.js
new file mode 100644
index 0000000..529e024
--- /dev/null
+++ b/node_modules/is-jpg/index.js
@@ -0,0 +1,10 @@
+'use strict';
+module.exports = buffer => {
+	if (!buffer || buffer.length < 3) {
+		return false;
+	}
+
+	return buffer[0] === 255 &&
+		buffer[1] === 216 &&
+		buffer[2] === 255;
+};
diff --git a/node_modules/is-jpg/license b/node_modules/is-jpg/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/is-jpg/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/is-jpg/package.json b/node_modules/is-jpg/package.json
new file mode 100644
index 0000000..81082e7
--- /dev/null
+++ b/node_modules/is-jpg/package.json
@@ -0,0 +1,77 @@
+{
+  "_from": "is-jpg@^2.0.0",
+  "_id": "is-jpg@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=",
+  "_location": "/is-jpg",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "is-jpg@^2.0.0",
+    "name": "is-jpg",
+    "escapedName": "is-jpg",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/imagemin-jpegtran"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz",
+  "_shasum": "2e1997fa6e9166eaac0242daae443403e4ef1d97",
+  "_spec": "is-jpg@^2.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\imagemin-jpegtran",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-jpg/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Check if a Buffer/Uint8Array is a JPEG image",
+  "devDependencies": {
+    "ava": "*",
+    "read-chunk": "^2.1.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-jpg#readme",
+  "keywords": [
+    "jpg",
+    "jpeg",
+    "image",
+    "img",
+    "pic",
+    "picture",
+    "photo",
+    "type",
+    "detect",
+    "check",
+    "is",
+    "exif",
+    "binary",
+    "buffer",
+    "uint8array",
+    "cli",
+    "bin"
+  ],
+  "license": "MIT",
+  "name": "is-jpg",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-jpg.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "2.0.0"
+}
diff --git a/node_modules/is-jpg/readme.md b/node_modules/is-jpg/readme.md
new file mode 100644
index 0000000..13b96f8
--- /dev/null
+++ b/node_modules/is-jpg/readme.md
@@ -0,0 +1,58 @@
+# is-jpg [![Build Status](https://travis-ci.org/sindresorhus/is-jpg.svg?branch=master)](https://travis-ci.org/sindresorhus/is-jpg)
+
+> Check if a Buffer/Uint8Array is a [JPEG](https://en.wikipedia.org/wiki/JPEG) image
+
+
+## Install
+
+```
+$ npm install is-jpg
+```
+
+
+## Usage
+
+##### Node.js
+
+```js
+const readChunk = require('read-chunk');
+const isJpg = require('is-jpg');
+const buffer = readChunk.sync('unicorn.jpg', 0, 3);
+
+isJpg(buffer);
+//=> true
+```
+
+##### Browser
+
+```js
+const xhr = new XMLHttpRequest();
+xhr.open('GET', 'unicorn.jpg');
+xhr.responseType = 'arraybuffer';
+
+xhr.onload = () => {
+	isJpg(new Uint8Array(this.response));
+	//=> true
+};
+
+xhr.send();
+```
+
+
+## API
+
+### isJpg(buffer)
+
+Accepts a Buffer (Node.js) or Uint8Array.
+
+It only needs the first 3 bytes.
+
+
+## Related
+
+- [file-type](https://github.com/sindresorhus/file-type) - Detect the file type of a Buffer/Uint8Array
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
