Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MunifTanjim/minimo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMunifTanjim <muniftanjim@gmail.com>2018-07-05 22:10:07 +0300
committerMunif Tanjim <muniftanjim@gmail.com>2018-07-05 22:18:02 +0300
commit76824c3de6686923b631592db3d5654bb43b9f15 (patch)
treea94f9de700cd38bf6d20ae947da9b61e84fa056c
parentf6da7a7bd32e2d53b1731837d84e9cc66a33b3b9 (diff)
add [feature]: search (fuse.js)
-rw-r--r--data/assets.json23
-rw-r--r--exampleSite/config.toml2
-rw-r--r--exampleSite/content/docs/search-fuse-js.md21
-rw-r--r--exampleSite/content/docs/search-support.md6
-rw-r--r--package-lock.json49
-rw-r--r--package.json4
-rw-r--r--src/scripts/search/fuse.js54
-rw-r--r--src/scripts/search/helpers.js21
-rw-r--r--src/scripts/search/lunr.js2
-rw-r--r--static/assets/css/main.809149b6.css (renamed from static/assets/css/main.c696738b.css)0
-rw-r--r--static/assets/js/algolia_search.499151b4.js (renamed from static/assets/js/algolia_search.04805406.js)4
-rw-r--r--static/assets/js/comments.ecdd5e33.js (renamed from static/assets/js/comments.b0a2b5b1.js)2
-rw-r--r--static/assets/js/details-polyfill.aab26f9f.js (renamed from static/assets/js/details-polyfill.f919551f.js)2
-rw-r--r--static/assets/js/fuse_search.cc21252e.js10
-rw-r--r--static/assets/js/lunr_search.15b5835f.js (renamed from static/assets/js/lunr_search.d02471db.js)10
-rw-r--r--static/assets/js/main.68cb493a.js (renamed from static/assets/js/main.267dd47c.js)2
-rw-r--r--static/assets/js/sidebar.88cb8643.js (renamed from static/assets/js/sidebar.6c4c8f65.js)2
-rw-r--r--static/assets/js/twemoji.c34d1cdf.js (renamed from static/assets/js/twemoji.7a501675.js)2
-rw-r--r--webpack.config.js5
19 files changed, 187 insertions, 34 deletions
diff --git a/data/assets.json b/data/assets.json
index ed766d5..1575960 100644
--- a/data/assets.json
+++ b/data/assets.json
@@ -1,24 +1,27 @@
{
"comments": {
- "js": "comments.b0a2b5b1.js"
+ "js": "comments.ecdd5e33.js"
},
"sidebar": {
- "js": "sidebar.6c4c8f65.js"
+ "js": "sidebar.88cb8643.js"
},
"twemoji": {
- "js": "twemoji.7a501675.js"
+ "js": "twemoji.c34d1cdf.js"
},
"details-polyfill": {
- "js": "details-polyfill.f919551f.js"
- },
- "algolia_search": {
- "js": "algolia_search.04805406.js"
+ "js": "details-polyfill.aab26f9f.js"
},
"lunr_search": {
- "js": "lunr_search.d02471db.js"
+ "js": "lunr_search.15b5835f.js"
+ },
+ "fuse_search": {
+ "js": "fuse_search.cc21252e.js"
+ },
+ "algolia_search": {
+ "js": "algolia_search.499151b4.js"
},
"main": {
- "css": "main.c696738b.css",
- "js": "main.267dd47c.js"
+ "css": "main.809149b6.css",
+ "js": "main.68cb493a.js"
}
} \ No newline at end of file
diff --git a/exampleSite/config.toml b/exampleSite/config.toml
index f54bfc7..dc37b91 100644
--- a/exampleSite/config.toml
+++ b/exampleSite/config.toml
@@ -104,7 +104,7 @@ username = "MunifTanjim"
repository = "minimo"
[params.search]
-client = "" # lunr / algolia
+client = "" # algolia / fuse / lunr
[params.search.algolia]
appId = ""
diff --git a/exampleSite/content/docs/search-fuse-js.md b/exampleSite/content/docs/search-fuse-js.md
new file mode 100644
index 0000000..a889df5
--- /dev/null
+++ b/exampleSite/content/docs/search-fuse-js.md
@@ -0,0 +1,21 @@
+---
+date: 2018-07-06T01:00:00+06:00
+title: "Search: Fuse.js"
+authors: ["muniftanjim"]
+categories:
+ - features
+tags:
+ - search
+ - fuse.js
+slug: search-fuse-js
+toc: true
+---
+
+## Configure Fuse.js Search Client
+
+Select Lunr.js as the search client in your `config.toml` file:
+
+```toml
+[params.search]
+client = "fuse"
+```
diff --git a/exampleSite/content/docs/search-support.md b/exampleSite/content/docs/search-support.md
index b5aa62c..b92942f 100644
--- a/exampleSite/content/docs/search-support.md
+++ b/exampleSite/content/docs/search-support.md
@@ -1,6 +1,6 @@
---
date: 2018-07-05T20:00:00+06:00
-lastmod: 2018-07-05T23:30:00+06:00
+lastmod: 2018-07-06T01:00:00+06:00
title: "Search Support"
authors: ["muniftanjim"]
categories:
@@ -14,6 +14,7 @@ toc: true
Minimo supports the following clients for the search feature:
- [Algolia](https://www.algolia.com)
+- [Fuse.js](http://fusejs.io)
- [Lunr.js](https://lunrjs.com)
Follow the following steps for enabling search in your site.
@@ -47,13 +48,14 @@ client = ""
```
- `params.search` [`Map`]:
- - `client` [`String`]: Name of the Search Client (_supported values:_ `algolia`,`lunr`)
+ - `client` [`String`]: Name of the Search Client (_supported values:_ `algolia`,`fuse`,`lunr`)
## Client Specific Steps
The next steps are different for each search client:
- [**Algolia**]({{< relref "docs/search-algolia.md" >}})
+- [**Fuse.js**]({{< relref "docs/search-fuse-js.md" >}})
- [**Lunr.js**]({{< relref "docs/search-lunr-js.md" >}})
After you complete those steps, you are good to go!
diff --git a/package-lock.json b/package-lock.json
index b230f95..996db25 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -639,6 +639,8 @@
},
"assets-webpack-plugin": {
"version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/assets-webpack-plugin/-/assets-webpack-plugin-3.5.1.tgz",
+ "integrity": "sha1-kxzg1m1C6I7V5/GNZVIpQ8V6OH0=",
"dev": true,
"requires": {
"camelcase": "^1.2.1",
@@ -700,6 +702,8 @@
},
"autoprefixer": {
"version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.4.1.tgz",
+ "integrity": "sha512-YqUclCBDXUT9Y7aQ8Xv+ja8yhTZYJoMsOD7WS++gZIJLCpCu+gPcKGDlhk6S3WxhLkTcNVdaMZAWys2nzZCH7g==",
"dev": true,
"requires": {
"browserslist": "^3.2.6",
@@ -823,6 +827,8 @@
},
"babel-eslint": {
"version": "8.2.3",
+ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.3.tgz",
+ "integrity": "sha512-0HeSTtaXg/Em7FCUWxwOT+KeFSO1O7LuRuzhk7g+1BjwdlQGlHq4OyMi3GqGxrNfEq8jEi6Hmt5ylEQUhurgiQ==",
"dev": true,
"requires": {
"@babel/code-frame": "7.0.0-beta.44",
@@ -1019,6 +1025,8 @@
},
"babel-loader": {
"version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.4.tgz",
+ "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==",
"dev": true,
"requires": {
"find-cache-dir": "^1.0.0",
@@ -1477,6 +1485,8 @@
},
"babel-preset-env": {
"version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz",
+ "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==",
"dev": true,
"requires": {
"babel-plugin-check-es2015-constants": "^6.22.0",
@@ -2224,6 +2234,8 @@
},
"clean-webpack-plugin": {
"version": "0.1.19",
+ "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-0.1.19.tgz",
+ "integrity": "sha512-M1Li5yLHECcN2MahoreuODul5LkjohJGFxLPTjl3j1ttKrF5rgjZET1SJduuqxLAuT1gAPOdkhg03qcaaU1KeA==",
"dev": true,
"requires": {
"rimraf": "^2.6.1"
@@ -2695,6 +2707,8 @@
},
"css-loader": {
"version": "0.28.11",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz",
+ "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==",
"dev": true,
"requires": {
"babel-code-frame": "^6.26.0",
@@ -3198,7 +3212,9 @@
}
},
"es6-docready": {
- "version": "1.0.0"
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es6-docready/-/es6-docready-1.0.0.tgz",
+ "integrity": "sha1-l3dOnhtt0VEAOHY/9ybXtgEgtkU="
},
"es6-promise": {
"version": "4.2.4",
@@ -3213,6 +3229,8 @@
},
"eslint": {
"version": "4.19.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz",
+ "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==",
"dev": true,
"requires": {
"ajv": "^5.3.0",
@@ -4429,6 +4447,11 @@
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
+ "fuse.js": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.2.1.tgz",
+ "integrity": "sha1-YyDLlM5W7JdVyJred1vNuwNY1CU="
+ },
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
@@ -6345,7 +6368,9 @@
}
},
"lunr": {
- "version": "2.3.0"
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.0.tgz",
+ "integrity": "sha1-TXwMoSvdHgRHsMExuRQgkpdAyI8="
},
"make-dir": {
"version": "1.2.0",
@@ -6628,6 +6653,8 @@
},
"mini-css-extract-plugin": {
"version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz",
+ "integrity": "sha512-2Zik6PhUZ/MbiboG6SDS9UTPL4XXy4qnyGjSdCIWRrr8xb6PwLtHE+AYOjkXJWdF0OG8vo/yrJ8CgS5WbMpzIg==",
"dev": true,
"requires": {
"loader-utils": "^1.1.0",
@@ -6883,6 +6910,8 @@
},
"node-sass": {
"version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz",
+ "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==",
"dev": true,
"requires": {
"async-foreach": "^0.1.3",
@@ -7035,7 +7064,9 @@
}
},
"normalize.css": {
- "version": "8.0.0"
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.0.tgz",
+ "integrity": "sha512-iXcbM3NWr0XkNyfiSBsoPezi+0V92P9nj84yVV1/UZxRUrGczgX/X91KMAGM0omWLY2+2Q1gKD/XRn4gQRDB2A=="
},
"npm-run-path": {
"version": "2.0.2",
@@ -7656,6 +7687,8 @@
},
"postcss-loader": {
"version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.5.tgz",
+ "integrity": "sha512-pV7kB5neJ0/1tZ8L1uGOBNTVBCSCXQoIsZMsrwvO8V2rKGa2tBl/f80GGVxow2jJnRJ2w1ocx693EKhZAb9Isg==",
"dev": true,
"requires": {
"loader-utils": "^1.1.0",
@@ -8850,6 +8883,8 @@
},
"sass-loader": {
"version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.0.1.tgz",
+ "integrity": "sha512-MeVVJFejJELlAbA7jrRchi88PGP6U9yIfqyiG+bBC4a9s2PX+ulJB9h8bbEohtPBfZmlLhNZ0opQM9hovRXvlw==",
"dev": true,
"requires": {
"clone-deep": "^2.0.1",
@@ -9830,7 +9865,9 @@
"optional": true
},
"twemoji": {
- "version": "2.5.1"
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/twemoji/-/twemoji-2.5.1.tgz",
+ "integrity": "sha1-KWZHxhY8fwR0WIccKuviXqj/6DQ="
},
"type-check": {
"version": "0.3.2",
@@ -10221,6 +10258,8 @@
},
"webpack": {
"version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.8.1.tgz",
+ "integrity": "sha512-xkxthzaVR298HmvmrjBCjiCmgzWnBnvBlgPzuvqmxWSh8QImrPvCCmr482YIx7ixWkTtQj1aMRz+cjoNPUsGEQ==",
"dev": true,
"requires": {
"@webassemblyjs/ast": "1.3.1",
@@ -10342,6 +10381,8 @@
},
"webpack-cli": {
"version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.1.3.tgz",
+ "integrity": "sha512-5AsKoL/Ccn8iTrwk3uErdyhetGH+c7VRQ7Itim2GL0IhBRq5rtojVDk00buMRmFmBpw1RvHXq97Gup965LbozA==",
"dev": true,
"requires": {
"chalk": "^2.3.2",
diff --git a/package.json b/package.json
index cfacfb7..81e8f1b 100644
--- a/package.json
+++ b/package.json
@@ -10,8 +10,7 @@
"license": "MIT",
"scripts": {
"build": "NODE_ENV=production webpack",
- "start":
- "hugo server --source=exampleSite --themesDir=../.. --disableFastRender",
+ "start": "hugo server --source=exampleSite --themesDir=../.. --disableFastRender",
"watch": "webpack --watch --progress --colors"
},
"devDependencies": {
@@ -35,6 +34,7 @@
"dependencies": {
"algoliasearch": "^3.29.0",
"es6-docready": "^1.0.0",
+ "fuse.js": "^3.2.1",
"lunr": "^2.3.0",
"normalize.css": "^8.0.0",
"twemoji": "^2.5.1"
diff --git a/src/scripts/search/fuse.js b/src/scripts/search/fuse.js
new file mode 100644
index 0000000..15f70bf
--- /dev/null
+++ b/src/scripts/search/fuse.js
@@ -0,0 +1,54 @@
+import Fuse from 'fuse.js'
+
+import {
+ appendResults,
+ getJSON,
+ getUrlSearchParam,
+ setSearchingIndicator
+} from './helpers'
+
+const doSearch = (term, fuse, resultsBlock) => {
+ setSearchingIndicator(resultsBlock)
+
+ let results = term
+ ? fuse
+ .search(term)
+ .map(result => ({ href: result.href, title: result.title }))
+ : []
+
+ appendResults(results, resultsBlock)
+}
+
+const options = {
+ shouldSort: true,
+ threshold: 0.5,
+ location: 0,
+ distance: 500,
+ maxPatternLength: 32,
+ minMatchCharLength: 1,
+ keys: [{ name: 'title', weight: 0.7 }, { name: 'content', weight: 0.3 }]
+}
+
+const searchInputBox = document.getElementById('search-term')
+const resultsBlock = document.getElementById('search-results')
+
+let term = getUrlSearchParam('q')
+searchInputBox.value = term
+searchInputBox.focus()
+
+setSearchingIndicator(resultsBlock)
+
+getJSON(`${window.location.pathname}index.json`, (err, list) => {
+ if (err) {
+ console.error(err)
+ return
+ }
+
+ let fuse = new Fuse(list, options)
+
+ doSearch(term, fuse, resultsBlock)
+
+ searchInputBox.addEventListener('input', e => {
+ doSearch(e.target.value, fuse, resultsBlock)
+ })
+})
diff --git a/src/scripts/search/helpers.js b/src/scripts/search/helpers.js
index 6fdaf8c..d2974da 100644
--- a/src/scripts/search/helpers.js
+++ b/src/scripts/search/helpers.js
@@ -29,3 +29,24 @@ export const getUrlSearchParam = name => {
: decodeURIComponent(results[1].replace(/\+/g, ' '))
}
}
+
+export const getJSON = (url, callback) => {
+ let request = new XMLHttpRequest()
+
+ request.open('GET', url, true)
+
+ request.onload = () => {
+ if (request.status >= 200 && request.status < 400) {
+ let data = JSON.parse(request.responseText)
+ callback(null, data)
+ } else {
+ callback(new Error(request.statusText))
+ }
+ }
+
+ request.onerror = () => {
+ callback(new Error(`Failed to get JSON! ${request.statusText}`))
+ }
+
+ request.send()
+}
diff --git a/src/scripts/search/lunr.js b/src/scripts/search/lunr.js
index 3f03c2a..4080cf9 100644
--- a/src/scripts/search/lunr.js
+++ b/src/scripts/search/lunr.js
@@ -6,7 +6,7 @@ import {
setSearchingIndicator
} from './helpers'
-export const doSearch = (term, idx, pageTitles, resultsBlock) => {
+const doSearch = (term, idx, pageTitles, resultsBlock) => {
setSearchingIndicator(resultsBlock)
let results = term
diff --git a/static/assets/css/main.c696738b.css b/static/assets/css/main.809149b6.css
index b70256a..b70256a 100644
--- a/static/assets/css/main.c696738b.css
+++ b/static/assets/css/main.809149b6.css
diff --git a/static/assets/js/algolia_search.04805406.js b/static/assets/js/algolia_search.499151b4.js
index c7b4db6..c1a02f2 100644
--- a/static/assets/js/algolia_search.04805406.js
+++ b/static/assets/js/algolia_search.499151b4.js
@@ -1,8 +1,8 @@
-!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=32)}([function(e,t){e.exports=function(e){return JSON.parse(JSON.stringify(e))}},function(e,t){var r=Object.prototype.hasOwnProperty,n=Object.prototype.toString;e.exports=function(e,t,o){if("[object Function]"!==n.call(t))throw new TypeError("iterator must be a function");var a=e.length;if(a===+a)for(var i=0;i<a;i++)t.call(o,e[i],i,e);else for(var s in e)r.call(e,s)&&t.call(o,e[s],s,e)}},function(e,t,r){(function(n){function o(){var e;try{e=t.storage.debug}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e}(t=e.exports=r(21)).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},t.formatArgs=function(e){var r=this.useColors;if(e[0]=(r?"%c":"")+this.namespace+(r?" %c":" ")+e[0]+(r?"%c ":" ")+"+"+t.humanize(this.diff),!r)return;var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var o=0,a=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&"%c"===e&&(a=++o)}),e.splice(a,0,n)},t.save=function(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}},t.load=o,t.useColors=function(){if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(o())}).call(this,r(7))},function(e,t,r){var n=r(1);e.exports=function(e,t){var r=[];return n(e,function(n,o){r.push(t(n,o,e))}),r}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";var n=r(11);function o(e,t){var n=r(1),o=this;"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):o.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old",this.name="AlgoliaSearchError",this.message=e||"Unknown error",t&&n(t,function(e,t){o[t]=e})}function a(e,t){function r(){var r=Array.prototype.slice.call(arguments,0);"string"!=typeof r[0]&&r.unshift(t),o.apply(this,r),this.name="AlgoliaSearch"+e+"Error"}return n(r,o),r}n(o,Error),e.exports={AlgoliaSearchError:o,UnparsableJSON:a("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:a("RequestTimeout","Request timedout before getting a response"),Network:a("Network","Network issue, see err.more for details"),JSONPScriptFail:a("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:a("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:a("Unknown","Unknown error occured")}},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t){var r,n,o=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function s(e){if(r===setTimeout)return setTimeout(e,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{n="function"==typeof clearTimeout?clearTimeout:i}catch(e){n=i}}();var c,u=[],l=!1,p=-1;function h(){l&&c&&(l=!1,c.length?u=c.concat(u):p=-1,u.length&&f())}function f(){if(!l){var e=s(h);l=!0;for(var t=u.length;t;){for(c=u,u=[];++p<t;)c&&c[p].run();p=-1,t=u.length}c=null,l=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===i||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function d(e,t){this.fun=e,this.array=t}function y(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];u.push(new d(e,t)),1!==u.length||l||s(f)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.appendResults=function(e,t){0===e.length?t.innerHTML="<li class='results-empty'>\n <a href='#search-term'>"+t.dataset.resultsEmpty+"</a>\n </li>":t.innerHTML=e.reduce(function(e,t){return e+"<li><a href='"+t.href+"'>"+t.title+"</a></li>"},"")},t.setSearchingIndicator=function(e){e.innerHTML="<li class='searching'>\n <a href='#search-results'>"+e.dataset.searching+"&hellip;</a>\n </li>"},t.getUrlSearchParam=function(e){if("URLSearchParams"in window)return new URLSearchParams(window.location.search).get(e);e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(location.search);return null===t?"":decodeURIComponent(t[1].replace(/\+/g," "))}},function(e,t,r){e.exports=function(e,t){var n=r(24),o={};return r(1)(n(e),function(r){!0!==t(r)&&(o[r]=e[r])}),o}},function(e,t,r){e.exports=function(e,t){return function(r,o,a){if("function"==typeof r&&"object"==typeof o||"object"==typeof a)throw new n.AlgoliaSearchError("index.search usage is index.search(query, params, cb)");0===arguments.length||"function"==typeof r?(a=r,r=""):1!==arguments.length&&"function"!=typeof o||(a=o,o=void 0),"object"==typeof r&&null!==r?(o=r,r=void 0):void 0!==r&&null!==r||(r="");var i,s="";return void 0!==r&&(s+=e+"="+encodeURIComponent(r)),void 0!==o&&(o.additionalUA&&(i=o.additionalUA,delete o.additionalUA),s=this.as._getSearchParams(o,s)),this._search(s,t,a,i)}};var n=r(5)},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},function(e,t,r){"use strict";e.exports="3.29.0"},function(e,t,r){e.exports=function(e){return function(t,o,a){var i=r(0);(a=a&&i(a)||{}).hosts=a.hosts||["places-dsn.algolia.net","places-1.algolianet.com","places-2.algolianet.com","places-3.algolianet.com"],0!==arguments.length&&"object"!=typeof t&&void 0!==t||(t="",o="",a._allowEmptyCredentials=!0);var s=e(t,o,a),c=s.initIndex("places");return c.search=n("query","/1/places/query"),c.getObject=function(e,t){return this.as._jsonRequest({method:"GET",url:"/1/places/"+encodeURIComponent(e),hostType:"read",callback:t})},c}};var n=r(10)},function(e,t,r){"use strict";e.exports=function(e,t,r){if("GET"!==t.method)return void r(new Error("Method "+t.method+" "+e+" is not supported by JSONP."));t.debug("JSONP: start");var a=!1,i=!1;o+=1;var s=document.getElementsByTagName("head")[0],c=document.createElement("script"),u="algoliaJSONP_"+o,l=!1;window[u]=function(e){!function(){try{delete window[u],delete window[u+"_loaded"]}catch(e){window[u]=window[u+"_loaded"]=void 0}}(),i?t.debug("JSONP: Late answer, ignoring"):(a=!0,f(),r(null,{body:e,responseText:JSON.stringify(e)}))},e+="&callback="+u,t.jsonBody&&t.jsonBody.params&&(e+="&"+t.jsonBody.params);var p=setTimeout(function(){t.debug("JSONP: Script timeout"),i=!0,f(),r(new n.RequestTimeout)},t.timeouts.complete);function h(){t.debug("JSONP: success"),l||i||(l=!0,a||(t.debug("JSONP: Fail. Script loaded but did not call the callback"),f(),r(new n.JSONPScriptFail)))}function f(){clearTimeout(p),c.onload=null,c.onreadystatechange=null,c.onerror=null,s.removeChild(c)}c.onreadystatechange=function(){"loaded"!==this.readyState&&"complete"!==this.readyState||h()},c.onload=h,c.onerror=function(){if(t.debug("JSONP: Script error"),l||i)return;f(),r(new n.JSONPScriptError)},c.async=!0,c.defer=!0,c.src=e,s.appendChild(c)};var n=r(5),o=0},function(e,t,r){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,r,s){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?a(i(e),function(i){var s=encodeURIComponent(n(i))+r;return o(e[i])?a(e[i],function(e){return s+encodeURIComponent(n(e))}).join(t):s+encodeURIComponent(n(e[i]))}).join(t):s?encodeURIComponent(n(s))+r+encodeURIComponent(n(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function a(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n<e.length;n++)r.push(t(e[n],n));return r}var i=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t}},function(e,t,r){"use strict";e.exports=function(e,t){/\?/.test(e)?e+="&":e+="?";return e+n(t)};var n=r(15)},function(e,t,r){(function(t,r){
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=36)}([function(e,t){e.exports=function(e){return JSON.parse(JSON.stringify(e))}},function(e,t){var r=Object.prototype.hasOwnProperty,n=Object.prototype.toString;e.exports=function(e,t,o){if("[object Function]"!==n.call(t))throw new TypeError("iterator must be a function");var a=e.length;if(a===+a)for(var s=0;s<a;s++)t.call(o,e[s],s,e);else for(var i in e)r.call(e,i)&&t.call(o,e[i],i,e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.appendResults=function(e,t){0===e.length?t.innerHTML="<li class='results-empty'>\n <a href='#search-term'>"+t.dataset.resultsEmpty+"</a>\n </li>":t.innerHTML=e.reduce(function(e,t){return e+"<li><a href='"+t.href+"'>"+t.title+"</a></li>"},"")},t.setSearchingIndicator=function(e){e.innerHTML="<li class='searching'>\n <a href='#search-results'>"+e.dataset.searching+"&hellip;</a>\n </li>"},t.getUrlSearchParam=function(e){if("URLSearchParams"in window)return new URLSearchParams(window.location.search).get(e);e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(location.search);return null===t?"":decodeURIComponent(t[1].replace(/\+/g," "))},t.getJSON=function(e,t){var r=new XMLHttpRequest;r.open("GET",e,!0),r.onload=function(){if(r.status>=200&&r.status<400){var e=JSON.parse(r.responseText);t(null,e)}else t(new Error(r.statusText))},r.onerror=function(){t(new Error("Failed to get JSON! "+r.statusText))},r.send()}},function(e,t,r){(function(n){function o(){var e;try{e=t.storage.debug}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e}(t=e.exports=r(25)).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},t.formatArgs=function(e){var r=this.useColors;if(e[0]=(r?"%c":"")+this.namespace+(r?" %c":" ")+e[0]+(r?"%c ":" ")+"+"+t.humanize(this.diff),!r)return;var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var o=0,a=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&"%c"===e&&(a=++o)}),e.splice(a,0,n)},t.save=function(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}},t.load=o,t.useColors=function(){if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(o())}).call(this,r(8))},function(e,t,r){var n=r(1);e.exports=function(e,t){var r=[];return n(e,function(n,o){r.push(t(n,o,e))}),r}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";var n=r(11);function o(e,t){var n=r(1),o=this;"function"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):o.stack=(new Error).stack||"Cannot get a stacktrace, browser is too old",this.name="AlgoliaSearchError",this.message=e||"Unknown error",t&&n(t,function(e,t){o[t]=e})}function a(e,t){function r(){var r=Array.prototype.slice.call(arguments,0);"string"!=typeof r[0]&&r.unshift(t),o.apply(this,r),this.name="AlgoliaSearch"+e+"Error"}return n(r,o),r}n(o,Error),e.exports={AlgoliaSearchError:o,UnparsableJSON:a("UnparsableJSON","Could not parse the incoming response as JSON, see err.more for details"),RequestTimeout:a("RequestTimeout","Request timedout before getting a response"),Network:a("Network","Network issue, see err.more for details"),JSONPScriptFail:a("JSONPScriptFail","<script> was loaded but did not call our provided callback"),JSONPScriptError:a("JSONPScriptError","<script> unable to load due to an `error` event on it"),Unknown:a("Unknown","Unknown error occured")}},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t){var r,n,o=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function i(e){if(r===setTimeout)return setTimeout(e,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{n="function"==typeof clearTimeout?clearTimeout:s}catch(e){n=s}}();var c,u=[],l=!1,p=-1;function h(){l&&c&&(l=!1,c.length?u=c.concat(u):p=-1,u.length&&f())}function f(){if(!l){var e=i(h);l=!0;for(var t=u.length;t;){for(c=u,u=[];++p<t;)c&&c[p].run();p=-1,t=u.length}c=null,l=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===s||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function d(e,t){this.fun=e,this.array=t}function y(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];u.push(new d(e,t)),1!==u.length||l||i(f)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t,r){e.exports=function(e,t){var n=r(28),o={};return r(1)(n(e),function(r){!0!==t(r)&&(o[r]=e[r])}),o}},function(e,t,r){e.exports=function(e,t){return function(r,o,a){if("function"==typeof r&&"object"==typeof o||"object"==typeof a)throw new n.AlgoliaSearchError("index.search usage is index.search(query, params, cb)");0===arguments.length||"function"==typeof r?(a=r,r=""):1!==arguments.length&&"function"!=typeof o||(a=o,o=void 0),"object"==typeof r&&null!==r?(o=r,r=void 0):void 0!==r&&null!==r||(r="");var s,i="";return void 0!==r&&(i+=e+"="+encodeURIComponent(r)),void 0!==o&&(o.additionalUA&&(s=o.additionalUA,delete o.additionalUA),i=this.as._getSearchParams(o,i)),this._search(i,t,a,s)}};var n=r(6)},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},,,,,function(e,t,r){"use strict";e.exports="3.29.0"},function(e,t,r){e.exports=function(e){return function(t,o,a){var s=r(0);(a=a&&s(a)||{}).hosts=a.hosts||["places-dsn.algolia.net","places-1.algolianet.com","places-2.algolianet.com","places-3.algolianet.com"],0!==arguments.length&&"object"!=typeof t&&void 0!==t||(t="",o="",a._allowEmptyCredentials=!0);var i=e(t,o,a),c=i.initIndex("places");return c.search=n("query","/1/places/query"),c.getObject=function(e,t){return this.as._jsonRequest({method:"GET",url:"/1/places/"+encodeURIComponent(e),hostType:"read",callback:t})},c}};var n=r(10)},function(e,t,r){"use strict";e.exports=function(e,t,r){if("GET"!==t.method)return void r(new Error("Method "+t.method+" "+e+" is not supported by JSONP."));t.debug("JSONP: start");var a=!1,s=!1;o+=1;var i=document.getElementsByTagName("head")[0],c=document.createElement("script"),u="algoliaJSONP_"+o,l=!1;window[u]=function(e){!function(){try{delete window[u],delete window[u+"_loaded"]}catch(e){window[u]=window[u+"_loaded"]=void 0}}(),s?t.debug("JSONP: Late answer, ignoring"):(a=!0,f(),r(null,{body:e,responseText:JSON.stringify(e)}))},e+="&callback="+u,t.jsonBody&&t.jsonBody.params&&(e+="&"+t.jsonBody.params);var p=setTimeout(function(){t.debug("JSONP: Script timeout"),s=!0,f(),r(new n.RequestTimeout)},t.timeouts.complete);function h(){t.debug("JSONP: success"),l||s||(l=!0,a||(t.debug("JSONP: Fail. Script loaded but did not call the callback"),f(),r(new n.JSONPScriptFail)))}function f(){clearTimeout(p),c.onload=null,c.onreadystatechange=null,c.onerror=null,i.removeChild(c)}c.onreadystatechange=function(){"loaded"!==this.readyState&&"complete"!==this.readyState||h()},c.onload=h,c.onerror=function(){if(t.debug("JSONP: Script error"),l||s)return;f(),r(new n.JSONPScriptError)},c.async=!0,c.defer=!0,c.src=e,i.appendChild(c)};var n=r(6),o=0},function(e,t,r){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,r,i){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?a(s(e),function(s){var i=encodeURIComponent(n(s))+r;return o(e[s])?a(e[s],function(e){return i+encodeURIComponent(n(e))}).join(t):i+encodeURIComponent(n(e[s]))}).join(t):i?encodeURIComponent(n(i))+r+encodeURIComponent(n(e)):""};var o=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function a(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n<e.length;n++)r.push(t(e[n],n));return r}var s=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t}},function(e,t,r){"use strict";e.exports=function(e,t){/\?/.test(e)?e+="&":e+="?";return e+n(t)};var n=r(19)},function(e,t,r){(function(t,r){
/*!
* @overview es6-promise - a tiny implementation of Promises/A+.
* @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
* @license Licensed under MIT license
* See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
* @version v4.2.4+314e4831
- */var n;n=function(){"use strict";function e(e){return"function"==typeof e}var n=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},o=0,a=void 0,i=void 0,s=function(e,t){d[o]=e,d[o+1]=t,2===(o+=2)&&(i?i(y):w())};var c="undefined"!=typeof window?window:void 0,u=c||{},l=u.MutationObserver||u.WebKitMutationObserver,p="undefined"==typeof self&&void 0!==t&&"[object process]"==={}.toString.call(t),h="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function f(){var e=setTimeout;return function(){return e(y,1)}}var d=new Array(1e3);function y(){for(var e=0;e<o;e+=2){(0,d[e])(d[e+1]),d[e]=void 0,d[e+1]=void 0}o=0}var m,g,v,b,w=void 0;function _(e,t){var r=this,n=new this.constructor(S);void 0===n[T]&&M(n);var o=r._state;if(o){var a=arguments[o-1];s(function(){return D(o,n,a,r._result)})}else P(r,n,e,t);return n}function x(e){if(e&&"object"==typeof e&&e.constructor===this)return e;var t=new this(S);return C(t,e),t}p?w=function(){return t.nextTick(y)}:l?(g=0,v=new l(y),b=document.createTextNode(""),v.observe(b,{characterData:!0}),w=function(){b.data=g=++g%2}):h?((m=new MessageChannel).port1.onmessage=y,w=function(){return m.port2.postMessage(0)}):w=void 0===c?function(){try{var e=Function("return this")().require("vertx");return void 0!==(a=e.runOnLoop||e.runOnContext)?function(){a(y)}:f()}catch(e){return f()}}():f();var T=Math.random().toString(36).substring(2);function S(){}var A=void 0,j=1,O=2,R={error:null};function k(e){try{return e.then}catch(e){return R.error=e,R}}function I(t,r,n){r.constructor===t.constructor&&n===_&&r.constructor.resolve===x?function(e,t){t._state===j?E(e,t._result):t._state===O?N(e,t._result):P(t,void 0,function(t){return C(e,t)},function(t){return N(e,t)})}(t,r):n===R?(N(t,R.error),R.error=null):void 0===n?E(t,r):e(n)?function(e,t,r){s(function(e){var n=!1,o=function(e,t,r,n){try{e.call(t,r,n)}catch(e){return e}}(r,t,function(r){n||(n=!0,t!==r?C(e,r):E(e,r))},function(t){n||(n=!0,N(e,t))},e._label);!n&&o&&(n=!0,N(e,o))},e)}(t,r,n):E(t,r)}function C(e,t){var r,n;e===t?N(e,new TypeError("You cannot resolve a promise with itself")):(n=typeof(r=t),null===r||"object"!==n&&"function"!==n?E(e,t):I(e,t,k(t)))}function q(e){e._onerror&&e._onerror(e._result),U(e)}function E(e,t){e._state===A&&(e._result=t,e._state=j,0!==e._subscribers.length&&s(U,e))}function N(e,t){e._state===A&&(e._state=O,e._result=t,s(q,e))}function P(e,t,r,n){var o=e._subscribers,a=o.length;e._onerror=null,o[a]=t,o[a+j]=r,o[a+O]=n,0===a&&e._state&&s(U,e)}function U(e){var t=e._subscribers,r=e._state;if(0!==t.length){for(var n=void 0,o=void 0,a=e._result,i=0;i<t.length;i+=3)n=t[i],o=t[i+r],n?D(r,n,o,a):o(a);e._subscribers.length=0}}function D(t,r,n,o){var a=e(n),i=void 0,s=void 0,c=void 0,u=void 0;if(a){if((i=function(e,t){try{return e(t)}catch(e){return R.error=e,R}}(n,o))===R?(u=!0,s=i.error,i.error=null):c=!0,r===i)return void N(r,new TypeError("A promises callback cannot return that same promise."))}else i=o,c=!0;r._state!==A||(a&&c?C(r,i):u?N(r,s):t===j?E(r,i):t===O&&N(r,i))}var H=0;function M(e){e[T]=H++,e._state=void 0,e._result=void 0,e._subscribers=[]}var J=function(){function e(e,t){this._instanceConstructor=e,this.promise=new e(S),this.promise[T]||M(this.promise),n(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?E(this.promise,this._result):(this.length=this.length||0,this._enumerate(t),0===this._remaining&&E(this.promise,this._result))):N(this.promise,new Error("Array Methods must be provided an Array"))}return e.prototype._enumerate=function(e){for(var t=0;this._state===A&&t<e.length;t++)this._eachEntry(e[t],t)},e.prototype._eachEntry=function(e,t){var r=this._instanceConstructor,n=r.resolve;if(n===x){var o=k(e);if(o===_&&e._state!==A)this._settledAt(e._state,t,e._result);else if("function"!=typeof o)this._remaining--,this._result[t]=e;else if(r===F){var a=new r(S);I(a,e,o),this._willSettleAt(a,t)}else this._willSettleAt(new r(function(t){return t(e)}),t)}else this._willSettleAt(n(e),t)},e.prototype._settledAt=function(e,t,r){var n=this.promise;n._state===A&&(this._remaining--,e===O?N(n,r):this._result[t]=r),0===this._remaining&&E(n,this._result)},e.prototype._willSettleAt=function(e,t){var r=this;P(e,void 0,function(e){return r._settledAt(j,t,e)},function(e){return r._settledAt(O,t,e)})},e}();var F=function(){function e(t){this[T]=H++,this._result=this._state=void 0,this._subscribers=[],S!==t&&("function"!=typeof t&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof e?function(e,t){try{t(function(t){C(e,t)},function(t){N(e,t)})}catch(t){N(e,t)}}(this,t):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return e.prototype.catch=function(e){return this.then(null,e)},e.prototype.finally=function(e){var t=this.constructor;return this.then(function(r){return t.resolve(e()).then(function(){return r})},function(r){return t.resolve(e()).then(function(){throw r})})},e}();return F.prototype.then=_,F.all=function(e){return new J(this,e).promise},F.race=function(e){var t=this;return n(e)?new t(function(r,n){for(var o=e.length,a=0;a<o;a++)t.resolve(e[a]).then(r,n)}):new t(function(e,t){return t(new TypeError("You must pass an array to race."))})},F.resolve=x,F.reject=function(e){var t=new this(S);return N(t,e),t},F._setScheduler=function(e){i=e},F._setAsap=function(e){s=e},F._asap=s,F.polyfill=function(){var e=void 0;if(void 0!==r)e=r;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var n=null;try{n=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===n&&!t.cast)return}e.Promise=F},F.Promise=F,F},e.exports=n()}).call(this,r(7),r(6))},function(e,t,r){(function(t){var r;r="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},e.exports=r}).call(this,r(6))},function(e,t,r){"use strict";var n=r(18),o=n.Promise||r(17).Promise;e.exports=function(e,t){var a=r(11),i=r(5),s=r(16),c=r(14),u=r(13);function l(e,t,n){return(n=r(0)(n||{}))._ua=n._ua||l.ua,new h(e,t,n)}t=t||"",l.version=r(12),l.ua="Algolia for vanilla JavaScript "+t+l.version,l.initPlaces=u(l),n.__algolia={debug:r(2),algoliasearch:l};var p={hasXMLHttpRequest:"XMLHttpRequest"in n,hasXDomainRequest:"XDomainRequest"in n};function h(){e.apply(this,arguments)}return p.hasXMLHttpRequest&&(p.cors="withCredentials"in new XMLHttpRequest),a(h,e),h.prototype._request=function(e,t){return new o(function(r,n){if(p.cors||p.hasXDomainRequest){e=s(e,t.headers);var o,a,c=t.body,u=p.cors?new XMLHttpRequest:new XDomainRequest,l=!1;o=setTimeout(h,t.timeouts.connect),u.onprogress=function(){l||f()},"onreadystatechange"in u&&(u.onreadystatechange=function(){!l&&u.readyState>1&&f()}),u.onload=function(){if(a)return;var e;clearTimeout(o);try{e={body:JSON.parse(u.responseText),responseText:u.responseText,statusCode:u.status,headers:u.getAllResponseHeaders&&u.getAllResponseHeaders()||{}}}catch(t){e=new i.UnparsableJSON({more:u.responseText})}e instanceof i.UnparsableJSON?n(e):r(e)},u.onerror=function(e){if(a)return;clearTimeout(o),n(new i.Network({more:e}))},u instanceof XMLHttpRequest?(u.open(t.method,e,!0),t.forceAuthHeaders&&(u.setRequestHeader("x-algolia-application-id",t.headers["x-algolia-application-id"]),u.setRequestHeader("x-algolia-api-key",t.headers["x-algolia-api-key"]))):u.open(t.method,e),p.cors&&(c&&("POST"===t.method?u.setRequestHeader("content-type","application/x-www-form-urlencoded"):u.setRequestHeader("content-type","application/json")),u.setRequestHeader("accept","application/json")),c?u.send(c):u.send()}else n(new i.Network("CORS not supported"));function h(){a=!0,u.abort(),n(new i.RequestTimeout)}function f(){l=!0,clearTimeout(o),o=setTimeout(h,t.timeouts.complete)}})},h.prototype._request.fallback=function(e,t){return e=s(e,t.headers),new o(function(r,n){c(e,t,function(e,t){e?n(e):r(t)})})},h.prototype._promise={reject:function(e){return o.reject(e)},resolve:function(e){return o.resolve(e)},delay:function(e){return new o(function(t){setTimeout(t,e)})},all:function(e){return o.all(e)}},l}},function(e,t){var r=1e3,n=60*r,o=60*n,a=24*o,i=365.25*a;function s(e,t,r){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+r:Math.ceil(e/t)+" "+r+"s"}e.exports=function(e,t){t=t||{};var c,u=typeof e;if("string"===u&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!t)return;var s=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return s*i;case"days":case"day":case"d":return s*a;case"hours":case"hour":case"hrs":case"hr":case"h":return s*o;case"minutes":case"minute":case"mins":case"min":case"m":return s*n;case"seconds":case"second":case"secs":case"sec":case"s":return s*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:return}}(e);if("number"===u&&!1===isNaN(e))return t.long?s(c=e,a,"day")||s(c,o,"hour")||s(c,n,"minute")||s(c,r,"second")||c+" ms":function(e){if(e>=a)return Math.round(e/a)+"d";if(e>=o)return Math.round(e/o)+"h";if(e>=n)return Math.round(e/n)+"m";if(e>=r)return Math.round(e/r)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,r){var n;function o(e){function r(){if(r.enabled){var e=r,o=+new Date,a=o-(n||o);e.diff=a,e.prev=n,e.curr=o,n=o;for(var i=new Array(arguments.length),s=0;s<i.length;s++)i[s]=arguments[s];i[0]=t.coerce(i[0]),"string"!=typeof i[0]&&i.unshift("%O");var c=0;i[0]=i[0].replace(/%([a-zA-Z%])/g,function(r,n){if("%%"===r)return r;c++;var o=t.formatters[n];if("function"==typeof o){var a=i[c];r=o.call(e,a),i.splice(c,1),c--}return r}),t.formatArgs.call(e,i),(r.log||t.log||console.log.bind(console)).apply(e,i)}}return r.namespace=e,r.enabled=t.enabled(e),r.useColors=t.useColors(),r.color=function(e){var r,n=0;for(r in e)n=(n<<5)-n+e.charCodeAt(r),n|=0;return t.colors[Math.abs(n)%t.colors.length]}(e),"function"==typeof t.init&&t.init(r),r}(t=e.exports=o.debug=o.default=o).coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){t.enable("")},t.enable=function(e){t.save(e),t.names=[],t.skips=[];for(var r=("string"==typeof e?e:"").split(/[\s,]+/),n=r.length,o=0;o<n;o++)r[o]&&("-"===(e=r[o].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){var r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=r(20),t.names=[],t.skips=[],t.formatters={}},function(e,t,r){(function(t){var n,o=r(2)("algoliasearch:src/hostIndexState.js"),a="algoliasearch-client-js",i={state:{},set:function(e,t){return this.state[e]=t,this.state[e]},get:function(e){return this.state[e]||null}},s={set:function(e,r){i.set(e,r);try{var n=JSON.parse(t.localStorage[a]);return n[e]=r,t.localStorage[a]=JSON.stringify(n),n[e]}catch(t){return c(e,t)}},get:function(e){try{return JSON.parse(t.localStorage[a])[e]||null}catch(t){return c(e,t)}}};function c(e,r){return o("localStorage failed with",r),function(){try{t.localStorage.removeItem(a)}catch(e){}}(),(n=i).get(e)}function u(e,t){return 1===arguments.length?n.get(e):n.set(e,t)}function l(){try{return"localStorage"in t&&null!==t.localStorage&&(t.localStorage[a]||t.localStorage.setItem(a,JSON.stringify({})),!0)}catch(e){return!1}}n=l()?s:i,e.exports={get:u,set:u,supportsLocalStorage:l}}).call(this,r(6))},function(e,t,r){"use strict";var n=Object.prototype.toString;e.exports=function(e){var t=n.call(e),r="[object Arguments]"===t;return r||(r="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===n.call(e.callee)),r}},function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,a=Array.prototype.slice,i=r(23),s=Object.prototype.propertyIsEnumerable,c=!s.call({toString:null},"toString"),u=s.call(function(){},"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],p=function(e){var t=e.constructor;return t&&t.prototype===e},h={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!h["$"+e]&&n.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{p(window[e])}catch(e){return!0}}catch(e){return!0}return!1}(),d=function(e){var t=null!==e&&"object"==typeof e,r="[object Function]"===o.call(e),a=i(e),s=t&&"[object String]"===o.call(e),h=[];if(!t&&!r&&!a)throw new TypeError("Object.keys called on a non-object");var d=u&&r;if(s&&e.length>0&&!n.call(e,0))for(var y=0;y<e.length;++y)h.push(String(y));if(a&&e.length>0)for(var m=0;m<e.length;++m)h.push(String(m));else for(var g in e)d&&"prototype"===g||!n.call(e,g)||h.push(String(g));if(c)for(var v=function(e){if("undefined"==typeof window||!f)return p(e);try{return p(e)}catch(e){return!1}}(e),b=0;b<l.length;++b)v&&"constructor"===l[b]||!n.call(e,l[b])||h.push(l[b]);return h};d.shim=function(){if(Object.keys){if(!function(){return 2===(Object.keys(arguments)||"").length}(1,2)){var e=Object.keys;Object.keys=function(t){return i(t)?e(a.call(t)):e(t)}}}else Object.keys=d;return Object.keys||d},e.exports=d},function(e,t,r){var n=r(1);e.exports=function e(t){var r=Array.prototype.slice.call(arguments);return n(r,function(r){for(var n in r)r.hasOwnProperty(n)&&("object"==typeof t[n]&&"object"==typeof r[n]?t[n]=e({},t[n],r[n]):void 0!==r[n]&&(t[n]=r[n]))}),t}},function(e,t){e.exports=function(e,t){return"algoliasearch: `"+e+"` was replaced by `"+t+"`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#"+e.toLowerCase().replace(/[\.\(\)]/g,"")}},function(e,t){e.exports=function(e,t){var r=!1;return function(){return r||(console.warn(t),r=!0),e.apply(this,arguments)}}},function(e,t,r){var n=r(10),o=r(27),a=r(26);function i(e,t){this.indexName=t,this.as=e,this.typeAheadArgs=null,this.typeAheadValueOption=null,this.cache={}}e.exports=i,i.prototype.clearCache=function(){this.cache={}},i.prototype.search=n("query"),i.prototype.similarSearch=n("similarQuery"),i.prototype.browse=function(e,t,n){var o,a,i=r(25);0===arguments.length||1===arguments.length&&"function"==typeof arguments[0]?(o=0,n=arguments[0],e=void 0):"number"==typeof arguments[0]?(o=arguments[0],"number"==typeof arguments[1]?a=arguments[1]:"function"==typeof arguments[1]&&(n=arguments[1],a=void 0),e=void 0,t=void 0):"object"==typeof arguments[0]?("function"==typeof arguments[1]&&(n=arguments[1]),t=arguments[0],e=void 0):"string"==typeof arguments[0]&&"function"==typeof arguments[1]&&(n=arguments[1],t=void 0),t=i({},t||{},{page:o,hitsPerPage:a,query:e});var s=this.as._getSearchParams(t,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse",body:{params:s},hostType:"read",callback:n})},i.prototype.browseFrom=function(e,t){return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse",body:{cursor:e},hostType:"read",callback:t})},i.prototype.searchForFacetValues=function(e,t){var n=r(0),o=r(9);if(void 0===e.facetName||void 0===e.facetQuery)throw new Error("Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])");var a=e.facetName,i=o(n(e),function(e){return"facetName"===e}),s=this.as._getSearchParams(i,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/facets/"+encodeURIComponent(a)+"/query",hostType:"read",body:{params:s},callback:t})},i.prototype.searchFacet=o(function(e,t){return this.searchForFacetValues(e,t)},a("index.searchFacet(params[, callback])","index.searchForFacetValues(params[, callback])")),i.prototype._search=function(e,t,r,n){return this.as._jsonRequest({cache:this.cache,method:"POST",url:t||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:e},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName),body:{params:e}},callback:r,additionalUA:n})},i.prototype.getObject=function(e,t,r){1!==arguments.length&&"function"!=typeof t||(r=t,t=void 0);var n="";if(void 0!==t){n="?attributes=";for(var o=0;o<t.length;++o)0!==o&&(n+=","),n+=t[o]}return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/"+encodeURIComponent(e)+n,hostType:"read",callback:r})},i.prototype.getObjects=function(e,t,n){var o=r(4),a=r(3);if(!o(e))throw new Error("Usage: index.getObjects(arrayOfObjectIDs[, callback])");var i=this;1!==arguments.length&&"function"!=typeof t||(n=t,t=void 0);var s={requests:a(e,function(e){var r={indexName:i.indexName,objectID:e};return t&&(r.attributesToRetrieve=t.join(",")),r})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:s,callback:n})},i.prototype.as=null,i.prototype.indexName=null,i.prototype.typeAheadArgs=null,i.prototype.typeAheadValueOption=null},function(e,t){e.exports=function(e,t){t(e,0)}},function(e,t,r){(function(t){e.exports=c;var n=r(5),o=r(29),a=r(28),i=r(22),s=t.env.RESET_APP_DATA_TIMER&&parseInt(t.env.RESET_APP_DATA_TIMER,10)||12e4;function c(e,t,o){var a=r(2)("algoliasearch"),i=r(0),s=r(4),c=r(3),l="Usage: algoliasearch(applicationID, apiKey, opts)";if(!0!==o._allowEmptyCredentials&&!e)throw new n.AlgoliaSearchError("Please provide an application ID. "+l);if(!0!==o._allowEmptyCredentials&&!t)throw new n.AlgoliaSearchError("Please provide an API key. "+l);this.applicationID=e,this.apiKey=t,this.hosts={read:[],write:[]},o=o||{},this._timeouts=o.timeouts||{connect:1e3,read:2e3,write:3e4},o.timeout&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=o.timeout);var p=o.protocol||"https:";if(/:$/.test(p)||(p+=":"),"http:"!==p&&"https:"!==p)throw new n.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+o.protocol+"`)");if(this._checkAppIdData(),o.hosts)s(o.hosts)?(this.hosts.read=i(o.hosts),this.hosts.write=i(o.hosts)):(this.hosts.read=i(o.hosts.read),this.hosts.write=i(o.hosts.write));else{var h=c(this._shuffleResult,function(t){return e+"-"+t+".algolianet.com"}),f=(!1===o.dsn?"":"-dsn")+".algolia.net";this.hosts.read=[this.applicationID+f].concat(h),this.hosts.write=[this.applicationID+".algolia.net"].concat(h)}this.hosts.read=c(this.hosts.read,u(p)),this.hosts.write=c(this.hosts.write,u(p)),this.extraHeaders={},this.cache=o._cache||{},this._ua=o._ua,this._useCache=!(void 0!==o._useCache&&!o._cache)||o._useCache,this._useRequestCache=this._useCache&&o._useRequestCache,this._useFallback=void 0===o.useFallback||o.useFallback,this._setTimeout=o._setTimeout,a("init done, %j",this)}function u(e){return function(t){return e+"//"+t.toLowerCase()}}function l(e){if(void 0===Array.prototype.toJSON)return JSON.stringify(e);var t=Array.prototype.toJSON;delete Array.prototype.toJSON;var r=JSON.stringify(e);return Array.prototype.toJSON=t,r}function p(e){var t={};for(var r in e){var n;if(Object.prototype.hasOwnProperty.call(e,r))n="x-algolia-api-key"===r||"x-algolia-application-id"===r?"**hidden for security purposes**":e[r],t[r]=n}return t}c.prototype.initIndex=function(e){return new a(this,e)},c.prototype.setExtraHeader=function(e,t){this.extraHeaders[e.toLowerCase()]=t},c.prototype.getExtraHeader=function(e){return this.extraHeaders[e.toLowerCase()]},c.prototype.unsetExtraHeader=function(e){delete this.extraHeaders[e.toLowerCase()]},c.prototype.addAlgoliaAgent=function(e){-1===this._ua.indexOf(";"+e)&&(this._ua+=";"+e)},c.prototype._jsonRequest=function(e){this._checkAppIdData();var t,a,i,s=r(2)("algoliasearch:"+e.url),c=e.additionalUA||"",u=e.cache,h=this,f=0,d=!1,y=h._useFallback&&h._request.fallback&&e.fallback;this.apiKey.length>500&&void 0!==e.body&&(void 0!==e.body.params||void 0!==e.body.requests)?(e.body.apiKey=this.apiKey,i=this._computeRequestHeaders({additionalUA:c,withApiKey:!1,headers:e.headers})):i=this._computeRequestHeaders({additionalUA:c,headers:e.headers}),void 0!==e.body&&(t=l(e.body)),s("request start");var m=[];function g(e,t,r){return h._useCache&&e&&t&&void 0!==t[r]}function v(t,r){if(g(h._useRequestCache,u,a)&&t.catch(function(){delete u[a]}),"function"!=typeof e.callback)return t.then(r);t.then(function(t){o(function(){e.callback(null,r(t))},h._setTimeout||setTimeout)},function(t){o(function(){e.callback(t)},h._setTimeout||setTimeout)})}if(h._useCache&&h._useRequestCache&&(a=e.url),h._useCache&&h._useRequestCache&&t&&(a+="_body_"+t),g(h._useRequestCache,u,a)){s("serving request from cache");var b=u[a];return v("function"!=typeof b.then?h._promise.resolve({responseText:b}):b,function(e){return JSON.parse(e.responseText)})}var w=function r(o,v){h._checkAppIdData();var b=new Date;if(h._useCache&&!h._useRequestCache&&(a=e.url),h._useCache&&!h._useRequestCache&&t&&(a+="_body_"+v.body),g(!h._useRequestCache,u,a)){s("serving response from cache");var w=u[a];return h._promise.resolve({body:JSON.parse(w),responseText:w})}if(f>=h.hosts[e.hostType].length)return!y||d?(s("could not get any response"),h._promise.reject(new n.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to support@algolia.com to report and resolve the issue. Application id was: "+h.applicationID,{debugData:m}))):(s("switching to fallback"),f=0,v.method=e.fallback.method,v.url=e.fallback.url,v.jsonBody=e.fallback.body,v.jsonBody&&(v.body=l(v.jsonBody)),i=h._computeRequestHeaders({additionalUA:c,headers:e.headers}),v.timeouts=h._getTimeoutsForRequest(e.hostType),h._setHostIndexByType(0,e.hostType),d=!0,r(h._request.fallback,v));var _=h._getHostByType(e.hostType),x=_+v.url,T={body:v.body,jsonBody:v.jsonBody,method:v.method,headers:i,timeouts:v.timeouts,debug:s,forceAuthHeaders:v.forceAuthHeaders};return s("method: %s, url: %s, headers: %j, timeouts: %d",T.method,x,T.headers,T.timeouts),o===h._request.fallback&&s("using fallback"),o.call(h,x,T).then(function(e){var r=e&&e.body&&e.body.message&&e.body.status||e.statusCode||e&&e.body&&200;s("received response: statusCode: %s, computed statusCode: %d, headers: %j",e.statusCode,r,e.headers);var o=2===Math.floor(r/100),c=new Date;if(m.push({currentHost:_,headers:p(i),content:t||null,contentLength:void 0!==t?t.length:null,method:v.method,timeouts:v.timeouts,url:v.url,startTime:b,endTime:c,duration:c-b,statusCode:r}),o)return h._useCache&&!h._useRequestCache&&u&&(u[a]=e.responseText),{responseText:e.responseText,body:e.body};if(4!==Math.floor(r/100))return f+=1,S();s("unrecoverable error");var l=new n.AlgoliaSearchError(e.body&&e.body.message,{debugData:m,statusCode:r});return h._promise.reject(l)},function(a){s("error: %s, stack: %s",a.message,a.stack);var c=new Date;return m.push({currentHost:_,headers:p(i),content:t||null,contentLength:void 0!==t?t.length:null,method:v.method,timeouts:v.timeouts,url:v.url,startTime:b,endTime:c,duration:c-b}),a instanceof n.AlgoliaSearchError||(a=new n.Unknown(a&&a.message,a)),f+=1,a instanceof n.Unknown||a instanceof n.UnparsableJSON||f>=h.hosts[e.hostType].length&&(d||!y)?(a.debugData=m,h._promise.reject(a)):a instanceof n.RequestTimeout?(s("retrying request with higher timeout"),h._incrementHostIndex(e.hostType),h._incrementTimeoutMultipler(),v.timeouts=h._getTimeoutsForRequest(e.hostType),r(o,v)):S()});function S(){return s("retrying request"),h._incrementHostIndex(e.hostType),r(o,v)}}(h._request,{url:e.url,method:e.method,body:t,jsonBody:e.body,timeouts:h._getTimeoutsForRequest(e.hostType),forceAuthHeaders:e.forceAuthHeaders});return h._useCache&&h._useRequestCache&&u&&(u[a]=w),v(w,function(e){return e.body})},c.prototype._getSearchParams=function(e,t){if(void 0===e||null===e)return t;for(var r in e)null!==r&&void 0!==e[r]&&e.hasOwnProperty(r)&&(t+=""===t?"":"&",t+=r+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(e[r])?l(e[r]):e[r]));return t},c.prototype._computeRequestHeaders=function(e){var t=r(1),n={"x-algolia-agent":e.additionalUA?this._ua+";"+e.additionalUA:this._ua,"x-algolia-application-id":this.applicationID};return!1!==e.withApiKey&&(n["x-algolia-api-key"]=this.apiKey),this.userToken&&(n["x-algolia-usertoken"]=this.userToken),this.securityTags&&(n["x-algolia-tagfilters"]=this.securityTags),t(this.extraHeaders,function(e,t){n[t]=e}),e.headers&&t(e.headers,function(e,t){n[t]=e}),n},c.prototype.search=function(e,t,n){var o=r(4),a=r(3);if(!o(e))throw new Error("Usage: client.search(arrayOfQueries[, callback])");"function"==typeof t?(n=t,t={}):void 0===t&&(t={});var i=this,s={requests:a(e,function(e){var t="";return void 0!==e.query&&(t+="query="+encodeURIComponent(e.query)),{indexName:e.indexName,params:i._getSearchParams(e.params,t)}})},c=a(s.requests,function(e,t){return t+"="+encodeURIComponent("/1/indexes/"+encodeURIComponent(e.indexName)+"?"+e.params)}).join("&"),u="/1/indexes/*/queries";return void 0!==t.strategy&&(u+="?strategy="+t.strategy),this._jsonRequest({cache:this.cache,method:"POST",url:u,body:s,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:c}},callback:n})},c.prototype.searchForFacetValues=function(e){var t=r(4),n=r(3),o="Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])";if(!t(e))throw new Error(o);var a=this;return a._promise.all(n(e,function(e){if(!e||void 0===e.indexName||void 0===e.params.facetName||void 0===e.params.facetQuery)throw new Error(o);var t=r(0),n=r(9),i=e.indexName,s=e.params,c=s.facetName,u=n(t(s),function(e){return"facetName"===e}),l=a._getSearchParams(u,"");return a._jsonRequest({cache:a.cache,method:"POST",url:"/1/indexes/"+encodeURIComponent(i)+"/facets/"+encodeURIComponent(c)+"/query",hostType:"read",body:{params:l}})}))},c.prototype.setSecurityTags=function(e){if("[object Array]"===Object.prototype.toString.call(e)){for(var t=[],r=0;r<e.length;++r)if("[object Array]"===Object.prototype.toString.call(e[r])){for(var n=[],o=0;o<e[r].length;++o)n.push(e[r][o]);t.push("("+n.join(",")+")")}else t.push(e[r]);e=t.join(",")}this.securityTags=e},c.prototype.setUserToken=function(e){this.userToken=e},c.prototype.clearCache=function(){this.cache={}},c.prototype.setRequestTimeout=function(e){e&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=e)},c.prototype.setTimeouts=function(e){this._timeouts=e},c.prototype.getTimeouts=function(){return this._timeouts},c.prototype._getAppIdData=function(){var e=i.get(this.applicationID);return null!==e&&this._cacheAppIdData(e),e},c.prototype._setAppIdData=function(e){return e.lastChange=(new Date).getTime(),this._cacheAppIdData(e),i.set(this.applicationID,e)},c.prototype._checkAppIdData=function(){var e=this._getAppIdData(),t=(new Date).getTime();return null===e||t-e.lastChange>s?this._resetInitialAppIdData(e):e},c.prototype._resetInitialAppIdData=function(e){var t=e||{};return t.hostIndexes={read:0,write:0},t.timeoutMultiplier=1,t.shuffleResult=t.shuffleResult||function(e){var t,r,n=e.length;for(;0!==n;)r=Math.floor(Math.random()*n),t=e[n-=1],e[n]=e[r],e[r]=t;return e}([1,2,3]),this._setAppIdData(t)},c.prototype._cacheAppIdData=function(e){this._hostIndexes=e.hostIndexes,this._timeoutMultiplier=e.timeoutMultiplier,this._shuffleResult=e.shuffleResult},c.prototype._partialAppIdDataUpdate=function(e){var t=r(1),n=this._getAppIdData();return t(e,function(e,t){n[t]=e}),this._setAppIdData(n)},c.prototype._getHostByType=function(e){return this.hosts[e][this._getHostIndexByType(e)]},c.prototype._getTimeoutMultiplier=function(){return this._timeoutMultiplier},c.prototype._getHostIndexByType=function(e){return this._hostIndexes[e]},c.prototype._setHostIndexByType=function(e,t){var n=r(0)(this._hostIndexes);return n[t]=e,this._partialAppIdDataUpdate({hostIndexes:n}),e},c.prototype._incrementHostIndex=function(e){return this._setHostIndexByType((this._getHostIndexByType(e)+1)%this.hosts[e].length,e)},c.prototype._incrementTimeoutMultipler=function(){var e=Math.max(this._timeoutMultiplier+1,4);return this._partialAppIdDataUpdate({timeoutMultiplier:e})},c.prototype._getTimeoutsForRequest=function(e){return{connect:this._timeouts.connect*this._timeoutMultiplier,complete:this._timeouts[e]*this._timeoutMultiplier}}}).call(this,r(7))},function(e,t,r){"use strict";var n=r(30),o=r(19);e.exports=o(n,"(lite) ")},function(e,t,r){"use strict";var n,o=r(31),a=(n=o)&&n.__esModule?n:{default:n},i=r(8);var s=window.algolia,c=s.appId,u=s.indexName,l=s.searchApiKey,p=(0,a.default)(c,l).initIndex(""+u+window.location.pathname.replace("/search/","")),h=function(e,t){(0,i.setSearchingIndicator)(t),e?p.search(e,{attributesToRetrieve:["title","href"],hitsPerPage:10},function(e,r){e?console.error(e):(0,i.appendResults)(r.hits,t)}):(0,i.appendResults)([],t)},f=document.getElementById("search-form"),d=document.getElementById("search-term"),y=document.getElementById("search-results"),m=(0,i.getUrlSearchParam)("q");d.value=m,d.focus(),h(m,y),f.addEventListener("submit",function(e){e.preventDefault(),h(d.value,y)})}]); \ No newline at end of file
+ */var n;n=function(){"use strict";function e(e){return"function"==typeof e}var n=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},o=0,a=void 0,s=void 0,i=function(e,t){d[o]=e,d[o+1]=t,2===(o+=2)&&(s?s(y):w())};var c="undefined"!=typeof window?window:void 0,u=c||{},l=u.MutationObserver||u.WebKitMutationObserver,p="undefined"==typeof self&&void 0!==t&&"[object process]"==={}.toString.call(t),h="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function f(){var e=setTimeout;return function(){return e(y,1)}}var d=new Array(1e3);function y(){for(var e=0;e<o;e+=2){(0,d[e])(d[e+1]),d[e]=void 0,d[e+1]=void 0}o=0}var m,g,v,b,w=void 0;function _(e,t){var r=this,n=new this.constructor(S);void 0===n[T]&&M(n);var o=r._state;if(o){var a=arguments[o-1];i(function(){return D(o,n,a,r._result)})}else P(r,n,e,t);return n}function x(e){if(e&&"object"==typeof e&&e.constructor===this)return e;var t=new this(S);return C(t,e),t}p?w=function(){return t.nextTick(y)}:l?(g=0,v=new l(y),b=document.createTextNode(""),v.observe(b,{characterData:!0}),w=function(){b.data=g=++g%2}):h?((m=new MessageChannel).port1.onmessage=y,w=function(){return m.port2.postMessage(0)}):w=void 0===c?function(){try{var e=Function("return this")().require("vertx");return void 0!==(a=e.runOnLoop||e.runOnContext)?function(){a(y)}:f()}catch(e){return f()}}():f();var T=Math.random().toString(36).substring(2);function S(){}var A=void 0,j=1,O=2,R={error:null};function k(e){try{return e.then}catch(e){return R.error=e,R}}function I(t,r,n){r.constructor===t.constructor&&n===_&&r.constructor.resolve===x?function(e,t){t._state===j?E(e,t._result):t._state===O?N(e,t._result):P(t,void 0,function(t){return C(e,t)},function(t){return N(e,t)})}(t,r):n===R?(N(t,R.error),R.error=null):void 0===n?E(t,r):e(n)?function(e,t,r){i(function(e){var n=!1,o=function(e,t,r,n){try{e.call(t,r,n)}catch(e){return e}}(r,t,function(r){n||(n=!0,t!==r?C(e,r):E(e,r))},function(t){n||(n=!0,N(e,t))},e._label);!n&&o&&(n=!0,N(e,o))},e)}(t,r,n):E(t,r)}function C(e,t){var r,n;e===t?N(e,new TypeError("You cannot resolve a promise with itself")):(n=typeof(r=t),null===r||"object"!==n&&"function"!==n?E(e,t):I(e,t,k(t)))}function q(e){e._onerror&&e._onerror(e._result),U(e)}function E(e,t){e._state===A&&(e._result=t,e._state=j,0!==e._subscribers.length&&i(U,e))}function N(e,t){e._state===A&&(e._state=O,e._result=t,i(q,e))}function P(e,t,r,n){var o=e._subscribers,a=o.length;e._onerror=null,o[a]=t,o[a+j]=r,o[a+O]=n,0===a&&e._state&&i(U,e)}function U(e){var t=e._subscribers,r=e._state;if(0!==t.length){for(var n=void 0,o=void 0,a=e._result,s=0;s<t.length;s+=3)n=t[s],o=t[s+r],n?D(r,n,o,a):o(a);e._subscribers.length=0}}function D(t,r,n,o){var a=e(n),s=void 0,i=void 0,c=void 0,u=void 0;if(a){if((s=function(e,t){try{return e(t)}catch(e){return R.error=e,R}}(n,o))===R?(u=!0,i=s.error,s.error=null):c=!0,r===s)return void N(r,new TypeError("A promises callback cannot return that same promise."))}else s=o,c=!0;r._state!==A||(a&&c?C(r,s):u?N(r,i):t===j?E(r,s):t===O&&N(r,s))}var H=0;function M(e){e[T]=H++,e._state=void 0,e._result=void 0,e._subscribers=[]}var J=function(){function e(e,t){this._instanceConstructor=e,this.promise=new e(S),this.promise[T]||M(this.promise),n(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?E(this.promise,this._result):(this.length=this.length||0,this._enumerate(t),0===this._remaining&&E(this.promise,this._result))):N(this.promise,new Error("Array Methods must be provided an Array"))}return e.prototype._enumerate=function(e){for(var t=0;this._state===A&&t<e.length;t++)this._eachEntry(e[t],t)},e.prototype._eachEntry=function(e,t){var r=this._instanceConstructor,n=r.resolve;if(n===x){var o=k(e);if(o===_&&e._state!==A)this._settledAt(e._state,t,e._result);else if("function"!=typeof o)this._remaining--,this._result[t]=e;else if(r===F){var a=new r(S);I(a,e,o),this._willSettleAt(a,t)}else this._willSettleAt(new r(function(t){return t(e)}),t)}else this._willSettleAt(n(e),t)},e.prototype._settledAt=function(e,t,r){var n=this.promise;n._state===A&&(this._remaining--,e===O?N(n,r):this._result[t]=r),0===this._remaining&&E(n,this._result)},e.prototype._willSettleAt=function(e,t){var r=this;P(e,void 0,function(e){return r._settledAt(j,t,e)},function(e){return r._settledAt(O,t,e)})},e}();var F=function(){function e(t){this[T]=H++,this._result=this._state=void 0,this._subscribers=[],S!==t&&("function"!=typeof t&&function(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}(),this instanceof e?function(e,t){try{t(function(t){C(e,t)},function(t){N(e,t)})}catch(t){N(e,t)}}(this,t):function(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}())}return e.prototype.catch=function(e){return this.then(null,e)},e.prototype.finally=function(e){var t=this.constructor;return this.then(function(r){return t.resolve(e()).then(function(){return r})},function(r){return t.resolve(e()).then(function(){throw r})})},e}();return F.prototype.then=_,F.all=function(e){return new J(this,e).promise},F.race=function(e){var t=this;return n(e)?new t(function(r,n){for(var o=e.length,a=0;a<o;a++)t.resolve(e[a]).then(r,n)}):new t(function(e,t){return t(new TypeError("You must pass an array to race."))})},F.resolve=x,F.reject=function(e){var t=new this(S);return N(t,e),t},F._setScheduler=function(e){s=e},F._setAsap=function(e){i=e},F._asap=i,F.polyfill=function(){var e=void 0;if(void 0!==r)e=r;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var n=null;try{n=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===n&&!t.cast)return}e.Promise=F},F.Promise=F,F},e.exports=n()}).call(this,r(8),r(7))},function(e,t,r){(function(t){var r;r="undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{},e.exports=r}).call(this,r(7))},function(e,t,r){"use strict";var n=r(22),o=n.Promise||r(21).Promise;e.exports=function(e,t){var a=r(11),s=r(6),i=r(20),c=r(18),u=r(17);function l(e,t,n){return(n=r(0)(n||{}))._ua=n._ua||l.ua,new h(e,t,n)}t=t||"",l.version=r(16),l.ua="Algolia for vanilla JavaScript "+t+l.version,l.initPlaces=u(l),n.__algolia={debug:r(3),algoliasearch:l};var p={hasXMLHttpRequest:"XMLHttpRequest"in n,hasXDomainRequest:"XDomainRequest"in n};function h(){e.apply(this,arguments)}return p.hasXMLHttpRequest&&(p.cors="withCredentials"in new XMLHttpRequest),a(h,e),h.prototype._request=function(e,t){return new o(function(r,n){if(p.cors||p.hasXDomainRequest){e=i(e,t.headers);var o,a,c=t.body,u=p.cors?new XMLHttpRequest:new XDomainRequest,l=!1;o=setTimeout(h,t.timeouts.connect),u.onprogress=function(){l||f()},"onreadystatechange"in u&&(u.onreadystatechange=function(){!l&&u.readyState>1&&f()}),u.onload=function(){if(a)return;var e;clearTimeout(o);try{e={body:JSON.parse(u.responseText),responseText:u.responseText,statusCode:u.status,headers:u.getAllResponseHeaders&&u.getAllResponseHeaders()||{}}}catch(t){e=new s.UnparsableJSON({more:u.responseText})}e instanceof s.UnparsableJSON?n(e):r(e)},u.onerror=function(e){if(a)return;clearTimeout(o),n(new s.Network({more:e}))},u instanceof XMLHttpRequest?(u.open(t.method,e,!0),t.forceAuthHeaders&&(u.setRequestHeader("x-algolia-application-id",t.headers["x-algolia-application-id"]),u.setRequestHeader("x-algolia-api-key",t.headers["x-algolia-api-key"]))):u.open(t.method,e),p.cors&&(c&&("POST"===t.method?u.setRequestHeader("content-type","application/x-www-form-urlencoded"):u.setRequestHeader("content-type","application/json")),u.setRequestHeader("accept","application/json")),c?u.send(c):u.send()}else n(new s.Network("CORS not supported"));function h(){a=!0,u.abort(),n(new s.RequestTimeout)}function f(){l=!0,clearTimeout(o),o=setTimeout(h,t.timeouts.complete)}})},h.prototype._request.fallback=function(e,t){return e=i(e,t.headers),new o(function(r,n){c(e,t,function(e,t){e?n(e):r(t)})})},h.prototype._promise={reject:function(e){return o.reject(e)},resolve:function(e){return o.resolve(e)},delay:function(e){return new o(function(t){setTimeout(t,e)})},all:function(e){return o.all(e)}},l}},function(e,t){var r=1e3,n=60*r,o=60*n,a=24*o,s=365.25*a;function i(e,t,r){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+r:Math.ceil(e/t)+" "+r+"s"}e.exports=function(e,t){t=t||{};var c,u=typeof e;if("string"===u&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!t)return;var i=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return i*s;case"days":case"day":case"d":return i*a;case"hours":case"hour":case"hrs":case"hr":case"h":return i*o;case"minutes":case"minute":case"mins":case"min":case"m":return i*n;case"seconds":case"second":case"secs":case"sec":case"s":return i*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}(e);if("number"===u&&!1===isNaN(e))return t.long?i(c=e,a,"day")||i(c,o,"hour")||i(c,n,"minute")||i(c,r,"second")||c+" ms":function(e){if(e>=a)return Math.round(e/a)+"d";if(e>=o)return Math.round(e/o)+"h";if(e>=n)return Math.round(e/n)+"m";if(e>=r)return Math.round(e/r)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,r){var n;function o(e){function r(){if(r.enabled){var e=r,o=+new Date,a=o-(n||o);e.diff=a,e.prev=n,e.curr=o,n=o;for(var s=new Array(arguments.length),i=0;i<s.length;i++)s[i]=arguments[i];s[0]=t.coerce(s[0]),"string"!=typeof s[0]&&s.unshift("%O");var c=0;s[0]=s[0].replace(/%([a-zA-Z%])/g,function(r,n){if("%%"===r)return r;c++;var o=t.formatters[n];if("function"==typeof o){var a=s[c];r=o.call(e,a),s.splice(c,1),c--}return r}),t.formatArgs.call(e,s),(r.log||t.log||console.log.bind(console)).apply(e,s)}}return r.namespace=e,r.enabled=t.enabled(e),r.useColors=t.useColors(),r.color=function(e){var r,n=0;for(r in e)n=(n<<5)-n+e.charCodeAt(r),n|=0;return t.colors[Math.abs(n)%t.colors.length]}(e),"function"==typeof t.init&&t.init(r),r}(t=e.exports=o.debug=o.default=o).coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){t.enable("")},t.enable=function(e){t.save(e),t.names=[],t.skips=[];for(var r=("string"==typeof e?e:"").split(/[\s,]+/),n=r.length,o=0;o<n;o++)r[o]&&("-"===(e=r[o].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){var r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=r(24),t.names=[],t.skips=[],t.formatters={}},function(e,t,r){(function(t){var n,o=r(3)("algoliasearch:src/hostIndexState.js"),a="algoliasearch-client-js",s={state:{},set:function(e,t){return this.state[e]=t,this.state[e]},get:function(e){return this.state[e]||null}},i={set:function(e,r){s.set(e,r);try{var n=JSON.parse(t.localStorage[a]);return n[e]=r,t.localStorage[a]=JSON.stringify(n),n[e]}catch(t){return c(e,t)}},get:function(e){try{return JSON.parse(t.localStorage[a])[e]||null}catch(t){return c(e,t)}}};function c(e,r){return o("localStorage failed with",r),function(){try{t.localStorage.removeItem(a)}catch(e){}}(),(n=s).get(e)}function u(e,t){return 1===arguments.length?n.get(e):n.set(e,t)}function l(){try{return"localStorage"in t&&null!==t.localStorage&&(t.localStorage[a]||t.localStorage.setItem(a,JSON.stringify({})),!0)}catch(e){return!1}}n=l()?i:s,e.exports={get:u,set:u,supportsLocalStorage:l}}).call(this,r(7))},function(e,t,r){"use strict";var n=Object.prototype.toString;e.exports=function(e){var t=n.call(e),r="[object Arguments]"===t;return r||(r="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===n.call(e.callee)),r}},function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,a=Array.prototype.slice,s=r(27),i=Object.prototype.propertyIsEnumerable,c=!i.call({toString:null},"toString"),u=i.call(function(){},"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],p=function(e){var t=e.constructor;return t&&t.prototype===e},h={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!h["$"+e]&&n.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{p(window[e])}catch(e){return!0}}catch(e){return!0}return!1}(),d=function(e){var t=null!==e&&"object"==typeof e,r="[object Function]"===o.call(e),a=s(e),i=t&&"[object String]"===o.call(e),h=[];if(!t&&!r&&!a)throw new TypeError("Object.keys called on a non-object");var d=u&&r;if(i&&e.length>0&&!n.call(e,0))for(var y=0;y<e.length;++y)h.push(String(y));if(a&&e.length>0)for(var m=0;m<e.length;++m)h.push(String(m));else for(var g in e)d&&"prototype"===g||!n.call(e,g)||h.push(String(g));if(c)for(var v=function(e){if("undefined"==typeof window||!f)return p(e);try{return p(e)}catch(e){return!1}}(e),b=0;b<l.length;++b)v&&"constructor"===l[b]||!n.call(e,l[b])||h.push(l[b]);return h};d.shim=function(){if(Object.keys){if(!function(){return 2===(Object.keys(arguments)||"").length}(1,2)){var e=Object.keys;Object.keys=function(t){return s(t)?e(a.call(t)):e(t)}}}else Object.keys=d;return Object.keys||d},e.exports=d},function(e,t,r){var n=r(1);e.exports=function e(t){var r=Array.prototype.slice.call(arguments);return n(r,function(r){for(var n in r)r.hasOwnProperty(n)&&("object"==typeof t[n]&&"object"==typeof r[n]?t[n]=e({},t[n],r[n]):void 0!==r[n]&&(t[n]=r[n]))}),t}},function(e,t){e.exports=function(e,t){return"algoliasearch: `"+e+"` was replaced by `"+t+"`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#"+e.toLowerCase().replace(/[\.\(\)]/g,"")}},function(e,t){e.exports=function(e,t){var r=!1;return function(){return r||(console.warn(t),r=!0),e.apply(this,arguments)}}},function(e,t,r){var n=r(10),o=r(31),a=r(30);function s(e,t){this.indexName=t,this.as=e,this.typeAheadArgs=null,this.typeAheadValueOption=null,this.cache={}}e.exports=s,s.prototype.clearCache=function(){this.cache={}},s.prototype.search=n("query"),s.prototype.similarSearch=n("similarQuery"),s.prototype.browse=function(e,t,n){var o,a,s=r(29);0===arguments.length||1===arguments.length&&"function"==typeof arguments[0]?(o=0,n=arguments[0],e=void 0):"number"==typeof arguments[0]?(o=arguments[0],"number"==typeof arguments[1]?a=arguments[1]:"function"==typeof arguments[1]&&(n=arguments[1],a=void 0),e=void 0,t=void 0):"object"==typeof arguments[0]?("function"==typeof arguments[1]&&(n=arguments[1]),t=arguments[0],e=void 0):"string"==typeof arguments[0]&&"function"==typeof arguments[1]&&(n=arguments[1],t=void 0),t=s({},t||{},{page:o,hitsPerPage:a,query:e});var i=this.as._getSearchParams(t,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse",body:{params:i},hostType:"read",callback:n})},s.prototype.browseFrom=function(e,t){return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/browse",body:{cursor:e},hostType:"read",callback:t})},s.prototype.searchForFacetValues=function(e,t){var n=r(0),o=r(9);if(void 0===e.facetName||void 0===e.facetQuery)throw new Error("Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])");var a=e.facetName,s=o(n(e),function(e){return"facetName"===e}),i=this.as._getSearchParams(s,"");return this.as._jsonRequest({method:"POST",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/facets/"+encodeURIComponent(a)+"/query",hostType:"read",body:{params:i},callback:t})},s.prototype.searchFacet=o(function(e,t){return this.searchForFacetValues(e,t)},a("index.searchFacet(params[, callback])","index.searchForFacetValues(params[, callback])")),s.prototype._search=function(e,t,r,n){return this.as._jsonRequest({cache:this.cache,method:"POST",url:t||"/1/indexes/"+encodeURIComponent(this.indexName)+"/query",body:{params:e},hostType:"read",fallback:{method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName),body:{params:e}},callback:r,additionalUA:n})},s.prototype.getObject=function(e,t,r){1!==arguments.length&&"function"!=typeof t||(r=t,t=void 0);var n="";if(void 0!==t){n="?attributes=";for(var o=0;o<t.length;++o)0!==o&&(n+=","),n+=t[o]}return this.as._jsonRequest({method:"GET",url:"/1/indexes/"+encodeURIComponent(this.indexName)+"/"+encodeURIComponent(e)+n,hostType:"read",callback:r})},s.prototype.getObjects=function(e,t,n){var o=r(5),a=r(4);if(!o(e))throw new Error("Usage: index.getObjects(arrayOfObjectIDs[, callback])");var s=this;1!==arguments.length&&"function"!=typeof t||(n=t,t=void 0);var i={requests:a(e,function(e){var r={indexName:s.indexName,objectID:e};return t&&(r.attributesToRetrieve=t.join(",")),r})};return this.as._jsonRequest({method:"POST",url:"/1/indexes/*/objects",hostType:"read",body:i,callback:n})},s.prototype.as=null,s.prototype.indexName=null,s.prototype.typeAheadArgs=null,s.prototype.typeAheadValueOption=null},function(e,t){e.exports=function(e,t){t(e,0)}},function(e,t,r){(function(t){e.exports=c;var n=r(6),o=r(33),a=r(32),s=r(26),i=t.env.RESET_APP_DATA_TIMER&&parseInt(t.env.RESET_APP_DATA_TIMER,10)||12e4;function c(e,t,o){var a=r(3)("algoliasearch"),s=r(0),i=r(5),c=r(4),l="Usage: algoliasearch(applicationID, apiKey, opts)";if(!0!==o._allowEmptyCredentials&&!e)throw new n.AlgoliaSearchError("Please provide an application ID. "+l);if(!0!==o._allowEmptyCredentials&&!t)throw new n.AlgoliaSearchError("Please provide an API key. "+l);this.applicationID=e,this.apiKey=t,this.hosts={read:[],write:[]},o=o||{},this._timeouts=o.timeouts||{connect:1e3,read:2e3,write:3e4},o.timeout&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=o.timeout);var p=o.protocol||"https:";if(/:$/.test(p)||(p+=":"),"http:"!==p&&"https:"!==p)throw new n.AlgoliaSearchError("protocol must be `http:` or `https:` (was `"+o.protocol+"`)");if(this._checkAppIdData(),o.hosts)i(o.hosts)?(this.hosts.read=s(o.hosts),this.hosts.write=s(o.hosts)):(this.hosts.read=s(o.hosts.read),this.hosts.write=s(o.hosts.write));else{var h=c(this._shuffleResult,function(t){return e+"-"+t+".algolianet.com"}),f=(!1===o.dsn?"":"-dsn")+".algolia.net";this.hosts.read=[this.applicationID+f].concat(h),this.hosts.write=[this.applicationID+".algolia.net"].concat(h)}this.hosts.read=c(this.hosts.read,u(p)),this.hosts.write=c(this.hosts.write,u(p)),this.extraHeaders={},this.cache=o._cache||{},this._ua=o._ua,this._useCache=!(void 0!==o._useCache&&!o._cache)||o._useCache,this._useRequestCache=this._useCache&&o._useRequestCache,this._useFallback=void 0===o.useFallback||o.useFallback,this._setTimeout=o._setTimeout,a("init done, %j",this)}function u(e){return function(t){return e+"//"+t.toLowerCase()}}function l(e){if(void 0===Array.prototype.toJSON)return JSON.stringify(e);var t=Array.prototype.toJSON;delete Array.prototype.toJSON;var r=JSON.stringify(e);return Array.prototype.toJSON=t,r}function p(e){var t={};for(var r in e){var n;if(Object.prototype.hasOwnProperty.call(e,r))n="x-algolia-api-key"===r||"x-algolia-application-id"===r?"**hidden for security purposes**":e[r],t[r]=n}return t}c.prototype.initIndex=function(e){return new a(this,e)},c.prototype.setExtraHeader=function(e,t){this.extraHeaders[e.toLowerCase()]=t},c.prototype.getExtraHeader=function(e){return this.extraHeaders[e.toLowerCase()]},c.prototype.unsetExtraHeader=function(e){delete this.extraHeaders[e.toLowerCase()]},c.prototype.addAlgoliaAgent=function(e){-1===this._ua.indexOf(";"+e)&&(this._ua+=";"+e)},c.prototype._jsonRequest=function(e){this._checkAppIdData();var t,a,s,i=r(3)("algoliasearch:"+e.url),c=e.additionalUA||"",u=e.cache,h=this,f=0,d=!1,y=h._useFallback&&h._request.fallback&&e.fallback;this.apiKey.length>500&&void 0!==e.body&&(void 0!==e.body.params||void 0!==e.body.requests)?(e.body.apiKey=this.apiKey,s=this._computeRequestHeaders({additionalUA:c,withApiKey:!1,headers:e.headers})):s=this._computeRequestHeaders({additionalUA:c,headers:e.headers}),void 0!==e.body&&(t=l(e.body)),i("request start");var m=[];function g(e,t,r){return h._useCache&&e&&t&&void 0!==t[r]}function v(t,r){if(g(h._useRequestCache,u,a)&&t.catch(function(){delete u[a]}),"function"!=typeof e.callback)return t.then(r);t.then(function(t){o(function(){e.callback(null,r(t))},h._setTimeout||setTimeout)},function(t){o(function(){e.callback(t)},h._setTimeout||setTimeout)})}if(h._useCache&&h._useRequestCache&&(a=e.url),h._useCache&&h._useRequestCache&&t&&(a+="_body_"+t),g(h._useRequestCache,u,a)){i("serving request from cache");var b=u[a];return v("function"!=typeof b.then?h._promise.resolve({responseText:b}):b,function(e){return JSON.parse(e.responseText)})}var w=function r(o,v){h._checkAppIdData();var b=new Date;if(h._useCache&&!h._useRequestCache&&(a=e.url),h._useCache&&!h._useRequestCache&&t&&(a+="_body_"+v.body),g(!h._useRequestCache,u,a)){i("serving response from cache");var w=u[a];return h._promise.resolve({body:JSON.parse(w),responseText:w})}if(f>=h.hosts[e.hostType].length)return!y||d?(i("could not get any response"),h._promise.reject(new n.AlgoliaSearchError("Cannot connect to the AlgoliaSearch API. Send an email to support@algolia.com to report and resolve the issue. Application id was: "+h.applicationID,{debugData:m}))):(i("switching to fallback"),f=0,v.method=e.fallback.method,v.url=e.fallback.url,v.jsonBody=e.fallback.body,v.jsonBody&&(v.body=l(v.jsonBody)),s=h._computeRequestHeaders({additionalUA:c,headers:e.headers}),v.timeouts=h._getTimeoutsForRequest(e.hostType),h._setHostIndexByType(0,e.hostType),d=!0,r(h._request.fallback,v));var _=h._getHostByType(e.hostType),x=_+v.url,T={body:v.body,jsonBody:v.jsonBody,method:v.method,headers:s,timeouts:v.timeouts,debug:i,forceAuthHeaders:v.forceAuthHeaders};return i("method: %s, url: %s, headers: %j, timeouts: %d",T.method,x,T.headers,T.timeouts),o===h._request.fallback&&i("using fallback"),o.call(h,x,T).then(function(e){var r=e&&e.body&&e.body.message&&e.body.status||e.statusCode||e&&e.body&&200;i("received response: statusCode: %s, computed statusCode: %d, headers: %j",e.statusCode,r,e.headers);var o=2===Math.floor(r/100),c=new Date;if(m.push({currentHost:_,headers:p(s),content:t||null,contentLength:void 0!==t?t.length:null,method:v.method,timeouts:v.timeouts,url:v.url,startTime:b,endTime:c,duration:c-b,statusCode:r}),o)return h._useCache&&!h._useRequestCache&&u&&(u[a]=e.responseText),{responseText:e.responseText,body:e.body};if(4!==Math.floor(r/100))return f+=1,S();i("unrecoverable error");var l=new n.AlgoliaSearchError(e.body&&e.body.message,{debugData:m,statusCode:r});return h._promise.reject(l)},function(a){i("error: %s, stack: %s",a.message,a.stack);var c=new Date;return m.push({currentHost:_,headers:p(s),content:t||null,contentLength:void 0!==t?t.length:null,method:v.method,timeouts:v.timeouts,url:v.url,startTime:b,endTime:c,duration:c-b}),a instanceof n.AlgoliaSearchError||(a=new n.Unknown(a&&a.message,a)),f+=1,a instanceof n.Unknown||a instanceof n.UnparsableJSON||f>=h.hosts[e.hostType].length&&(d||!y)?(a.debugData=m,h._promise.reject(a)):a instanceof n.RequestTimeout?(i("retrying request with higher timeout"),h._incrementHostIndex(e.hostType),h._incrementTimeoutMultipler(),v.timeouts=h._getTimeoutsForRequest(e.hostType),r(o,v)):S()});function S(){return i("retrying request"),h._incrementHostIndex(e.hostType),r(o,v)}}(h._request,{url:e.url,method:e.method,body:t,jsonBody:e.body,timeouts:h._getTimeoutsForRequest(e.hostType),forceAuthHeaders:e.forceAuthHeaders});return h._useCache&&h._useRequestCache&&u&&(u[a]=w),v(w,function(e){return e.body})},c.prototype._getSearchParams=function(e,t){if(void 0===e||null===e)return t;for(var r in e)null!==r&&void 0!==e[r]&&e.hasOwnProperty(r)&&(t+=""===t?"":"&",t+=r+"="+encodeURIComponent("[object Array]"===Object.prototype.toString.call(e[r])?l(e[r]):e[r]));return t},c.prototype._computeRequestHeaders=function(e){var t=r(1),n={"x-algolia-agent":e.additionalUA?this._ua+";"+e.additionalUA:this._ua,"x-algolia-application-id":this.applicationID};return!1!==e.withApiKey&&(n["x-algolia-api-key"]=this.apiKey),this.userToken&&(n["x-algolia-usertoken"]=this.userToken),this.securityTags&&(n["x-algolia-tagfilters"]=this.securityTags),t(this.extraHeaders,function(e,t){n[t]=e}),e.headers&&t(e.headers,function(e,t){n[t]=e}),n},c.prototype.search=function(e,t,n){var o=r(5),a=r(4);if(!o(e))throw new Error("Usage: client.search(arrayOfQueries[, callback])");"function"==typeof t?(n=t,t={}):void 0===t&&(t={});var s=this,i={requests:a(e,function(e){var t="";return void 0!==e.query&&(t+="query="+encodeURIComponent(e.query)),{indexName:e.indexName,params:s._getSearchParams(e.params,t)}})},c=a(i.requests,function(e,t){return t+"="+encodeURIComponent("/1/indexes/"+encodeURIComponent(e.indexName)+"?"+e.params)}).join("&"),u="/1/indexes/*/queries";return void 0!==t.strategy&&(u+="?strategy="+t.strategy),this._jsonRequest({cache:this.cache,method:"POST",url:u,body:i,hostType:"read",fallback:{method:"GET",url:"/1/indexes/*",body:{params:c}},callback:n})},c.prototype.searchForFacetValues=function(e){var t=r(5),n=r(4),o="Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])";if(!t(e))throw new Error(o);var a=this;return a._promise.all(n(e,function(e){if(!e||void 0===e.indexName||void 0===e.params.facetName||void 0===e.params.facetQuery)throw new Error(o);var t=r(0),n=r(9),s=e.indexName,i=e.params,c=i.facetName,u=n(t(i),function(e){return"facetName"===e}),l=a._getSearchParams(u,"");return a._jsonRequest({cache:a.cache,method:"POST",url:"/1/indexes/"+encodeURIComponent(s)+"/facets/"+encodeURIComponent(c)+"/query",hostType:"read",body:{params:l}})}))},c.prototype.setSecurityTags=function(e){if("[object Array]"===Object.prototype.toString.call(e)){for(var t=[],r=0;r<e.length;++r)if("[object Array]"===Object.prototype.toString.call(e[r])){for(var n=[],o=0;o<e[r].length;++o)n.push(e[r][o]);t.push("("+n.join(",")+")")}else t.push(e[r]);e=t.join(",")}this.securityTags=e},c.prototype.setUserToken=function(e){this.userToken=e},c.prototype.clearCache=function(){this.cache={}},c.prototype.setRequestTimeout=function(e){e&&(this._timeouts.connect=this._timeouts.read=this._timeouts.write=e)},c.prototype.setTimeouts=function(e){this._timeouts=e},c.prototype.getTimeouts=function(){return this._timeouts},c.prototype._getAppIdData=function(){var e=s.get(this.applicationID);return null!==e&&this._cacheAppIdData(e),e},c.prototype._setAppIdData=function(e){return e.lastChange=(new Date).getTime(),this._cacheAppIdData(e),s.set(this.applicationID,e)},c.prototype._checkAppIdData=function(){var e=this._getAppIdData(),t=(new Date).getTime();return null===e||t-e.lastChange>i?this._resetInitialAppIdData(e):e},c.prototype._resetInitialAppIdData=function(e){var t=e||{};return t.hostIndexes={read:0,write:0},t.timeoutMultiplier=1,t.shuffleResult=t.shuffleResult||function(e){var t,r,n=e.length;for(;0!==n;)r=Math.floor(Math.random()*n),t=e[n-=1],e[n]=e[r],e[r]=t;return e}([1,2,3]),this._setAppIdData(t)},c.prototype._cacheAppIdData=function(e){this._hostIndexes=e.hostIndexes,this._timeoutMultiplier=e.timeoutMultiplier,this._shuffleResult=e.shuffleResult},c.prototype._partialAppIdDataUpdate=function(e){var t=r(1),n=this._getAppIdData();return t(e,function(e,t){n[t]=e}),this._setAppIdData(n)},c.prototype._getHostByType=function(e){return this.hosts[e][this._getHostIndexByType(e)]},c.prototype._getTimeoutMultiplier=function(){return this._timeoutMultiplier},c.prototype._getHostIndexByType=function(e){return this._hostIndexes[e]},c.prototype._setHostIndexByType=function(e,t){var n=r(0)(this._hostIndexes);return n[t]=e,this._partialAppIdDataUpdate({hostIndexes:n}),e},c.prototype._incrementHostIndex=function(e){return this._setHostIndexByType((this._getHostIndexByType(e)+1)%this.hosts[e].length,e)},c.prototype._incrementTimeoutMultipler=function(){var e=Math.max(this._timeoutMultiplier+1,4);return this._partialAppIdDataUpdate({timeoutMultiplier:e})},c.prototype._getTimeoutsForRequest=function(e){return{connect:this._timeouts.connect*this._timeoutMultiplier,complete:this._timeouts[e]*this._timeoutMultiplier}}}).call(this,r(8))},function(e,t,r){"use strict";var n=r(34),o=r(23);e.exports=o(n,"(lite) ")},function(e,t,r){"use strict";var n,o=r(35),a=(n=o)&&n.__esModule?n:{default:n},s=r(2);var i=window.algolia,c=i.appId,u=i.indexName,l=i.searchApiKey,p=(0,a.default)(c,l).initIndex(""+u+window.location.pathname.replace("/search/","")),h=function(e,t){(0,s.setSearchingIndicator)(t),e?p.search(e,{attributesToRetrieve:["title","href"],hitsPerPage:10},function(e,r){e?console.error(e):(0,s.appendResults)(r.hits,t)}):(0,s.appendResults)([],t)},f=document.getElementById("search-form"),d=document.getElementById("search-term"),y=document.getElementById("search-results"),m=(0,s.getUrlSearchParam)("q");d.value=m,d.focus(),h(m,y),f.addEventListener("submit",function(e){e.preventDefault(),h(d.value,y)})}]); \ No newline at end of file
diff --git a/static/assets/js/comments.b0a2b5b1.js b/static/assets/js/comments.ecdd5e33.js
index 0a33565..6a121c1 100644
--- a/static/assets/js/comments.b0a2b5b1.js
+++ b/static/assets/js/comments.ecdd5e33.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{42:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=document.querySelector(".comment-list"),r=document.querySelector("#respond"),l=r.querySelector("form"),c=r.querySelector("#cancel-comment-reply-link"),i=r.querySelector('[name="fields[parent_id]"]'),u=function(e){if(e){var n=o.querySelector("#comment-"+e+" article");return i.value=e,n.parentNode.insertBefore(r,n.nextSibling),c.style.display="",l.querySelector("textarea").focus(),!1}};n.initComments=function(){c.style.display="none",c.addEventListener("click",function(e){e.preventDefault(),i.value="",o.parentNode.appendChild(r),c.style.display="none"}),window.moveRespondBlock=u}}}]); \ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{44:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=document.querySelector(".comment-list"),r=document.querySelector("#respond"),l=r.querySelector("form"),c=r.querySelector("#cancel-comment-reply-link"),i=r.querySelector('[name="fields[parent_id]"]'),u=function(e){if(e){var n=o.querySelector("#comment-"+e+" article");return i.value=e,n.parentNode.insertBefore(r,n.nextSibling),c.style.display="",l.querySelector("textarea").focus(),!1}};n.initComments=function(){c.style.display="none",c.addEventListener("click",function(e){e.preventDefault(),i.value="",o.parentNode.appendChild(r),c.style.display="none"}),window.moveRespondBlock=u}}}]); \ No newline at end of file
diff --git a/static/assets/js/details-polyfill.f919551f.js b/static/assets/js/details-polyfill.aab26f9f.js
index 42ed098..f37fb46 100644
--- a/static/assets/js/details-polyfill.f919551f.js
+++ b/static/assets/js/details-polyfill.aab26f9f.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{45:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=document.body;t.detailsPolyfill=function(e){(function(){var e=document.createElement("details");if(!("open"in e))return!1;e.innerHTML="<summary>a</summary>b",o.appendChild(e);var t=e.offsetHeight;e.open=!0;var n=t!=e.offsetHeight;return o.removeChild(e),n})()||(o.classList.add("no-details"),e.forEach(function(e){e.querySelector("summary").addEventListener("click",function(){e.getAttribute("open")?(e.open=!1,e.removeAttribute("open")):(e.open=!0,e.setAttribute("open","open"))})}))}}}]); \ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{47:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=document.body;t.detailsPolyfill=function(e){(function(){var e=document.createElement("details");if(!("open"in e))return!1;e.innerHTML="<summary>a</summary>b",o.appendChild(e);var t=e.offsetHeight;e.open=!0;var n=t!=e.offsetHeight;return o.removeChild(e),n})()||(o.classList.add("no-details"),e.forEach(function(e){e.querySelector("summary").addEventListener("click",function(){e.getAttribute("open")?(e.open=!1,e.removeAttribute("open")):(e.open=!0,e.setAttribute("open","open"))})}))}}}]); \ No newline at end of file
diff --git a/static/assets/js/fuse_search.cc21252e.js b/static/assets/js/fuse_search.cc21252e.js
new file mode 100644
index 0000000..aeb0e27
--- /dev/null
+++ b/static/assets/js/fuse_search.cc21252e.js
@@ -0,0 +1,10 @@
+!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=15)}({14:function(e,t,r){
+/*!
+ * Fuse.js v3.2.1 - Lightweight fuzzy-search (http://fusejs.io)
+ *
+ * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
+ * All Rights Reserved. Apache Software License 2.0
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+var n;n=function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.i=function(e){return e},r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=8)}([function(e,t,r){"use strict";e.exports=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){"use strict";var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();var o=r(5),i=r(7),a=r(4),s=function(){function e(t,r){var n=r.location,o=void 0===n?0:n,i=r.distance,s=void 0===i?100:i,c=r.threshold,h=void 0===c?.6:c,l=r.maxPatternLength,u=void 0===l?32:l,d=r.isCaseSensitive,f=void 0!==d&&d,v=r.tokenSeparator,p=void 0===v?/ +/g:v,g=r.findAllMatches,m=void 0!==g&&g,y=r.minMatchCharLength,x=void 0===y?1:y;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:o,distance:s,threshold:h,maxPatternLength:u,isCaseSensitive:f,tokenSeparator:p,findAllMatches:m,minMatchCharLength:x},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=u&&(this.patternAlphabet=a(this.pattern))}return n(e,[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,r=t.maxPatternLength,n=t.tokenSeparator;if(this.pattern.length>r)return o(e,this.pattern,n);var a=this.options,s=a.location,c=a.distance,h=a.threshold,l=a.findAllMatches,u=a.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:s,distance:c,threshold:h,findAllMatches:l,minMatchCharLength:u})}}]),e}();e.exports=s},function(e,t,r){"use strict";var n=r(0);e.exports=function(e,t){return function e(t,r,o){if(r){var i=r.indexOf("."),a=r,s=null;-1!==i&&(a=r.slice(0,i),s=r.slice(i+1));var c=t[a];if(null!==c&&void 0!==c)if(s||"string"!=typeof c&&"number"!=typeof c)if(n(c))for(var h=0,l=c.length;h<l;h+=1)e(c[h],s,o);else s&&e(c,s,o);else o.push(c.toString())}else o.push(t);return o}(e,t,[])}},function(e,t,r){"use strict";e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=[],n=-1,o=-1,i=0,a=e.length;i<a;i+=1){var s=e[i];s&&-1===n?n=i:s||-1===n||((o=i-1)-n+1>=t&&r.push([n,o]),n=-1)}return e[i-1]&&i-n>=t&&r.push([n,i-1]),r}},function(e,t,r){"use strict";e.exports=function(e){for(var t={},r=e.length,n=0;n<r;n+=1)t[e.charAt(n)]=0;for(var o=0;o<r;o+=1)t[e.charAt(o)]|=1<<r-o-1;return t}},function(e,t,r){"use strict";var n=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(n,"\\$&").replace(r,"|")),i=e.match(o),a=!!i,s=[];if(a)for(var c=0,h=i.length;c<h;c+=1){var l=i[c];s.push([e.indexOf(l),l.length-1])}return{score:a?.5:1,isMatch:a,matchedIndices:s}}},function(e,t,r){"use strict";e.exports=function(e,t){var r=t.errors,n=void 0===r?0:r,o=t.currentLocation,i=void 0===o?0:o,a=t.expectedLocation,s=void 0===a?0:a,c=t.distance,h=void 0===c?100:c,l=n/e.length,u=Math.abs(s-i);return h?l+u/h:u?1:l}},function(e,t,r){"use strict";var n=r(6),o=r(3);e.exports=function(e,t,r,i){for(var a=i.location,s=void 0===a?0:a,c=i.distance,h=void 0===c?100:c,l=i.threshold,u=void 0===l?.6:l,d=i.findAllMatches,f=void 0!==d&&d,v=i.minMatchCharLength,p=void 0===v?1:v,g=s,m=e.length,y=u,x=e.indexOf(t,g),k=t.length,S=[],M=0;M<m;M+=1)S[M]=0;if(-1!==x){var w=n(t,{errors:0,currentLocation:x,expectedLocation:g,distance:h});if(y=Math.min(w,y),-1!==(x=e.lastIndexOf(t,g+k))){var _=n(t,{errors:0,currentLocation:x,expectedLocation:g,distance:h});y=Math.min(_,y)}}x=-1;for(var L=[],b=1,I=k+m,A=1<<k-1,C=0;C<k;C+=1){for(var O=0,P=I;O<P;){n(t,{errors:C,currentLocation:g+P,expectedLocation:g,distance:h})<=y?O=P:I=P,P=Math.floor((I-O)/2+O)}I=P;var T=Math.max(1,g-P+1),E=f?m:Math.min(g+P,m)+k,j=Array(E+2);j[E+1]=(1<<C)-1;for(var z=E;z>=T;z-=1){var F=z-1,R=r[e.charAt(F)];if(R&&(S[F]=1),j[z]=(j[z+1]<<1|1)&R,0!==C&&(j[z]|=(L[z+1]|L[z])<<1|1|L[z+1]),j[z]&A&&(b=n(t,{errors:C,currentLocation:F,expectedLocation:g,distance:h}))<=y){if(y=b,(x=F)<=g)break;T=Math.max(1,2*g-x)}}if(n(t,{errors:C+1,currentLocation:g,expectedLocation:g,distance:h})>y)break;L=j}return{isMatch:x>=0,score:0===b?.001:b,matchedIndices:o(S,p)}}},function(e,t,r){"use strict";var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();var o=r(1),i=r(2),a=r(0),s=function(){function e(t,r){var n=r.location,o=void 0===n?0:n,a=r.distance,s=void 0===a?100:a,c=r.threshold,h=void 0===c?.6:c,l=r.maxPatternLength,u=void 0===l?32:l,d=r.caseSensitive,f=void 0!==d&&d,v=r.tokenSeparator,p=void 0===v?/ +/g:v,g=r.findAllMatches,m=void 0!==g&&g,y=r.minMatchCharLength,x=void 0===y?1:y,k=r.id,S=void 0===k?null:k,M=r.keys,w=void 0===M?[]:M,_=r.shouldSort,L=void 0===_||_,b=r.getFn,I=void 0===b?i:b,A=r.sortFn,C=void 0===A?function(e,t){return e.score-t.score}:A,O=r.tokenize,P=void 0!==O&&O,T=r.matchAllTokens,E=void 0!==T&&T,j=r.includeMatches,z=void 0!==j&&j,F=r.includeScore,R=void 0!==F&&F,J=r.verbose,N=void 0!==J&&J;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:o,distance:s,threshold:h,maxPatternLength:u,isCaseSensitive:f,tokenSeparator:p,findAllMatches:m,minMatchCharLength:x,id:S,keys:w,includeMatches:z,includeScore:R,shouldSort:L,getFn:I,sortFn:C,verbose:N,tokenize:P,matchAllTokens:E},this.setCollection(t)}return n(e,[{key:"setCollection",value:function(e){return this.list=e,e}},{key:"search",value:function(e){this._log('---------\nSearch pattern: "'+e+'"');var t=this._prepareSearchers(e),r=t.tokenSearchers,n=t.fullSearcher,o=this._search(r,n),i=o.weights,a=o.results;return this._computeScore(i,a),this.options.shouldSort&&this._sort(a),this._format(a)}},{key:"_prepareSearchers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var r=e.split(this.options.tokenSeparator),n=0,i=r.length;n<i;n+=1)t.push(new o(r[n],this.options));return{tokenSearchers:t,fullSearcher:new o(e,this.options)}}},{key:"_search",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],r=this.list,n={},o=[];if("string"==typeof r[0]){for(var i=0,a=r.length;i<a;i+=1)this._analyze({key:"",value:r[i],record:i,index:i},{resultMap:n,results:o,tokenSearchers:e,fullSearcher:t});return{weights:null,results:o}}for(var s={},c=0,h=r.length;c<h;c+=1)for(var l=r[c],u=0,d=this.options.keys.length;u<d;u+=1){var f=this.options.keys[u];if("string"!=typeof f){if(s[f.name]={weight:1-f.weight||1},f.weight<=0||f.weight>1)throw new Error("Key weight has to be > 0 and <= 1");f=f.name}else s[f]={weight:1};this._analyze({key:f,value:this.options.getFn(l,f),record:l,index:c},{resultMap:n,results:o,tokenSearchers:e,fullSearcher:t})}return{weights:s,results:o}}},{key:"_analyze",value:function(e,t){var r=e.key,n=e.arrayIndex,o=void 0===n?-1:n,i=e.value,s=e.record,c=e.index,h=t.tokenSearchers,l=void 0===h?[]:h,u=t.fullSearcher,d=void 0===u?[]:u,f=t.resultMap,v=void 0===f?{}:f,p=t.results,g=void 0===p?[]:p;if(void 0!==i&&null!==i){var m=!1,y=-1,x=0;if("string"==typeof i){this._log("\nKey: "+(""===r?"-":r));var k=d.search(i);if(this._log('Full text: "'+i+'", score: '+k.score),this.options.tokenize){for(var S=i.split(this.options.tokenSeparator),M=[],w=0;w<l.length;w+=1){var _=l[w];this._log('\nPattern: "'+_.pattern+'"');for(var L=!1,b=0;b<S.length;b+=1){var I=S[b],A=_.search(I),C={};A.isMatch?(C[I]=A.score,m=!0,L=!0,M.push(A.score)):(C[I]=1,this.options.matchAllTokens||M.push(1)),this._log('Token: "'+I+'", score: '+C[I])}L&&(x+=1)}y=M[0];for(var O=M.length,P=1;P<O;P+=1)y+=M[P];y/=O,this._log("Token score average:",y)}var T=k.score;y>-1&&(T=(T+y)/2),this._log("Score average:",T);var E=!this.options.tokenize||!this.options.matchAllTokens||x>=l.length;if(this._log("\nCheck Matches: "+E),(m||k.isMatch)&&E){var j=v[c];j?j.output.push({key:r,arrayIndex:o,value:i,score:T,matchedIndices:k.matchedIndices}):(v[c]={item:s,output:[{key:r,arrayIndex:o,value:i,score:T,matchedIndices:k.matchedIndices}]},g.push(v[c]))}}else if(a(i))for(var z=0,F=i.length;z<F;z+=1)this._analyze({key:r,arrayIndex:z,value:i[z],record:s,index:c},{resultMap:v,results:g,tokenSearchers:l,fullSearcher:d})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var r=0,n=t.length;r<n;r+=1){for(var o=t[r].output,i=o.length,a=1,s=1,c=0;c<i;c+=1){var h=e?e[o[c].key].weight:1,l=(1===h?o[c].score:o[c].score||.001)*h;1!==h?s=Math.min(s,l):(o[c].nScore=l,a*=l)}t[r].score=1===s?a:s,this._log(t[r])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];this.options.verbose&&this._log("\n\nOutput:\n\n",JSON.stringify(e));var r=[];this.options.includeMatches&&r.push(function(e,t){var r=e.output;t.matches=[];for(var n=0,o=r.length;n<o;n+=1){var i=r[n];if(0!==i.matchedIndices.length){var a={indices:i.matchedIndices,value:i.value};i.key&&(a.key=i.key),i.hasOwnProperty("arrayIndex")&&i.arrayIndex>-1&&(a.arrayIndex=i.arrayIndex),t.matches.push(a)}}}),this.options.includeScore&&r.push(function(e,t){t.score=e.score});for(var n=0,o=e.length;n<o;n+=1){var i=e[n];if(this.options.id&&(i.item=this.options.getFn(i.item,this.options.id)[0]),r.length){for(var a={item:i.item},s=0,c=r.length;s<c;s+=1)r[s](i,a);t.push(a)}else t.push(i.item)}return t}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}]),e}();e.exports=s}])},e.exports=n()},15:function(e,t,r){"use strict";var n,o=r(14),i=(n=o)&&n.__esModule?n:{default:n},a=r(2);var s=function(e,t,r){(0,a.setSearchingIndicator)(r);var n=e?t.search(e).map(function(e){return{href:e.href,title:e.title}}):[];(0,a.appendResults)(n,r)},c={shouldSort:!0,threshold:.5,location:0,distance:500,maxPatternLength:32,minMatchCharLength:1,keys:[{name:"title",weight:.7},{name:"content",weight:.3}]},h=document.getElementById("search-term"),l=document.getElementById("search-results"),u=(0,a.getUrlSearchParam)("q");h.value=u,h.focus(),(0,a.setSearchingIndicator)(l),(0,a.getJSON)(window.location.pathname+"index.json",function(e,t){if(e)console.error(e);else{var r=new i.default(t,c);s(u,r,l),h.addEventListener("input",function(e){s(e.target.value,r,l)})}})},2:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.appendResults=function(e,t){0===e.length?t.innerHTML="<li class='results-empty'>\n <a href='#search-term'>"+t.dataset.resultsEmpty+"</a>\n </li>":t.innerHTML=e.reduce(function(e,t){return e+"<li><a href='"+t.href+"'>"+t.title+"</a></li>"},"")},t.setSearchingIndicator=function(e){e.innerHTML="<li class='searching'>\n <a href='#search-results'>"+e.dataset.searching+"&hellip;</a>\n </li>"},t.getUrlSearchParam=function(e){if("URLSearchParams"in window)return new URLSearchParams(window.location.search).get(e);e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(location.search);return null===t?"":decodeURIComponent(t[1].replace(/\+/g," "))},t.getJSON=function(e,t){var r=new XMLHttpRequest;r.open("GET",e,!0),r.onload=function(){if(r.status>=200&&r.status<400){var e=JSON.parse(r.responseText);t(null,e)}else t(new Error(r.statusText))},r.onerror=function(){t(new Error("Failed to get JSON! "+r.statusText))},r.send()}}}); \ No newline at end of file
diff --git a/static/assets/js/lunr_search.d02471db.js b/static/assets/js/lunr_search.15b5835f.js
index 7baaeb8..8f1bfcc 100644
--- a/static/assets/js/lunr_search.d02471db.js
+++ b/static/assets/js/lunr_search.15b5835f.js
@@ -1,9 +1,9 @@
-!function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=34)}({33:function(e,t,r){var i,n;
+!function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:i})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=13)}({12:function(e,t,r){var i,n;
/**
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.0
* Copyright (C) 2018 Oliver Nightingale
* @license MIT
- */!function(){var s,o,a,u,l,c,d,h,f,p,y,m,g,v,x,w,Q,k,S,E,L,b,P,T,O,I,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.0"
+ */!function(){var s,o,a,u,l,c,d,h,f,p,y,m,g,v,x,w,Q,k,S,E,L,b,T,P,O,I,R=function(e){var t=new R.Builder;return t.pipeline.add(R.trimmer,R.stopWordFilter,R.stemmer),t.searchPipeline.add(R.stemmer),e.call(t,t),t.build()};R.version="2.3.0"
/*!
* lunr.utils
* Copyright (C) 2018 Oliver Nightingale
@@ -28,7 +28,7 @@
* lunr.stemmer
* Copyright (C) 2018 Oliver Nightingale
* Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
- */,R.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},a={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},u="[aeiouy]",l="[^aeiou][^aeiouy]*",c=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),d=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),h=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"),f=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"),p=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,v=/.$/,x=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),Q=new RegExp("^"+l+u+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,L=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,b=/^(.+?)(s|t)(ion)$/,P=/^(.+?)e$/,T=/ll$/,O=new RegExp("^"+l+u+"[^aeiouwxy]$"),I=function(e){var t,r,i,n,s,u,l;if(e.length<3)return e;if("y"==(i=e.substr(0,1))&&(e=i.toUpperCase()+e.substr(1)),s=y,(n=p).test(e)?e=e.replace(n,"$1$2"):s.test(e)&&(e=e.replace(s,"$1$2")),s=g,(n=m).test(e)){var I=n.exec(e);(n=c).test(I[1])&&(n=v,e=e.replace(n,""))}else if(s.test(e)){t=(I=s.exec(e))[1],(s=f).test(t)&&(u=w,l=Q,(s=x).test(e=t)?e+="e":u.test(e)?(n=v,e=e.replace(n,"")):l.test(e)&&(e+="e"))}(n=k).test(e)&&(e=(t=(I=n.exec(e))[1])+"i");(n=S).test(e)&&(t=(I=n.exec(e))[1],r=I[2],(n=c).test(t)&&(e=t+o[r]));(n=E).test(e)&&(t=(I=n.exec(e))[1],r=I[2],(n=c).test(t)&&(e=t+a[r]));if(s=b,(n=L).test(e))t=(I=n.exec(e))[1],(n=d).test(t)&&(e=t);else if(s.test(e)){t=(I=s.exec(e))[1]+I[2],(s=d).test(t)&&(e=t)}(n=P).test(e)&&(t=(I=n.exec(e))[1],s=h,u=O,((n=d).test(t)||s.test(t)&&!u.test(t))&&(e=t));return s=d,(n=T).test(e)&&s.test(e)&&(n=v,e=e.replace(n,"")),"y"==i&&(e=i.toLowerCase()+e.substr(1)),e},function(e){return e.update(I)}),R.Pipeline.registerFunction(R.stemmer,"stemmer")
+ */,R.stemmer=(o={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},a={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},u="[aeiouy]",l="[^aeiou][^aeiouy]*",c=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),d=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),h=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"),f=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"),p=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,v=/.$/,x=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),Q=new RegExp("^"+l+u+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,L=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,b=/^(.+?)(s|t)(ion)$/,T=/^(.+?)e$/,P=/ll$/,O=new RegExp("^"+l+u+"[^aeiouwxy]$"),I=function(e){var t,r,i,n,s,u,l;if(e.length<3)return e;if("y"==(i=e.substr(0,1))&&(e=i.toUpperCase()+e.substr(1)),s=y,(n=p).test(e)?e=e.replace(n,"$1$2"):s.test(e)&&(e=e.replace(s,"$1$2")),s=g,(n=m).test(e)){var I=n.exec(e);(n=c).test(I[1])&&(n=v,e=e.replace(n,""))}else if(s.test(e)){t=(I=s.exec(e))[1],(s=f).test(t)&&(u=w,l=Q,(s=x).test(e=t)?e+="e":u.test(e)?(n=v,e=e.replace(n,"")):l.test(e)&&(e+="e"))}(n=k).test(e)&&(e=(t=(I=n.exec(e))[1])+"i");(n=S).test(e)&&(t=(I=n.exec(e))[1],r=I[2],(n=c).test(t)&&(e=t+o[r]));(n=E).test(e)&&(t=(I=n.exec(e))[1],r=I[2],(n=c).test(t)&&(e=t+a[r]));if(s=b,(n=L).test(e))t=(I=n.exec(e))[1],(n=d).test(t)&&(e=t);else if(s.test(e)){t=(I=s.exec(e))[1]+I[2],(s=d).test(t)&&(e=t)}(n=T).test(e)&&(t=(I=n.exec(e))[1],s=h,u=O,((n=d).test(t)||s.test(t)&&!u.test(t))&&(e=t));return s=d,(n=P).test(e)&&s.test(e)&&(n=v,e=e.replace(n,"")),"y"==i&&(e=i.toLowerCase()+e.substr(1)),e},function(e){return e.update(I)}),R.Pipeline.registerFunction(R.stemmer,"stemmer")
/*!
* lunr.stopWordFilter
* Copyright (C) 2018 Oliver Nightingale
@@ -44,8 +44,8 @@
/*!
* lunr.Index
* Copyright (C) 2018 Oliver Nightingale
- */,R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query(function(t){new R.QueryParser(e,t).parse()})},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),r=Object.create(null),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new R.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],l=null,c=R.Set.complete;l=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var d=0;d<l.length;d++){var h=l[d];u.term=h;var f=R.TokenSet.fromClause(u),p=this.tokenSet.intersect(f).toArray();if(0===p.length&&u.presence===R.Query.presence.REQUIRED){for(var y=0;y<u.fields.length;y++){s[F=u.fields[y]]=R.Set.empty}break}for(var m=0;m<p.length;m++){var g=p[m],v=this.invertedIndex[g],x=v._index;for(y=0;y<u.fields.length;y++){var w=v[F=u.fields[y]],Q=Object.keys(w),k=g+"/"+F,S=new R.Set(Q);if(u.presence==R.Query.presence.REQUIRED&&(c=c.union(S),void 0===s[F]&&(s[F]=R.Set.complete)),u.presence!=R.Query.presence.PROHIBITED){if(i[F].upsert(x,u.boost,function(e,t){return e+t}),!n[k]){for(var E=0;E<Q.length;E++){var L,b=Q[E],P=new R.FieldRef(b,F),T=w[b];void 0===(L=r[P])?r[P]=new R.MatchData(g,F,T):L.add(g,F,T)}n[k]=!0}}else void 0===o[F]&&(o[F]=R.Set.empty),o[F]=o[F].union(S)}}}if(u.presence===R.Query.presence.REQUIRED)for(y=0;y<u.fields.length;y++){s[F=u.fields[y]]=s[F].intersect(c)}}var O=R.Set.complete,I=R.Set.empty;for(a=0;a<this.fields.length;a++){var F;s[F=this.fields[a]]&&(O=O.intersect(s[F])),o[F]&&(I=I.union(o[F]))}var _=Object.keys(r),j=[],C=Object.create(null);if(t.isNegated()){_=Object.keys(this.fieldVectors);for(a=0;a<_.length;a++){P=_[a];var N=R.FieldRef.fromString(P);r[P]=new R.MatchData}}for(a=0;a<_.length;a++){var D=(N=R.FieldRef.fromString(_[a])).docRef;if(O.contains(D)&&!I.contains(D)){var A,B=this.fieldVectors[N],M=i[N.fieldName].similarity(B);if(void 0!==(A=C[D]))A.score+=M,A.matchData.combine(r[N]);else{var V={ref:D,score:M,matchData:r[N]};C[D]=V,j.push(V)}}}return j.sort(function(e,t){return t.score-e.score})},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),t=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},r={},i=e.fieldVectors,n={},s=e.invertedIndex,o=new R.TokenSet.Builder,a=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+R.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var l=(d=i[u])[0],c=d[1];r[l]=new R.Vector(c)}for(u=0;u<s.length;u++){var d,h=(d=s[u])[0],f=d[1];o.insert(h),n[h]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=r,t.invertedIndex=n,t.tokenSet=o.root,t.pipeline=a,new R.Index(t)}
+ */,R.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},R.Index.prototype.search=function(e){return this.query(function(t){new R.QueryParser(e,t).parse()})},R.Index.prototype.query=function(e){for(var t=new R.Query(this.fields),r=Object.create(null),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new R.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],l=null,c=R.Set.complete;l=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var d=0;d<l.length;d++){var h=l[d];u.term=h;var f=R.TokenSet.fromClause(u),p=this.tokenSet.intersect(f).toArray();if(0===p.length&&u.presence===R.Query.presence.REQUIRED){for(var y=0;y<u.fields.length;y++){s[F=u.fields[y]]=R.Set.empty}break}for(var m=0;m<p.length;m++){var g=p[m],v=this.invertedIndex[g],x=v._index;for(y=0;y<u.fields.length;y++){var w=v[F=u.fields[y]],Q=Object.keys(w),k=g+"/"+F,S=new R.Set(Q);if(u.presence==R.Query.presence.REQUIRED&&(c=c.union(S),void 0===s[F]&&(s[F]=R.Set.complete)),u.presence!=R.Query.presence.PROHIBITED){if(i[F].upsert(x,u.boost,function(e,t){return e+t}),!n[k]){for(var E=0;E<Q.length;E++){var L,b=Q[E],T=new R.FieldRef(b,F),P=w[b];void 0===(L=r[T])?r[T]=new R.MatchData(g,F,P):L.add(g,F,P)}n[k]=!0}}else void 0===o[F]&&(o[F]=R.Set.empty),o[F]=o[F].union(S)}}}if(u.presence===R.Query.presence.REQUIRED)for(y=0;y<u.fields.length;y++){s[F=u.fields[y]]=s[F].intersect(c)}}var O=R.Set.complete,I=R.Set.empty;for(a=0;a<this.fields.length;a++){var F;s[F=this.fields[a]]&&(O=O.intersect(s[F])),o[F]&&(I=I.union(o[F]))}var _=Object.keys(r),N=[],j=Object.create(null);if(t.isNegated()){_=Object.keys(this.fieldVectors);for(a=0;a<_.length;a++){T=_[a];var C=R.FieldRef.fromString(T);r[T]=new R.MatchData}}for(a=0;a<_.length;a++){var D=(C=R.FieldRef.fromString(_[a])).docRef;if(O.contains(D)&&!I.contains(D)){var A,B=this.fieldVectors[C],M=i[C.fieldName].similarity(B);if(void 0!==(A=j[D]))A.score+=M,A.matchData.combine(r[C]);else{var V={ref:D,score:M,matchData:r[C]};j[D]=V,N.push(V)}}}return N.sort(function(e,t){return t.score-e.score})},R.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),t=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:R.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},R.Index.load=function(e){var t={},r={},i=e.fieldVectors,n={},s=e.invertedIndex,o=new R.TokenSet.Builder,a=R.Pipeline.load(e.pipeline);e.version!=R.version&&R.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+R.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var l=(d=i[u])[0],c=d[1];r[l]=new R.Vector(c)}for(u=0;u<s.length;u++){var d,h=(d=s[u])[0],f=d[1];o.insert(h),n[h]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=r,t.invertedIndex=n,t.tokenSet=o.root,t.pipeline=a,new R.Index(t)}
/*!
* lunr.Builder
* Copyright (C) 2018 Oliver Nightingale
- */,R.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var n=0;n<i.length;n++){var s=i[n],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(u),c=new R.FieldRef(r,s),d=Object.create(null);this.fieldTermFrequencies[c]=d,this.fieldLengths[c]=0,this.fieldLengths[c]+=l.length;for(var h=0;h<l.length;h++){var f=l[h];if(void 0==d[f]&&(d[f]=0),d[f]+=1,void 0==this.invertedIndex[f]){var p=Object.create(null);p._index=this.termIndex,this.termIndex+=1;for(var y=0;y<i.length;y++)p[i[y]]=Object.create(null);this.invertedIndex[f]=p}void 0==this.invertedIndex[f][s][r]&&(this.invertedIndex[f][s][r]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var g=this.metadataWhitelist[m],v=f.metadata[g];void 0==this.invertedIndex[f][s][r][g]&&(this.invertedIndex[f][s][r][g]=[]),this.invertedIndex[f][s][r][g].push(v)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,r={},i={},n=0;n<t;n++){var s=R.FieldRef.fromString(e[n]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,r[o]||(r[o]=0),r[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(n=0;n<a.length;n++){var u=a[n];r[u]=r[u]/i[u]}this.averageFieldLength=r},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),r=t.length,i=Object.create(null),n=0;n<r;n++){for(var s=R.FieldRef.fromString(t[n]),o=s.fieldName,a=this.fieldLengths[s],u=new R.Vector,l=this.fieldTermFrequencies[s],c=Object.keys(l),d=c.length,h=this._fields[o].boost||1,f=this._documents[s.docRef].boost||1,p=0;p<d;p++){var y,m,g,v=c[p],x=l[v],w=this.invertedIndex[v]._index;void 0===i[v]?(y=R.idf(this.invertedIndex[v],this.documentCount),i[v]=y):y=i[v],m=y*((this._k1+1)*x)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+x),m*=h,m*=f,g=Math.round(1e3*m)/1e3,u.insert(w,g)}e[s]=u}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r||{}),s=0;s<n.length;s++){var o=n[s];i[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var i=t[r],n=Object.keys(e.metadata[i]);void 0==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<n.length;s++){var o=n[s],a=Object.keys(e.metadata[i][o]);void 0==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];void 0==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},R.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(t in this.metadata[e])for(var i=Object.keys(r),n=0;n<i.length;n++){var s=i[n];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}else this.metadata[e][t]=r},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String("*"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term="*"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach(function(e){this.term(e,R.utils.clone(t))},this),this;var r=t||{};return r.term=e.toString(),this.clause(r),this},R.QueryParseError=function(e,t,r){this.name="QueryParseError",this.message=e,this.start=t,this.end=r},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,i=0;i<this.escapeCharPositions.length;i++)r=this.escapeCharPositions[i],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS="EOS",R.QueryLexer.FIELD="FIELD",R.QueryLexer.TERM="TERM",R.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",R.QueryLexer.BOOST="BOOST",R.QueryLexer.PRESENCE="PRESENCE",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(void 0!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(r+=" with value '"+t.str+"'"),new R.QueryParseError(r,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(void 0!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+t.str+"'";throw new R.QueryParseError(r,t.start,t.end)}var i=e.peekLexeme();if(void 0==i){r="expecting term or field, found nothing";throw new R.QueryParseError(r,t.start,t.end)}switch(i.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:r="expecting term or field, found '"+i.type+"'";throw new R.QueryParseError(r,i.start,i.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(void 0!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+r;throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var n=e.peekLexeme();if(void 0==n){i="expecting term, found nothing";throw new R.QueryParseError(i,t.start,t.end)}switch(n.type){case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:i="expecting term, found '"+n.type+"'";throw new R.QueryParseError(i,n.start,n.end)}}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(void 0!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(void 0!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(void 0!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=r;var n=e.peekLexeme();if(void 0!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;default:i="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(i,n.start,n.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(void 0!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="boost must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.boost=r;var n=e.peekLexeme();if(void 0!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;default:i="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(i,n.start,n.end)}else e.nextClause()}},void 0===(n="function"==typeof(i=function(){return R})?i.call(t,r,t,e):i)||(e.exports=n)}()},34:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.doSearch=void 0;var i,n=r(33),s=(i=n)&&i.__esModule?i:{default:i},o=r(8);var a=t.doSearch=function(e,t,r,i){(0,o.setSearchingIndicator)(i);var n=e?t.search(e).map(function(e){return{href:e.ref,title:r[e.ref]}}):[];(0,o.appendResults)(n,i)},u=s.default.Index.load(window.lunr_idx),l=window.page_titles,c=document.getElementById("search-term"),d=document.getElementById("search-results"),h=(0,o.getUrlSearchParam)("q");c.value=h,c.focus(),a(h,u,l,d),c.addEventListener("input",function(e){a(e.target.value,u,l,d)})},8:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.appendResults=function(e,t){0===e.length?t.innerHTML="<li class='results-empty'>\n <a href='#search-term'>"+t.dataset.resultsEmpty+"</a>\n </li>":t.innerHTML=e.reduce(function(e,t){return e+"<li><a href='"+t.href+"'>"+t.title+"</a></li>"},"")},t.setSearchingIndicator=function(e){e.innerHTML="<li class='searching'>\n <a href='#search-results'>"+e.dataset.searching+"&hellip;</a>\n </li>"},t.getUrlSearchParam=function(e){if("URLSearchParams"in window)return new URLSearchParams(window.location.search).get(e);e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(location.search);return null===t?"":decodeURIComponent(t[1].replace(/\+/g," "))}}}); \ No newline at end of file
+ */,R.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=R.tokenizer,this.pipeline=new R.Pipeline,this.searchPipeline=new R.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},R.Builder.prototype.ref=function(e){this._ref=e},R.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},R.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},R.Builder.prototype.k1=function(e){this._k1=e},R.Builder.prototype.add=function(e,t){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var n=0;n<i.length;n++){var s=i[n],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(u),c=new R.FieldRef(r,s),d=Object.create(null);this.fieldTermFrequencies[c]=d,this.fieldLengths[c]=0,this.fieldLengths[c]+=l.length;for(var h=0;h<l.length;h++){var f=l[h];if(void 0==d[f]&&(d[f]=0),d[f]+=1,void 0==this.invertedIndex[f]){var p=Object.create(null);p._index=this.termIndex,this.termIndex+=1;for(var y=0;y<i.length;y++)p[i[y]]=Object.create(null);this.invertedIndex[f]=p}void 0==this.invertedIndex[f][s][r]&&(this.invertedIndex[f][s][r]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var g=this.metadataWhitelist[m],v=f.metadata[g];void 0==this.invertedIndex[f][s][r][g]&&(this.invertedIndex[f][s][r][g]=[]),this.invertedIndex[f][s][r][g].push(v)}}}},R.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,r={},i={},n=0;n<t;n++){var s=R.FieldRef.fromString(e[n]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,r[o]||(r[o]=0),r[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(n=0;n<a.length;n++){var u=a[n];r[u]=r[u]/i[u]}this.averageFieldLength=r},R.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),r=t.length,i=Object.create(null),n=0;n<r;n++){for(var s=R.FieldRef.fromString(t[n]),o=s.fieldName,a=this.fieldLengths[s],u=new R.Vector,l=this.fieldTermFrequencies[s],c=Object.keys(l),d=c.length,h=this._fields[o].boost||1,f=this._documents[s.docRef].boost||1,p=0;p<d;p++){var y,m,g,v=c[p],x=l[v],w=this.invertedIndex[v]._index;void 0===i[v]?(y=R.idf(this.invertedIndex[v],this.documentCount),i[v]=y):y=i[v],m=y*((this._k1+1)*x)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+x),m*=h,m*=f,g=Math.round(1e3*m)/1e3,u.insert(w,g)}e[s]=u}this.fieldVectors=e},R.Builder.prototype.createTokenSet=function(){this.tokenSet=R.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},R.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new R.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},R.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},R.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r||{}),s=0;s<n.length;s++){var o=n[s];i[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},R.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var i=t[r],n=Object.keys(e.metadata[i]);void 0==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<n.length;s++){var o=n[s],a=Object.keys(e.metadata[i][o]);void 0==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];void 0==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},R.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(t in this.metadata[e])for(var i=Object.keys(r),n=0;n<i.length;n++){var s=i[n];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}else this.metadata[e][t]=r},R.Query=function(e){this.clauses=[],this.allFields=e},R.Query.wildcard=new String("*"),R.Query.wildcard.NONE=0,R.Query.wildcard.LEADING=1,R.Query.wildcard.TRAILING=2,R.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},R.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=R.Query.wildcard.NONE),e.wildcard&R.Query.wildcard.LEADING&&e.term.charAt(0)!=R.Query.wildcard&&(e.term="*"+e.term),e.wildcard&R.Query.wildcard.TRAILING&&e.term.slice(-1)!=R.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=R.Query.presence.OPTIONAL),this.clauses.push(e),this},R.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=R.Query.presence.PROHIBITED)return!1;return!0},R.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach(function(e){this.term(e,R.utils.clone(t))},this),this;var r=t||{};return r.term=e.toString(),this.clause(r),this},R.QueryParseError=function(e,t,r){this.name="QueryParseError",this.message=e,this.start=t,this.end=r},R.QueryParseError.prototype=new Error,R.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},R.QueryLexer.prototype.run=function(){for(var e=R.QueryLexer.lexText;e;)e=e(this)},R.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,i=0;i<this.escapeCharPositions.length;i++)r=this.escapeCharPositions[i],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},R.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},R.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},R.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return R.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},R.QueryLexer.prototype.width=function(){return this.pos-this.start},R.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},R.QueryLexer.prototype.backup=function(){this.pos-=1},R.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=R.QueryLexer.EOS&&this.backup()},R.QueryLexer.prototype.more=function(){return this.pos<this.length},R.QueryLexer.EOS="EOS",R.QueryLexer.FIELD="FIELD",R.QueryLexer.TERM="TERM",R.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",R.QueryLexer.BOOST="BOOST",R.QueryLexer.PRESENCE="PRESENCE",R.QueryLexer.lexField=function(e){return e.backup(),e.emit(R.QueryLexer.FIELD),e.ignore(),R.QueryLexer.lexText},R.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(R.QueryLexer.TERM)),e.ignore(),e.more())return R.QueryLexer.lexText},R.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.EDIT_DISTANCE),R.QueryLexer.lexText},R.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(R.QueryLexer.BOOST),R.QueryLexer.lexText},R.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(R.QueryLexer.TERM)},R.QueryLexer.termSeparator=R.tokenizer.separator,R.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==R.QueryLexer.EOS)return R.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return R.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(R.QueryLexer.TERM),R.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(R.QueryLexer.PRESENCE),R.QueryLexer.lexText;if(t.match(R.QueryLexer.termSeparator))return R.QueryLexer.lexTerm}else e.escapeCharacter()}},R.QueryParser=function(e,t){this.lexer=new R.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},R.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=R.QueryParser.parseClause;e;)e=e(this);return this.query},R.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},R.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},R.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},R.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(void 0!=t)switch(t.type){case R.QueryLexer.PRESENCE:return R.QueryParser.parsePresence;case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(r+=" with value '"+t.str+"'"),new R.QueryParseError(r,t.start,t.end)}},R.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(void 0!=t){switch(t.str){case"-":e.currentClause.presence=R.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=R.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+t.str+"'";throw new R.QueryParseError(r,t.start,t.end)}var i=e.peekLexeme();if(void 0==i){r="expecting term or field, found nothing";throw new R.QueryParseError(r,t.start,t.end)}switch(i.type){case R.QueryLexer.FIELD:return R.QueryParser.parseField;case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:r="expecting term or field, found '"+i.type+"'";throw new R.QueryParseError(r,i.start,i.end)}}},R.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(void 0!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+r;throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var n=e.peekLexeme();if(void 0==n){i="expecting term, found nothing";throw new R.QueryParseError(i,t.start,t.end)}switch(n.type){case R.QueryLexer.TERM:return R.QueryParser.parseTerm;default:i="expecting term, found '"+n.type+"'";throw new R.QueryParseError(i,n.start,n.end)}}},R.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(void 0!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(void 0!=r)switch(r.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;case R.QueryLexer.PRESENCE:return e.nextClause(),R.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new R.QueryParseError(i,r.start,r.end)}else e.nextClause()}},R.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(void 0!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=r;var n=e.peekLexeme();if(void 0!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;default:i="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(i,n.start,n.end)}else e.nextClause()}},R.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(void 0!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="boost must be numeric";throw new R.QueryParseError(i,t.start,t.end)}e.currentClause.boost=r;var n=e.peekLexeme();if(void 0!=n)switch(n.type){case R.QueryLexer.TERM:return e.nextClause(),R.QueryParser.parseTerm;case R.QueryLexer.FIELD:return e.nextClause(),R.QueryParser.parseField;case R.QueryLexer.EDIT_DISTANCE:return R.QueryParser.parseEditDistance;case R.QueryLexer.BOOST:return R.QueryParser.parseBoost;default:i="Unexpected lexeme type '"+n.type+"'";throw new R.QueryParseError(i,n.start,n.end)}else e.nextClause()}},void 0===(n="function"==typeof(i=function(){return R})?i.call(t,r,t,e):i)||(e.exports=n)}()},13:function(e,t,r){"use strict";var i,n=r(12),s=(i=n)&&i.__esModule?i:{default:i},o=r(2);var a=function(e,t,r,i){(0,o.setSearchingIndicator)(i);var n=e?t.search(e).map(function(e){return{href:e.ref,title:r[e.ref]}}):[];(0,o.appendResults)(n,i)},u=s.default.Index.load(window.lunr_idx),l=window.page_titles,c=document.getElementById("search-term"),d=document.getElementById("search-results"),h=(0,o.getUrlSearchParam)("q");c.value=h,c.focus(),a(h,u,l,d),c.addEventListener("input",function(e){a(e.target.value,u,l,d)})},2:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.appendResults=function(e,t){0===e.length?t.innerHTML="<li class='results-empty'>\n <a href='#search-term'>"+t.dataset.resultsEmpty+"</a>\n </li>":t.innerHTML=e.reduce(function(e,t){return e+"<li><a href='"+t.href+"'>"+t.title+"</a></li>"},"")},t.setSearchingIndicator=function(e){e.innerHTML="<li class='searching'>\n <a href='#search-results'>"+e.dataset.searching+"&hellip;</a>\n </li>"},t.getUrlSearchParam=function(e){if("URLSearchParams"in window)return new URLSearchParams(window.location.search).get(e);e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(location.search);return null===t?"":decodeURIComponent(t[1].replace(/\+/g," "))},t.getJSON=function(e,t){var r=new XMLHttpRequest;r.open("GET",e,!0),r.onload=function(){if(r.status>=200&&r.status<400){var e=JSON.parse(r.responseText);t(null,e)}else t(new Error(r.statusText))},r.onerror=function(){t(new Error("Failed to get JSON! "+r.statusText))},r.send()}}}); \ No newline at end of file
diff --git a/static/assets/js/main.267dd47c.js b/static/assets/js/main.68cb493a.js
index 1c8e844..44420a1 100644
--- a/static/assets/js/main.267dd47c.js
+++ b/static/assets/js/main.68cb493a.js
@@ -1 +1 @@
-!function(e){function t(t){for(var n,r,u=t[0],i=t[1],a=0,f=[];a<u.length;a++)r=u[a],o[r]&&f.push(o[r][0]),o[r]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(c&&c(t);f.length;)f.shift()()}var n={},o={6:0};function r(t){if(n[t])return n[t].exports;var o=n[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.e=function(e){var t=[],n=o[e];if(0!==n)if(n)t.push(n[2]);else{var u=new Promise(function(t,r){n=o[e]=[t,r]});t.push(n[2]=u);var i=document.getElementsByTagName("head")[0],a=document.createElement("script");a.charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.src=function(e){return r.p+""+({0:"comments",1:"sidebar",2:"twemoji",3:"details-polyfill"}[e]||e)+"."+{0:"b0a2b5b1",1:"6c4c8f65",2:"7a501675",3:"f919551f"}[e]+".js"}(e);var c=setTimeout(function(){f({type:"timeout",target:a})},12e4);function f(t){a.onerror=a.onload=null,clearTimeout(c);var n=o[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src,i=new Error("Loading chunk "+e+" failed.\n("+r+": "+u+")");i.type=r,i.request=u,n[1](i)}o[e]=void 0}}a.onerror=a.onload=f,i.appendChild(a)}return Promise.all(t)},r.m=e,r.c=n,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r.oe=function(e){throw console.error(e),e};var u=window.webpackJsonp=window.webpackJsonp||[],i=u.push.bind(u);u.push=t,u=u.slice();for(var a=0;a<u.length;a++)t(u[a]);var c=i;r(r.s=41)}({35:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.shuffle=function(e){for(var t=[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(e)),n=e.length,o=void 0,r=void 0;n;)r=Math.floor(Math.random()*n),o=t[--n],t[n]=t[r],t[r]=o;return t}},36:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(){document.removeEventListener("DOMContentLoaded",t,!1),window.removeEventListener("load",t,!1),e()}"complete"===document.readyState?setTimeout(e):(document.addEventListener("DOMContentLoaded",t,!1),window.addEventListener("load",t,!1))},e.exports=t.default},39:function(e,t,n){},40:function(e,t,n){"use strict";n.p=window.__public_path__},41:function(e,t,n){"use strict";n(40),n(39);var o,r=n(36),u=(o=r)&&o.__esModule?o:{default:o},i=n(35);(0,u.default)(function(){var e=document.body,t=e.querySelectorAll(".taxonomy-cloud:not(.no-shuffle)");t.length&&t.forEach(function(e){var t=e.querySelectorAll("li");(0,i.shuffle)(t).forEach(function(e){return e.parentElement.appendChild(e)})});var o=e.querySelectorAll("details");if(o.length&&n.e(3).then(function(){var e=n(45);return"object"==typeof e&&e&&e.__esModule?e:Object.assign({},"object"==typeof e&&e,{default:e})}).then(function(e){return(0,e.detailsPolyfill)(o)}),e.classList.contains("has-emoji")){var r=e.querySelector(".entry");n.e(2).then(function(){var e=n(44);return"object"==typeof e&&e&&e.__esModule?e:Object.assign({},"object"==typeof e&&e,{default:e})}).then(function(e){return e.parse(r)})}e.classList.contains("has-sidebar")&&n.e(1).then(function(){var e=n(43);return"object"==typeof e&&e&&e.__esModule?e:Object.assign({},"object"==typeof e&&e,{default:e})}).then(function(e){return(0,e.initSidebar)()}),e.querySelector("#comment-form")&&n.e(0).then(function(){var e=n(42);return"object"==typeof e&&e&&e.__esModule?e:Object.assign({},"object"==typeof e&&e,{default:e})}).then(function(e){return(0,e.initComments)()})})}}); \ No newline at end of file
+!function(e){function t(t){for(var n,r,u=t[0],i=t[1],c=0,f=[];c<u.length;c++)r=u[c],o[r]&&f.push(o[r][0]),o[r]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(a&&a(t);f.length;)f.shift()()}var n={},o={7:0};function r(t){if(n[t])return n[t].exports;var o=n[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.e=function(e){var t=[],n=o[e];if(0!==n)if(n)t.push(n[2]);else{var u=new Promise(function(t,r){n=o[e]=[t,r]});t.push(n[2]=u);var i=document.getElementsByTagName("head")[0],c=document.createElement("script");c.charset="utf-8",c.timeout=120,r.nc&&c.setAttribute("nonce",r.nc),c.src=function(e){return r.p+""+({0:"comments",1:"sidebar",2:"twemoji",3:"details-polyfill"}[e]||e)+"."+{0:"ecdd5e33",1:"88cb8643",2:"c34d1cdf",3:"aab26f9f"}[e]+".js"}(e);var a=setTimeout(function(){f({type:"timeout",target:c})},12e4);function f(t){c.onerror=c.onload=null,clearTimeout(a);var n=o[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src,i=new Error("Loading chunk "+e+" failed.\n("+r+": "+u+")");i.type=r,i.request=u,n[1](i)}o[e]=void 0}}c.onerror=c.onload=f,i.appendChild(c)}return Promise.all(t)},r.m=e,r.c=n,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r.oe=function(e){throw console.error(e),e};var u=window.webpackJsonp=window.webpackJsonp||[],i=u.push.bind(u);u.push=t,u=u.slice();for(var c=0;c<u.length;c++)t(u[c]);var a=i;r(r.s=43)}({37:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.shuffle=function(e){for(var t=[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(e)),n=e.length,o=void 0,r=void 0;n;)r=Math.floor(Math.random()*n),o=t[--n],t[n]=t[r],t[r]=o;return t}},38:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(){document.removeEventListener("DOMContentLoaded",t,!1),window.removeEventListener("load",t,!1),e()}"complete"===document.readyState?setTimeout(e):(document.addEventListener("DOMContentLoaded",t,!1),window.addEventListener("load",t,!1))},e.exports=t.default},41:function(e,t,n){},42:function(e,t,n){"use strict";n.p=window.__public_path__},43:function(e,t,n){"use strict";n(42),n(41);var o,r=n(38),u=(o=r)&&o.__esModule?o:{default:o},i=n(37);(0,u.default)(function(){var e=document.body,t=e.querySelectorAll(".taxonomy-cloud:not(.no-shuffle)");t.length&&t.forEach(function(e){var t=e.querySelectorAll("li");(0,i.shuffle)(t).forEach(function(e){return e.parentElement.appendChild(e)})});var o=e.querySelectorAll("details");if(o.length&&n.e(3).then(function(){var e=n(47);return"object"==typeof e&&e&&e.__esModule?e:Object.assign({},"object"==typeof e&&e,{default:e})}).then(function(e){return(0,e.detailsPolyfill)(o)}),e.classList.contains("has-emoji")){var r=e.querySelector(".entry");n.e(2).then(function(){var e=n(46);return"object"==typeof e&&e&&e.__esModule?e:Object.assign({},"object"==typeof e&&e,{default:e})}).then(function(e){return e.parse(r)})}e.classList.contains("has-sidebar")&&n.e(1).then(function(){var e=n(45);return"object"==typeof e&&e&&e.__esModule?e:Object.assign({},"object"==typeof e&&e,{default:e})}).then(function(e){return(0,e.initSidebar)()}),e.querySelector("#comment-form")&&n.e(0).then(function(){var e=n(44);return"object"==typeof e&&e&&e.__esModule?e:Object.assign({},"object"==typeof e&&e,{default:e})}).then(function(e){return(0,e.initComments)()})})}}); \ No newline at end of file
diff --git a/static/assets/js/sidebar.6c4c8f65.js b/static/assets/js/sidebar.88cb8643.js
index 8b15460..5f32758 100644
--- a/static/assets/js/sidebar.6c4c8f65.js
+++ b/static/assets/js/sidebar.88cb8643.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{43:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=document.body,n=o.querySelector("#sidebar"),r=o.querySelector("#sidebar-toggler"),s=o.querySelector(".sidebar-overlay"),d=o.querySelector("#sidebar-menu"),c=r.cloneNode(!0);c.setAttribute("id","#sidebar-collapse");var l=function(e,t){e.forEach(function(e){return e.setAttribute("aria-expanded",t)})},u=function(){n.classList.remove("toggled"),l([n,r,c],!1)},a=function(){n.classList.add("toggled"),l([n,r,c],!0),n.focus()},b=void 0,f=void 0,v=void 0,p=void 0,w=0,y=!1,g=!1,h=0,A=void 0,L=void 0,m=function(){p=window.scrollY,f=o.offsetHeight,v=n.offsetHeight,A=Math.round(p+n.getBoundingClientRect().top),v>b?p>w?y?(y=!1,h=A>0?A:0,n.setAttribute("style","top: "+h+"px;")):!g&&p+b>v+A&&v<f&&(g=!0,n.setAttribute("style","position: fixed; bottom: 0;")):p<w?g?(g=!1,h=A>0?A:0,n.setAttribute("style","top: "+h+"px;")):!y&&p<A&&(y=!0,n.setAttribute("style","position: fixed;")):(y=g=!1,h=A||0,n.setAttribute("style","top: "+h+"px;")):y||(y=!0,n.setAttribute("style","position: fixed;")),w=p},x=function(){window.innerWidth,b=window.innerHeight,m()};t.initSidebar=function(){n.setAttribute("tabindex","-1"),n.insertBefore(c,n.children[1]),l([n,r,c],!1),r.addEventListener("click",a),c.addEventListener("click",u),s.addEventListener("click",u),window.addEventListener("scroll",m),window.addEventListener("resize",function(){clearTimeout(L),L=setTimeout(x,500)}),x(),d&&d.querySelectorAll(".item.has-children").forEach(function(e){var t=e.querySelector("button"),i=e.querySelector(".sub-menu");l([i,t],!1),t.addEventListener("click",function(){var o=e.classList.contains("toggled");e.classList[o?"remove":"add"]("toggled"),l([i,t],!o)})})}}}]); \ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{45:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=document.body,n=o.querySelector("#sidebar"),r=o.querySelector("#sidebar-toggler"),s=o.querySelector(".sidebar-overlay"),d=o.querySelector("#sidebar-menu"),c=r.cloneNode(!0);c.setAttribute("id","#sidebar-collapse");var l=function(e,t){e.forEach(function(e){return e.setAttribute("aria-expanded",t)})},u=function(){n.classList.remove("toggled"),l([n,r,c],!1)},a=function(){n.classList.add("toggled"),l([n,r,c],!0),n.focus()},b=void 0,f=void 0,v=void 0,p=void 0,w=0,y=!1,g=!1,h=0,A=void 0,L=void 0,m=function(){p=window.scrollY,f=o.offsetHeight,v=n.offsetHeight,A=Math.round(p+n.getBoundingClientRect().top),v>b?p>w?y?(y=!1,h=A>0?A:0,n.setAttribute("style","top: "+h+"px;")):!g&&p+b>v+A&&v<f&&(g=!0,n.setAttribute("style","position: fixed; bottom: 0;")):p<w?g?(g=!1,h=A>0?A:0,n.setAttribute("style","top: "+h+"px;")):!y&&p<A&&(y=!0,n.setAttribute("style","position: fixed;")):(y=g=!1,h=A||0,n.setAttribute("style","top: "+h+"px;")):y||(y=!0,n.setAttribute("style","position: fixed;")),w=p},x=function(){window.innerWidth,b=window.innerHeight,m()};t.initSidebar=function(){n.setAttribute("tabindex","-1"),n.insertBefore(c,n.children[1]),l([n,r,c],!1),r.addEventListener("click",a),c.addEventListener("click",u),s.addEventListener("click",u),window.addEventListener("scroll",m),window.addEventListener("resize",function(){clearTimeout(L),L=setTimeout(x,500)}),x(),d&&d.querySelectorAll(".item.has-children").forEach(function(e){var t=e.querySelector("button"),i=e.querySelector(".sub-menu");l([i,t],!1),t.addEventListener("click",function(){var o=e.classList.contains("toggled");e.classList[o?"remove":"add"]("toggled"),l([i,t],!o)})})}}}]); \ No newline at end of file
diff --git a/static/assets/js/twemoji.7a501675.js b/static/assets/js/twemoji.c34d1cdf.js
index 9c9cd13..ee51dc8 100644
--- a/static/assets/js/twemoji.7a501675.js
+++ b/static/assets/js/twemoji.c34d1cdf.js
@@ -1 +1 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{44:function(d,u,e){(function(u){var e=u.location||{},c=function(){"use strict";var d={base:"https://twemoji.maxcdn.com/2/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:function(d){var u="string"==typeof d?parseInt(d,16):d;if(u<65536)return n(u);return n(55296+((u-=65536)>>10),56320+(1023&u))},toCodePoint:p},onerror:function(){this.parentNode&&this.parentNode.replaceChild(r(this.alt,!1),this)},parse:function(u,c){c&&"function"!=typeof c||(c={callback:c});return("string"==typeof u?function(d,u){return l(d,function(d){var e,c,f=d,t=b(d),n=u.callback(t,u);if(n){for(c in f="<img ".concat('class="',u.className,'" ','draggable="false" ','alt="',d,'"',' src="',n,'"'),e=u.attributes(d,t))e.hasOwnProperty(c)&&0!==c.indexOf("on")&&-1===f.indexOf(" "+c+"=")&&(f=f.concat(" ",c,'="',e[c].replace(a,i),'"'));f=f.concat("/>")}return f})}:function(d,u){var c,f,a,n,o,i,s,l,p,h,m,g,x,w=function d(u,e){var c,f,a=u.childNodes,n=a.length;for(;n--;)c=a[n],3===(f=c.nodeType)?e.push(c):1!==f||"ownerSVGElement"in c||t.test(c.nodeName.toLowerCase())||d(c,e);return e}(d,[]),C=w.length;for(;C--;){for(a=!1,n=document.createDocumentFragment(),o=w[C],i=o.nodeValue,l=0;s=e.exec(i);){if((p=s.index)!==l&&n.appendChild(r(i.slice(l,p),!0)),m=s[0],g=b(m),l=p+m.length,x=u.callback(g,u)){for(f in(h=new Image).onerror=u.onerror,h.setAttribute("draggable","false"),c=u.attributes(m,g))c.hasOwnProperty(f)&&0!==f.indexOf("on")&&!h.hasAttribute(f)&&h.setAttribute(f,c[f]);h.className=u.className,h.alt=m,h.src=x,a=!0,n.appendChild(h)}h||n.appendChild(r(m,!1)),h=null}a&&(l<i.length&&n.appendChild(r(i.slice(l),!0)),o.parentNode.replaceChild(n,o))}return d})(u,{callback:c.callback||o,attributes:"function"==typeof c.attributes?c.attributes:s,base:"string"==typeof c.base?c.base:d.base,ext:c.ext||d.ext,size:c.folder||(f=c.size||d.size,"number"==typeof f?f+"x"+f:f),className:c.className||d.className,onerror:c.onerror||d.onerror});var f},replace:l,test:function(d){e.lastIndex=0;var u=e.test(d);return e.lastIndex=0,u}},u={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},e=/\ud83d[\udc68-\udc69](?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)(?:\ufe0f|\ud83c[\udffb-\udfff])\u200d[\u2640\u2642]\ufe0f|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|(?:\u002a)\ufe0f?\u20e3|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca-\udfcc]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd74\udd75\udd7a\udd90\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddd1-\udddd]|[\u261d\u26f7\u26f9\u270a-\u270d])(?:\ud83c[\udffb-\udfff]|)|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\u0023\u20e3|\u0030\u20e3|\u0031\u20e3|\u0032\u20e3|\u0033\u20e3|\u0034\u20e3|\u0035\u20e3|\u0036\u20e3|\u0037\u20e3|\u0038\u20e3|\u0039\u20e3|\ud800\udc00|\ud83c[\udc04\udccf\udd70\udd71\udd7e\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude02\ude1a\ude2f\ude32-\ude3a\ude50\ude51\udf00-\udf21\udf24-\udf84\udf86-\udf93\udf96\udf97\udf99-\udf9b\udf9e-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcd-\udff0\udff3-\udff5\udff7-\udfff]|\ud83d[\udc00-\udc41\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfd\udcff-\udd3d\udd49-\udd4e\udd50-\udd67\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda4\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\udecb\udecd-\uded2\udee0-\udee5\udee9\udeeb\udeec\udef0\udef3-\udef8]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd40-\udd45\udd47-\udd4c\udd50-\udd6b\udd80-\udd97\uddc0\uddd0\uddde-\udde6]|[\u00a9\u00ae\u203c\u2049\u2122\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26ce\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2705\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2728\u2733\u2734\u2744\u2747\u274c\u274e\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27a1\u27b0\u27bf\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299\ue50a]|(?:\u2639)(?:\ufe0f|(?!\ufe0e))/g,c=/\uFE0F/g,f=String.fromCharCode(8205),a=/[&<>'"]/g,t=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,n=String.fromCharCode;return d;function r(d,u){return document.createTextNode(u?d.replace(c,""):d)}function o(d,u){return"".concat(u.base,u.size,"/",d,u.ext)}function b(d){return p(d.indexOf(f)<0?d.replace(c,""):d)}function i(d){return u[d]}function s(){return null}function l(d,u){return String(d).replace(e,u)}function p(d,u){for(var e=[],c=0,f=0,a=0;a<d.length;)c=d.charCodeAt(a++),f?(e.push((65536+(f-55296<<10)+(c-56320)).toString(16)),f=0):55296<=c&&c<=56319?f=c:e.push(c.toString(16));return e.join(u||"-")}}();e.protocol||(c.base=c.base.replace(/^http:/,"")),d.exports=c}).call(this,e(6))},6:function(d,u){var e;e=function(){return this}();try{e=e||Function("return this")()||(0,eval)("this")}catch(d){"object"==typeof window&&(e=window)}d.exports=e}}]); \ No newline at end of file
+(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{46:function(d,u,e){(function(u){var e=u.location||{},c=function(){"use strict";var d={base:"https://twemoji.maxcdn.com/2/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:function(d){var u="string"==typeof d?parseInt(d,16):d;if(u<65536)return n(u);return n(55296+((u-=65536)>>10),56320+(1023&u))},toCodePoint:p},onerror:function(){this.parentNode&&this.parentNode.replaceChild(r(this.alt,!1),this)},parse:function(u,c){c&&"function"!=typeof c||(c={callback:c});return("string"==typeof u?function(d,u){return l(d,function(d){var e,c,f=d,t=b(d),n=u.callback(t,u);if(n){for(c in f="<img ".concat('class="',u.className,'" ','draggable="false" ','alt="',d,'"',' src="',n,'"'),e=u.attributes(d,t))e.hasOwnProperty(c)&&0!==c.indexOf("on")&&-1===f.indexOf(" "+c+"=")&&(f=f.concat(" ",c,'="',e[c].replace(a,i),'"'));f=f.concat("/>")}return f})}:function(d,u){var c,f,a,n,o,i,s,l,p,h,m,g,x,w=function d(u,e){var c,f,a=u.childNodes,n=a.length;for(;n--;)c=a[n],3===(f=c.nodeType)?e.push(c):1!==f||"ownerSVGElement"in c||t.test(c.nodeName.toLowerCase())||d(c,e);return e}(d,[]),C=w.length;for(;C--;){for(a=!1,n=document.createDocumentFragment(),o=w[C],i=o.nodeValue,l=0;s=e.exec(i);){if((p=s.index)!==l&&n.appendChild(r(i.slice(l,p),!0)),m=s[0],g=b(m),l=p+m.length,x=u.callback(g,u)){for(f in(h=new Image).onerror=u.onerror,h.setAttribute("draggable","false"),c=u.attributes(m,g))c.hasOwnProperty(f)&&0!==f.indexOf("on")&&!h.hasAttribute(f)&&h.setAttribute(f,c[f]);h.className=u.className,h.alt=m,h.src=x,a=!0,n.appendChild(h)}h||n.appendChild(r(m,!1)),h=null}a&&(l<i.length&&n.appendChild(r(i.slice(l),!0)),o.parentNode.replaceChild(n,o))}return d})(u,{callback:c.callback||o,attributes:"function"==typeof c.attributes?c.attributes:s,base:"string"==typeof c.base?c.base:d.base,ext:c.ext||d.ext,size:c.folder||(f=c.size||d.size,"number"==typeof f?f+"x"+f:f),className:c.className||d.className,onerror:c.onerror||d.onerror});var f},replace:l,test:function(d){e.lastIndex=0;var u=e.test(d);return e.lastIndex=0,u}},u={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},e=/\ud83d[\udc68-\udc69](?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)(?:\ufe0f|\ud83c[\udffb-\udfff])\u200d[\u2640\u2642]\ufe0f|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|(?:\u002a)\ufe0f?\u20e3|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca-\udfcc]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd74\udd75\udd7a\udd90\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddd1-\udddd]|[\u261d\u26f7\u26f9\u270a-\u270d])(?:\ud83c[\udffb-\udfff]|)|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\u0023\u20e3|\u0030\u20e3|\u0031\u20e3|\u0032\u20e3|\u0033\u20e3|\u0034\u20e3|\u0035\u20e3|\u0036\u20e3|\u0037\u20e3|\u0038\u20e3|\u0039\u20e3|\ud800\udc00|\ud83c[\udc04\udccf\udd70\udd71\udd7e\udd7f\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude02\ude1a\ude2f\ude32-\ude3a\ude50\ude51\udf00-\udf21\udf24-\udf84\udf86-\udf93\udf96\udf97\udf99-\udf9b\udf9e-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcd-\udff0\udff3-\udff5\udff7-\udfff]|\ud83d[\udc00-\udc41\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfd\udcff-\udd3d\udd49-\udd4e\udd50-\udd67\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda4\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\udecb\udecd-\uded2\udee0-\udee5\udee9\udeeb\udeec\udef0\udef3-\udef8]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd40-\udd45\udd47-\udd4c\udd50-\udd6b\udd80-\udd97\uddc0\uddd0\uddde-\udde6]|[\u00a9\u00ae\u203c\u2049\u2122\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23e9-\u23f3\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26ce\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2705\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2728\u2733\u2734\u2744\u2747\u274c\u274e\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27a1\u27b0\u27bf\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299\ue50a]|(?:\u2639)(?:\ufe0f|(?!\ufe0e))/g,c=/\uFE0F/g,f=String.fromCharCode(8205),a=/[&<>'"]/g,t=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,n=String.fromCharCode;return d;function r(d,u){return document.createTextNode(u?d.replace(c,""):d)}function o(d,u){return"".concat(u.base,u.size,"/",d,u.ext)}function b(d){return p(d.indexOf(f)<0?d.replace(c,""):d)}function i(d){return u[d]}function s(){return null}function l(d,u){return String(d).replace(e,u)}function p(d,u){for(var e=[],c=0,f=0,a=0;a<d.length;)c=d.charCodeAt(a++),f?(e.push((65536+(f-55296<<10)+(c-56320)).toString(16)),f=0):55296<=c&&c<=56319?f=c:e.push(c.toString(16));return e.join(u||"-")}}();e.protocol||(c.base=c.base.replace(/^http:/,"")),d.exports=c}).call(this,e(7))},7:function(d,u){var e;e=function(){return this}();try{e=e||Function("return this")()||(0,eval)("this")}catch(d){"object"==typeof window&&(e=window)}d.exports=e}}]); \ No newline at end of file
diff --git a/webpack.config.js b/webpack.config.js
index 7bf6077..ac41099 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -34,8 +34,9 @@ const config = {
mode: node_env === 'production' ? 'production' : 'development',
entry: {
main: path.join(__dirname, 'src/scripts', 'main.js'),
- lunr_search: path.join(__dirname, 'src/scripts/search', 'lunr.js'),
- algolia_search: path.join(__dirname, 'src/scripts/search', 'algolia.js')
+ algolia_search: path.join(__dirname, 'src/scripts/search', 'algolia.js'),
+ fuse_search: path.join(__dirname, 'src/scripts/search', 'fuse.js'),
+ lunr_search: path.join(__dirname, 'src/scripts/search', 'lunr.js')
},
output: {
filename: '[name].[chunkhash:8].js',