diff --git a/node_modules/file-sync-cmp/.eslintrc b/node_modules/file-sync-cmp/.eslintrc
new file mode 100644
index 0000000..1255f3d
--- /dev/null
+++ b/node_modules/file-sync-cmp/.eslintrc
@@ -0,0 +1,33 @@
+# -*- yaml -*-
+---
+env:
+  node: true
+
+rules:
+  quotes:
+  - 2
+  - single
+  - avoid-escape
+  global-strict:
+  - 2
+  - always
+  space-in-brackets: 2
+  space-in-parens: 2
+  space-after-keywords:
+  - 2
+  - always
+  - { checkFunctionKeyword: true }
+  space-before-blocks: 2
+  space-unary-ops: 2
+  brace-style: 2
+  comma-style: 2
+  func-style:
+  - 2
+  - declaration
+  no-lonely-if: 2
+  no-trailing-spaces: 2
+  no-multiple-empty-lines: 2
+  max-len: 2
+  padded-blocks:
+  - 2
+  - never
diff --git a/node_modules/file-sync-cmp/.npmignore b/node_modules/file-sync-cmp/.npmignore
new file mode 100644
index 0000000..50a0c39
--- /dev/null
+++ b/node_modules/file-sync-cmp/.npmignore
@@ -0,0 +1,2 @@
+*~
+node_modules/
diff --git a/node_modules/file-sync-cmp/.travis.yml b/node_modules/file-sync-cmp/.travis.yml
new file mode 100644
index 0000000..587bd3e
--- /dev/null
+++ b/node_modules/file-sync-cmp/.travis.yml
@@ -0,0 +1 @@
+language: node_js
diff --git a/node_modules/file-sync-cmp/LICENSE b/node_modules/file-sync-cmp/LICENSE
new file mode 100644
index 0000000..dd78f7e
--- /dev/null
+++ b/node_modules/file-sync-cmp/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Martin Geisler
+
+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/file-sync-cmp/README.md b/node_modules/file-sync-cmp/README.md
new file mode 100644
index 0000000..3ab9201
--- /dev/null
+++ b/node_modules/file-sync-cmp/README.md
@@ -0,0 +1,14 @@
+file-sync-cmp
+=============
+
+[![Build Status](https://travis-ci.org/mgeisler/file-sync-cmp.svg?branch=master)](https://travis-ci.org/mgeisler/file-sync-cmp)
+
+Synchronous file comparison for Node.js.
+
+
+Release History
+---------------
+
+* 0.1.1 (2015-02-22): Close file descriptors after comparison.
+
+* 0.1.0 (2014-12-14): First public release.
diff --git a/node_modules/file-sync-cmp/index.js b/node_modules/file-sync-cmp/index.js
new file mode 100644
index 0000000..f386657
--- /dev/null
+++ b/node_modules/file-sync-cmp/index.js
@@ -0,0 +1,37 @@
+'use strict';
+
+var fs = require('fs');
+
+var BUF_SIZE = 16 * 1024;
+
+/* Compare two files by content. */
+function equalFiles(pathA, pathB) {
+    var statA = fs.lstatSync(pathA);
+    var statB = fs.lstatSync(pathB);
+    if (statA.size !== statB.size) {
+        return false;
+    }
+    var fdA = fs.openSync(pathA, 'r');
+    var fdB = fs.openSync(pathB, 'r');
+    var bufA = new Buffer(BUF_SIZE);
+    var bufB = new Buffer(BUF_SIZE);
+    var readA = 1;
+    var readB = 1;
+    while (readA > 0) {
+        readA = fs.readSync(fdA, bufA, 0, bufA.length, null);
+        readB = fs.readSync(fdB, bufB, 0, bufB.length, null);
+        if (readA !== readB) {
+            return false;
+        }
+        for (var i = 0; i < readA; i++) {
+            if (bufA[i] !== bufB[i]) {
+                return false;
+            }
+        }
+    }
+    fs.closeSync(fdA);
+    fs.closeSync(fdB);
+    return true;
+}
+
+module.exports.equalFiles = equalFiles;
diff --git a/node_modules/file-sync-cmp/package.json b/node_modules/file-sync-cmp/package.json
new file mode 100644
index 0000000..4721a2c
--- /dev/null
+++ b/node_modules/file-sync-cmp/package.json
@@ -0,0 +1,57 @@
+{
+  "_from": "file-sync-cmp@^0.1.0",
+  "_id": "file-sync-cmp@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=",
+  "_location": "/file-sync-cmp",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "file-sync-cmp@^0.1.0",
+    "name": "file-sync-cmp",
+    "escapedName": "file-sync-cmp",
+    "rawSpec": "^0.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^0.1.0"
+  },
+  "_requiredBy": [
+    "/grunt-contrib-copy"
+  ],
+  "_resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz",
+  "_shasum": "a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b",
+  "_spec": "file-sync-cmp@^0.1.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\grunt-contrib-copy",
+  "author": {
+    "name": "Martin Geisler",
+    "email": "martin@geisler.net",
+    "url": "http://geisler.net/"
+  },
+  "bugs": {
+    "url": "https://github.com/mgeisler/file-sync-cmp/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Synchronous file comparison",
+  "devDependencies": {
+    "eslint": "0.10.1",
+    "mocha": "2.0.1",
+    "q": "1.1.2",
+    "tmp": "0.0.24"
+  },
+  "homepage": "https://github.com/mgeisler/file-sync-cmp/",
+  "keywords": [
+    "comparison"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "file-sync-cmp",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/mgeisler/file-sync-cmp.git"
+  },
+  "scripts": {
+    "test": "eslint . && mocha"
+  },
+  "version": "0.1.1"
+}
diff --git a/node_modules/file-sync-cmp/test/.eslintrc b/node_modules/file-sync-cmp/test/.eslintrc
new file mode 100644
index 0000000..efac5a1
--- /dev/null
+++ b/node_modules/file-sync-cmp/test/.eslintrc
@@ -0,0 +1,7 @@
+# -*- yaml -*-
+---
+globals:
+  afterEach: false
+  beforeEach: false
+  describe: false
+  it: false
diff --git a/node_modules/file-sync-cmp/test/test.js b/node_modules/file-sync-cmp/test/test.js
new file mode 100644
index 0000000..9a71723
--- /dev/null
+++ b/node_modules/file-sync-cmp/test/test.js
@@ -0,0 +1,54 @@
+'use strict';
+
+var fileSyncCmp = require('../');
+
+var assert = require('assert');
+var fs = require('fs');
+
+var tmp = require('tmp');
+tmp.setGracefulCleanup();
+
+var Q = require('q');
+
+var fsWrite = Q.nfbind(fs.write);
+var tmpFile = Q.nfbind(tmp.file);
+
+function write (fd, buf) {
+    return fsWrite(fd, buf, 0, buf.length, null);
+}
+
+
+describe('equalFiles', function () {
+    var pathA, pathB;
+    var fdA, fdB;
+
+    beforeEach(function () {
+        return Q.all([tmpFile(), tmpFile()]).spread(function (a, b) {
+            pathA = a[0];
+            pathB = b[0];
+            fdA = a[1];
+            fdB = b[1];
+        });
+    });
+
+    it('should handle empty files', function () {
+        assert(fileSyncCmp.equalFiles(pathA, pathB));
+    });
+
+    it('should handle equal content', function () {
+        var buf = new Buffer('File content\n');
+        var writes = [write(fdA, buf), write(fdB, buf)];
+        return Q.all(writes).then(function () {
+            assert(fileSyncCmp.equalFiles(pathA, pathB));
+        });
+    });
+
+    it('should handle non-equal content', function () {
+        var bufA = new Buffer('Some text\n');
+        var bufB = new Buffer('Other text\n');
+        var writes = [write(fdA, bufA), write(fdB, bufB)];
+        return Q.all(writes).then(function () {
+            assert(!fileSyncCmp.equalFiles(pathA, pathB));
+        });
+    });
+});
