Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/vinyl-sourcemap/LICENSE b/node_modules/vinyl-sourcemap/LICENSE
new file mode 100644
index 0000000..82c8d55
--- /dev/null
+++ b/node_modules/vinyl-sourcemap/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2017 Blaine Bublitz <blaine.bublitz@gmail.com>, Eric Schoffstall <yo@contra.io> and other contributors (Based on code from gulp-sourcemaps - ISC License - Copyright (c) 2014, Florian Reiterer)
+
+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/vinyl-sourcemap/README.md b/node_modules/vinyl-sourcemap/README.md
new file mode 100644
index 0000000..6ffc0ef
--- /dev/null
+++ b/node_modules/vinyl-sourcemap/README.md
@@ -0,0 +1,79 @@
+<p align="center">
+  <a href="http://gulpjs.com">
+    <img height="257" width="114" src="https://raw.githubusercontent.com/gulpjs/artwork/master/gulp-2x.png">
+  </a>
+</p>
+
+# vinyl-sourcemap
+
+[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![AppVeyor Build Status][appveyor-image]][appveyor-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Gitter chat][gitter-image]][gitter-url]
+
+Add/write sourcemaps to/from Vinyl files.
+
+## Usage
+
+```js
+sourcemap.add(file, function(err, updatedFile) {
+  // updatedFile will have a .sourceMap property
+});
+
+// The 2nd argument can be given as a path string
+sourcemap.write(file, './maps', function(err, updatedFile, sourcemapFile) {
+  // sourcemapFile will be a Vinyl file to be written to some location
+  // updatedFile will have the .contents property updated with a sourceMappingURL that resolves to sourcemapFile
+});
+
+// If not defined, the sourcemap is inlined
+sourcemap.write(file, function(err, updatedFile, sourcemapFile) {
+  // sourcemapFile is undefined
+  // updatedFile will have the .contents property updated with a sourceMappingURL that is an inlined sourcemap
+});
+```
+
+## API
+
+### `sourcemap.add(file, callback)`
+
+Takes a [Vinyl][vinyl] `file` object and a `callback` function. It attempts to parse an inline sourcemap or load an external sourcemap for the file. If a valid sourcemap is found, the `sources` & `sourcesContent` properties are resolved to actual files (if possible) and a fully resolved sourcemap is attached as `file.sourceMap`. If a sourcemap is not found, a stub sourcemap is generated for the file and attached as `file.sourceMap`.
+
+Once all resolution is complete, the `callback(err, updatedFile)` is called with the `updatedFile`. If an error occurs, it will be passed as `err` and `updatedFile` will be undefined. __Note:__ The original file is mutated but `updatedFile` is passed to the callback as a convenience.
+
+If the `file` is not a Vinyl object or the contents are streaming, an Error will be passed to the `callback`.
+
+If the `file` has a `.sourceMap` property or the contents are null, the `callback` will be called immediately without mutation to the file.
+
+All filesystem operations are optional & non-fatal so any errors will not be bubbled to the `callback`.
+
+### `sourcemap.write(file, [outputPath,] callback)`
+
+Takes a [Vinyl][vinyl] `file` object, (optionally) an `outputPath` string and a `callback` function.
+
+If `outputPath` is not passed, an inline sourcemap will be generated from the `file.sourceMap` property and appended to the `file.contents`. Once the inline sourcemap is appended, the `callback(err, updatedFile)` is called with the `updatedFile`. If an error occurs, it will be passed as `err` and `updatedFile` will be undefined. __Note:__ The original file is mutated but `updatedFile` is passed to the callback as a convenience.
+
+If `outputPath` is passed, a new Vinyl file will be generated using `file.cwd` and `file.base` from the original file, the path to the external sourcemap, and the `file.sourceMap` (as contents). The external location will be appended to the `file.contents` of the original file. Once the new file is created and location appended, the `callback(err, updatedFile, sourcemapFile)` is called with the `updatedFile` and the `sourcemapFile`. If an error occurs, it will be passed as `err` and `updatedFile`/`sourcemapFile` will be undefined. __Note:__ The original file is mutated but `updatedFile` is passed to the callback as a convenience.
+
+If the `file` is not a Vinyl object or the contents are streaming, an Error will be passed to the `callback`.
+
+If the `file` doesn't have a `.sourceMap` property or the contents are null, the `callback` will be called immediately without mutation to the file.
+
+## License
+
+MIT
+
+[vinyl]: https://github.com/gulpjs/vinyl
+
+[downloads-image]: http://img.shields.io/npm/dm/vinyl-sourcemap.svg
+[npm-url]: https://npmjs.com/package/vinyl-sourcemap
+[npm-image]: http://img.shields.io/npm/v/vinyl-sourcemap.svg
+
+[travis-url]: https://travis-ci.org/gulpjs/vinyl-sourcemap
+[travis-image]: http://img.shields.io/travis/gulpjs/vinyl-sourcemap.svg?label=travis-ci
+
+[appveyor-url]: https://ci.appveyor.com/project/gulpjs/vinyl-sourcemap
+[appveyor-image]: https://img.shields.io/appveyor/ci/gulpjs/vinyl-sourcemap.svg?label=appveyor
+
+[coveralls-url]: https://coveralls.io/r/gulpjs/vinyl-sourcemap
+[coveralls-image]: http://img.shields.io/coveralls/gulpjs/vinyl-sourcemap/master.svg
+
+[gitter-url]: https://gitter.im/gulpjs/gulp
+[gitter-image]: https://badges.gitter.im/gulpjs/gulp.png
diff --git a/node_modules/vinyl-sourcemap/index.js b/node_modules/vinyl-sourcemap/index.js
new file mode 100644
index 0000000..93d5062
--- /dev/null
+++ b/node_modules/vinyl-sourcemap/index.js
@@ -0,0 +1,66 @@
+'use strict';
+
+var File = require('vinyl');
+
+var helpers = require('./lib/helpers');
+
+var PLUGIN_NAME = 'vinyl-sourcemap';
+
+function add(file, callback) {
+
+  // Bail early an error if the file argument is not a Vinyl file
+  if (!File.isVinyl(file)) {
+    return callback(new Error(PLUGIN_NAME + '-add: Not a vinyl file'));
+  }
+
+  // Bail early with an error if file has streaming contents
+  if (file.isStream()) {
+    return callback(new Error(PLUGIN_NAME + '-add: Streaming not supported'));
+  }
+
+  // Bail early successfully if file is null or already has a sourcemap
+  if (file.isNull() || file.sourceMap) {
+    return callback(null, file);
+  }
+
+  var state = {
+    path: '', // Root path for the sources in the map
+    map: null,
+    content: file.contents.toString(),
+    // TODO: handle this?
+    preExistingComment: null,
+  };
+
+  helpers.addSourceMaps(file, state, callback);
+}
+
+function write(file, destPath, callback) {
+
+  // Check if options or a callback are passed as second argument
+  if (typeof destPath === 'function') {
+    callback = destPath;
+    destPath = undefined;
+  }
+
+  // Bail early with an error if the file argument is not a Vinyl file
+  if (!File.isVinyl(file)) {
+    return callback(new Error(PLUGIN_NAME + '-write: Not a vinyl file'));
+  }
+
+  // Bail early with an error if file has streaming contents
+  if (file.isStream()) {
+    return callback(new Error(PLUGIN_NAME + '-write: Streaming not supported'));
+  }
+
+  // Bail early successfully if file is null or doesn't have sourcemap
+  if (file.isNull() || !file.sourceMap) {
+    return callback(null, file);
+  }
+
+  helpers.writeSourceMaps(file, destPath, callback);
+}
+
+module.exports = {
+  add: add,
+  write: write,
+};
diff --git a/node_modules/vinyl-sourcemap/lib/helpers.js b/node_modules/vinyl-sourcemap/lib/helpers.js
new file mode 100644
index 0000000..626d82f
--- /dev/null
+++ b/node_modules/vinyl-sourcemap/lib/helpers.js
@@ -0,0 +1,243 @@
+'use strict';
+
+var path = require('path');
+
+var fs = require('graceful-fs');
+var nal = require('now-and-later');
+var File = require('vinyl');
+var convert = require('convert-source-map');
+var removeBOM = require('remove-bom-buffer');
+var appendBuffer = require('append-buffer');
+var normalizePath = require('normalize-path');
+
+var urlRegex = /^(https?|webpack(-[^:]+)?):\/\//;
+
+function isRemoteSource(source) {
+  return source.match(urlRegex);
+}
+
+function parse(data) {
+  try {
+    return JSON.parse(removeBOM(data));
+  } catch (err) {
+    // TODO: should this log a debug?
+  }
+}
+
+function loadSourceMap(file, state, callback) {
+  // Try to read inline source map
+  state.map = convert.fromSource(state.content);
+
+  if (state.map) {
+    state.map = state.map.toObject();
+    // Sources in map are relative to the source file
+    state.path = file.dirname;
+    state.content = convert.removeComments(state.content);
+    // Remove source map comment from source
+    file.contents = new Buffer(state.content, 'utf8');
+    return callback();
+  }
+
+  // Look for source map comment referencing a source map file
+  var mapComment = convert.mapFileCommentRegex.exec(state.content);
+
+  var mapFile;
+  if (mapComment) {
+    mapFile = path.resolve(file.dirname, mapComment[1] || mapComment[2]);
+    state.content = convert.removeMapFileComments(state.content);
+    // Remove source map comment from source
+    file.contents = new Buffer(state.content, 'utf8');
+  } else {
+    // If no comment try map file with same name as source file
+    mapFile = file.path + '.map';
+  }
+
+  // Sources in external map are relative to map file
+  state.path = path.dirname(mapFile);
+
+  fs.readFile(mapFile, onRead);
+
+  function onRead(err, data) {
+    if (err) {
+      return callback();
+    }
+    state.map = parse(data);
+    callback();
+  }
+}
+
+// Fix source paths and sourceContent for imported source map
+function fixImportedSourceMap(file, state, callback) {
+  if (!state.map) {
+    return callback();
+  }
+
+  state.map.sourcesContent = state.map.sourcesContent || [];
+
+  nal.map(state.map.sources, normalizeSourcesAndContent, callback);
+
+  function assignSourcesContent(sourceContent, idx) {
+    state.map.sourcesContent[idx] = sourceContent;
+  }
+
+  function normalizeSourcesAndContent(sourcePath, idx, cb) {
+    var sourceRoot = state.map.sourceRoot || '';
+    var sourceContent = state.map.sourcesContent[idx] || null;
+
+    if (isRemoteSource(sourcePath)) {
+      assignSourcesContent(sourceContent, idx);
+      return cb();
+    }
+
+    if (state.map.sourcesContent[idx]) {
+      return cb();
+    }
+
+    if (sourceRoot && isRemoteSource(sourceRoot)) {
+      assignSourcesContent(sourceContent, idx);
+      return cb();
+    }
+
+    var basePath = path.resolve(file.base, sourceRoot);
+    var absPath = path.resolve(state.path, sourceRoot, sourcePath);
+    var relPath = path.relative(basePath, absPath);
+    var unixRelPath = normalizePath(relPath);
+
+    state.map.sources[idx] = unixRelPath;
+
+    if (absPath !== file.path) {
+      // Load content from file async
+      return fs.readFile(absPath, onRead);
+    }
+
+    // If current file: use content
+    assignSourcesContent(state.content, idx);
+    cb();
+
+    function onRead(err, data) {
+      if (err) {
+        assignSourcesContent(null, idx);
+        return cb();
+      }
+      assignSourcesContent(removeBOM(data).toString('utf8'), idx);
+      cb();
+    }
+  }
+}
+
+function mapsLoaded(file, state, callback) {
+
+  if (!state.map) {
+    state.map = {
+      version: 3,
+      names: [],
+      mappings: '',
+      sources: [normalizePath(file.relative)],
+      sourcesContent: [state.content],
+    };
+  }
+
+  state.map.file = normalizePath(file.relative);
+  file.sourceMap = state.map;
+
+  callback();
+}
+
+function addSourceMaps(file, state, callback) {
+  var tasks = [
+    loadSourceMap,
+    fixImportedSourceMap,
+    mapsLoaded,
+  ];
+
+  function apply(fn, key, cb) {
+    fn(file, state, cb);
+  }
+
+  nal.mapSeries(tasks, apply, done);
+
+  function done() {
+    callback(null, file);
+  }
+}
+
+/* Write Helpers */
+function createSourceMapFile(opts) {
+  return new File({
+    cwd: opts.cwd,
+    base: opts.base,
+    path: opts.path,
+    contents: new Buffer(JSON.stringify(opts.content)),
+    stat: {
+      isFile: function() {
+        return true;
+      },
+      isDirectory: function() {
+        return false;
+      },
+      isBlockDevice: function() {
+        return false;
+      },
+      isCharacterDevice: function() {
+        return false;
+      },
+      isSymbolicLink: function() {
+        return false;
+      },
+      isFIFO: function() {
+        return false;
+      },
+      isSocket: function() {
+        return false;
+      },
+    },
+  });
+}
+
+var needsMultiline = ['.css'];
+
+function getCommentOptions(extname) {
+  var opts = {
+    multiline: (needsMultiline.indexOf(extname) !== -1),
+  };
+
+  return opts;
+}
+
+function writeSourceMaps(file, destPath, callback) {
+  var sourceMapFile;
+  var commentOpts = getCommentOptions(file.extname);
+
+  var comment;
+  if (destPath == null) {
+    // Encode source map into comment
+    comment = convert.fromObject(file.sourceMap).toComment(commentOpts);
+  } else {
+    var mapFile = path.join(destPath, file.relative) + '.map';
+    var sourceMapPath = path.join(file.base, mapFile);
+
+    // Create new sourcemap File
+    sourceMapFile = createSourceMapFile({
+      cwd: file.cwd,
+      base: file.base,
+      path: sourceMapPath,
+      content: file.sourceMap,
+    });
+
+    var sourcemapLocation = path.relative(file.dirname, sourceMapPath);
+
+    sourcemapLocation = normalizePath(sourcemapLocation);
+
+    comment = convert.generateMapFileComment(sourcemapLocation, commentOpts);
+  }
+
+  // Append source map comment
+  file.contents = appendBuffer(file.contents, comment);
+
+  callback(null, file, sourceMapFile);
+}
+
+module.exports = {
+  addSourceMaps: addSourceMaps,
+  writeSourceMaps: writeSourceMaps,
+};
diff --git a/node_modules/vinyl-sourcemap/package.json b/node_modules/vinyl-sourcemap/package.json
new file mode 100644
index 0000000..1c2f9a0
--- /dev/null
+++ b/node_modules/vinyl-sourcemap/package.json
@@ -0,0 +1,94 @@
+{
+  "_from": "vinyl-sourcemap@^1.1.0",
+  "_id": "vinyl-sourcemap@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=",
+  "_location": "/vinyl-sourcemap",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "vinyl-sourcemap@^1.1.0",
+    "name": "vinyl-sourcemap",
+    "escapedName": "vinyl-sourcemap",
+    "rawSpec": "^1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.1.0"
+  },
+  "_requiredBy": [
+    "/vinyl-fs"
+  ],
+  "_resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz",
+  "_shasum": "92a800593a38703a8cdb11d8b300ad4be63b3e16",
+  "_spec": "vinyl-sourcemap@^1.1.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\vinyl-fs",
+  "author": {
+    "name": "Gulp Team",
+    "email": "team@gulpjs.com",
+    "url": "http://gulpjs.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/gulpjs/vinyl-sourcemap/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Robin Venneman"
+    },
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com"
+    }
+  ],
+  "dependencies": {
+    "append-buffer": "^1.0.2",
+    "convert-source-map": "^1.5.0",
+    "graceful-fs": "^4.1.6",
+    "normalize-path": "^2.1.1",
+    "now-and-later": "^2.0.0",
+    "remove-bom-buffer": "^3.0.0",
+    "vinyl": "^2.0.0"
+  },
+  "deprecated": false,
+  "description": "Add/write sourcemaps to/from Vinyl files.",
+  "devDependencies": {
+    "eslint": "^1.10.3",
+    "eslint-config-gulp": "^2.0.0",
+    "expect": "^1.20.2",
+    "istanbul": "^0.4.3",
+    "istanbul-coveralls": "^1.0.3",
+    "jscs": "^2.4.0",
+    "jscs-preset-gulp": "^1.0.0",
+    "mississippi": "^1.3.0",
+    "mocha": "^3.2.0"
+  },
+  "engines": {
+    "node": ">= 0.10"
+  },
+  "files": [
+    "LICENSE",
+    "index.js",
+    "lib/"
+  ],
+  "homepage": "https://github.com/gulpjs/vinyl-sourcemap#readme",
+  "keywords": [
+    "vinyl",
+    "sourcemap",
+    "gulp"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "vinyl-sourcemap",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gulpjs/vinyl-sourcemap.git"
+  },
+  "scripts": {
+    "cover": "istanbul cover _mocha --report lcovonly",
+    "coveralls": "npm run cover && istanbul-coveralls",
+    "lint": "eslint index.js lib/ test/add.js test/write.js && jscs index.js lib/ test/add.js test/write.js",
+    "pretest": "npm run lint",
+    "test": "mocha --async-only"
+  },
+  "version": "1.1.0"
+}