Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/json-buffer/.npmignore b/node_modules/json-buffer/.npmignore
new file mode 100644
index 0000000..13abef4
--- /dev/null
+++ b/node_modules/json-buffer/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+node_modules/*
+npm_debug.log
diff --git a/node_modules/json-buffer/.travis.yml b/node_modules/json-buffer/.travis.yml
new file mode 100644
index 0000000..244b7e8
--- /dev/null
+++ b/node_modules/json-buffer/.travis.yml
@@ -0,0 +1,3 @@
+language: node_js
+node_js:
+  - '0.10'
diff --git a/node_modules/json-buffer/LICENSE b/node_modules/json-buffer/LICENSE
new file mode 100644
index 0000000..b799ec0
--- /dev/null
+++ b/node_modules/json-buffer/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2013 Dominic Tarr
+
+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/json-buffer/README.md b/node_modules/json-buffer/README.md
new file mode 100644
index 0000000..43857bb
--- /dev/null
+++ b/node_modules/json-buffer/README.md
@@ -0,0 +1,24 @@
+# json-buffer
+
+JSON functions that can convert buffers!
+
+[![build status](https://secure.travis-ci.org/dominictarr/json-buffer.png)](http://travis-ci.org/dominictarr/json-buffer)
+
+[![testling badge](https://ci.testling.com/dominictarr/json-buffer.png)](https://ci.testling.com/dominictarr/json-buffer)
+
+JSON mangles buffers by converting to an array...
+which isn't helpful. json-buffers converts to base64 instead,
+and deconverts base64 to a buffer.
+
+``` js
+var JSONB = require('json-buffer')
+var Buffer = require('buffer').Buffer
+
+var str = JSONB.stringify(new Buffer('hello there!'))
+
+console.log(JSONB.parse(str)) //GET a BUFFER back
+```
+
+## License
+
+MIT
diff --git a/node_modules/json-buffer/index.js b/node_modules/json-buffer/index.js
new file mode 100644
index 0000000..9cafed8
--- /dev/null
+++ b/node_modules/json-buffer/index.js
@@ -0,0 +1,58 @@
+//TODO: handle reviver/dehydrate function like normal
+//and handle indentation, like normal.
+//if anyone needs this... please send pull request.
+
+exports.stringify = function stringify (o) {
+  if('undefined' == typeof o) return o
+
+  if(o && Buffer.isBuffer(o))
+    return JSON.stringify(':base64:' + o.toString('base64'))
+
+  if(o && o.toJSON)
+    o =  o.toJSON()
+
+  if(o && 'object' === typeof o) {
+    var s = ''
+    var array = Array.isArray(o)
+    s = array ? '[' : '{'
+    var first = true
+
+    for(var k in o) {
+      var ignore = 'function' == typeof o[k] || (!array && 'undefined' === typeof o[k])
+      if(Object.hasOwnProperty.call(o, k) && !ignore) {
+        if(!first)
+          s += ','
+        first = false
+        if (array) {
+          if(o[k] == undefined)
+            s += 'null'
+          else
+            s += stringify(o[k])
+        } else if (o[k] !== void(0)) {
+          s += stringify(k) + ':' + stringify(o[k])
+        }
+      }
+    }
+
+    s += array ? ']' : '}'
+
+    return s
+  } else if ('string' === typeof o) {
+    return JSON.stringify(/^:/.test(o) ? ':' + o : o)
+  } else if ('undefined' === typeof o) {
+    return 'null';
+  } else
+    return JSON.stringify(o)
+}
+
+exports.parse = function (s) {
+  return JSON.parse(s, function (key, value) {
+    if('string' === typeof value) {
+      if(/^:base64:/.test(value))
+        return new Buffer(value.substring(8), 'base64')
+      else
+        return /^:/.test(value) ? value.substring(1) : value 
+    }
+    return value
+  })
+}
diff --git a/node_modules/json-buffer/package.json b/node_modules/json-buffer/package.json
new file mode 100644
index 0000000..5e81fc3
--- /dev/null
+++ b/node_modules/json-buffer/package.json
@@ -0,0 +1,66 @@
+{
+  "_from": "json-buffer@3.0.0",
+  "_id": "json-buffer@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
+  "_location": "/json-buffer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "json-buffer@3.0.0",
+    "name": "json-buffer",
+    "escapedName": "json-buffer",
+    "rawSpec": "3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "3.0.0"
+  },
+  "_requiredBy": [
+    "/keyv"
+  ],
+  "_resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+  "_shasum": "5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898",
+  "_spec": "json-buffer@3.0.0",
+  "_where": "C:\\Users\\marcr\\Desktop\\KorAp\\Git\\Kalamar\\node_modules\\keyv",
+  "author": {
+    "name": "Dominic Tarr",
+    "email": "dominic.tarr@gmail.com",
+    "url": "http://dominictarr.com"
+  },
+  "bugs": {
+    "url": "https://github.com/dominictarr/json-buffer/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "JSON parse & stringify that supports binary via bops & base64",
+  "devDependencies": {
+    "tape": "^4.6.3"
+  },
+  "homepage": "https://github.com/dominictarr/json-buffer",
+  "license": "MIT",
+  "name": "json-buffer",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/dominictarr/json-buffer.git"
+  },
+  "scripts": {
+    "test": "set -e; for t in test/*.js; do node $t; done"
+  },
+  "testling": {
+    "files": "test/*.js",
+    "browsers": [
+      "ie/8..latest",
+      "firefox/17..latest",
+      "firefox/nightly",
+      "chrome/22..latest",
+      "chrome/canary",
+      "opera/12..latest",
+      "opera/next",
+      "safari/5.1..latest",
+      "ipad/6.0..latest",
+      "iphone/6.0..latest",
+      "android-browser/4.2..latest"
+    ]
+  },
+  "version": "3.0.0"
+}
diff --git a/node_modules/json-buffer/test/index.js b/node_modules/json-buffer/test/index.js
new file mode 100644
index 0000000..8351804
--- /dev/null
+++ b/node_modules/json-buffer/test/index.js
@@ -0,0 +1,63 @@
+
+var test = require('tape')
+var _JSON = require('../')
+
+function clone (o) {
+  return JSON.parse(JSON.stringify(o))
+}
+
+var examples = {
+  simple: { foo: [], bar: {}, baz: new Buffer('some binary data') },
+  just_buffer: new Buffer('JUST A BUFFER'),
+  all_types: {
+    string:'hello',
+    number: 3145,
+    null: null,
+    object: {},
+    array: [],
+    boolean: true,
+    boolean2: false
+  },
+  foo: new Buffer('foo'),
+  foo2: new Buffer('foo2'),
+  escape: {
+    buffer: new Buffer('x'),
+    string: _JSON.stringify(new Buffer('x'))
+  },
+  escape2: {
+    buffer: new Buffer('x'),
+    string: ':base64:'+ new Buffer('x').toString('base64')
+  },
+  undefined: {
+    empty: undefined, test: true
+  },
+  undefined2: {
+    first: 1, empty: undefined, test: true
+  },
+  undefinedArray: {
+    array: [undefined, 1, 'two']
+  },
+  fn: {
+    fn: function () {}    
+  },
+  undefined: undefined
+}
+
+for(k in examples)
+(function (value, k) { 
+  test(k, function (t) {
+    var s = _JSON.stringify(value)
+    console.log('parse', s)
+    if(JSON.stringify(value) !== undefined) {
+      console.log(s)
+      var _value = _JSON.parse(s)
+      t.deepEqual(clone(_value), clone(value))
+    }
+    else
+      t.equal(s, undefined)
+    t.end()
+  })
+})(examples[k], k)
+
+
+