text: (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["vendors.app"],{
  
  /***/ "./node_modules/ansi-html/index.js":
  /*!*****************************************!*\
    !*** ./node_modules/ansi-html/index.js ***!
    \*****************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  module.exports = ansiHTML
  
  // Reference to https://github.com/sindresorhus/ansi-regex
  var _regANSI = /(?:(?:\u001b\[)|\u009b)(?:(?:[0-9]{1,3})?(?:(?:;[0-9]{0,3})*)?[A-M|f-m])|\u001b[A-M]/
  
  var _defColors = {
    reset: ['fff', '000'], // [FOREGROUD_COLOR, BACKGROUND_COLOR]
    black: '000',
    red: 'ff0000',
    green: '209805',
    yellow: 'e8bf03',
    blue: '0000ff',
    magenta: 'ff00ff',
    cyan: '00ffee',
    lightgrey: 'f0f0f0',
    darkgrey: '888'
  }
  var _styles = {
    30: 'black',
    31: 'red',
    32: 'green',
    33: 'yellow',
    34: 'blue',
    35: 'magenta',
    36: 'cyan',
    37: 'lightgrey'
  }
  var _openTags = {
    '1': 'font-weight:bold', // bold
    '2': 'opacity:0.5', // dim
    '3': '<i>', // italic
    '4': '<u>', // underscore
    '8': 'display:none', // hidden
    '9': '<del>' // delete
  }
  var _closeTags = {
    '23': '</i>', // reset italic
    '24': '</u>', // reset underscore
    '29': '</del>' // reset delete
  }
  
  ;[0, 21, 22, 27, 28, 39, 49].forEach(function (n) {
    _closeTags[n] = '</span>'
  })
  
  /**
   * Converts text with ANSI color codes to HTML markup.
   * @param {String} text
   * @returns {*}
   */
  function ansiHTML (text) {
    // Returns the text if the string has no ANSI escape code.
    if (!_regANSI.test(text)) {
      return text
    }
  
    // Cache opened sequence.
    var ansiCodes = []
    // Replace with markup.
    var ret = text.replace(/\033\[(\d+)*m/g, function (match, seq) {
      var ot = _openTags[seq]
      if (ot) {
        // If current sequence has been opened, close it.
        if (!!~ansiCodes.indexOf(seq)) { // eslint-disable-line no-extra-boolean-cast
          ansiCodes.pop()
          return '</span>'
        }
        // Open tag.
        ansiCodes.push(seq)
        return ot[0] === '<' ? ot : '<span style="' + ot + ';">'
      }
  
      var ct = _closeTags[seq]
      if (ct) {
        // Pop sequence
        ansiCodes.pop()
        return ct
      }
      return ''
    })
  
    // Make sure tags are closed.
    var l = ansiCodes.length
    ;(l > 0) && (ret += Array(l + 1).join('</span>'))
  
    return ret
  }
  
  /**
   * Customize colors.
   * @param {Object} colors reference to _defColors
   */
  ansiHTML.setColors = function (colors) {
    if (typeof colors !== 'object') {
      throw new Error('`colors` parameter must be an Object.')
    }
  
    var _finalColors = {}
    for (var key in _defColors) {
      var hex = colors.hasOwnProperty(key) ? colors[key] : null
      if (!hex) {
        _finalColors[key] = _defColors[key]
        continue
      }
      if ('reset' === key) {
        if (typeof hex === 'string') {
          hex = [hex]
        }
        if (!Array.isArray(hex) || hex.length === 0 || hex.some(function (h) {
          return typeof h !== 'string'
        })) {
          throw new Error('The value of `' + key + '` property must be an Array and each item could only be a hex string, e.g.: FF0000')
        }
        var defHexColor = _defColors[key]
        if (!hex[0]) {
          hex[0] = defHexColor[0]
        }
        if (hex.length === 1 || !hex[1]) {
          hex = [hex[0]]
          hex.push(defHexColor[1])
        }
  
        hex = hex.slice(0, 2)
      } else if (typeof hex !== 'string') {
        throw new Error('The value of `' + key + '` property must be a hex string, e.g.: FF0000')
      }
      _finalColors[key] = hex
    }
    _setTags(_finalColors)
  }
  
  /**
   * Reset colors.
   */
  ansiHTML.reset = function () {
    _setTags(_defColors)
  }
  
  /**
   * Expose tags, including open and close.
   * @type {Object}
   */
  ansiHTML.tags = {}
  
  if (Object.defineProperty) {
    Object.defineProperty(ansiHTML.tags, 'open', {
      get: function () { return _openTags }
    })
    Object.defineProperty(ansiHTML.tags, 'close', {
      get: function () { return _closeTags }
    })
  } else {
    ansiHTML.tags.open = _openTags
    ansiHTML.tags.close = _closeTags
  }
  
  function _setTags (colors) {
    // reset all
    _openTags['0'] = 'font-weight:normal;opacity:1;color:#' + colors.reset[0] + ';background:#' + colors.reset[1]
    // inverse
    _openTags['7'] = 'color:#' + colors.reset[1] + ';background:#' + colors.reset[0]
    // dark grey
    _openTags['90'] = 'color:#' + colors.darkgrey
  
    for (var code in _styles) {
      var color = _styles[code]
      var oriColor = colors[color] || '000'
      _openTags[code] = 'color:#' + oriColor
      code = parseInt(code)
      _openTags[(code + 10).toString()] = 'background:#' + oriColor
    }
  }
  
  ansiHTML.reset()
  
  
  /***/ }),
  
  /***/ "./node_modules/ansi-regex/index.js":
  /*!******************************************!*\
    !*** ./node_modules/ansi-regex/index.js ***!
    \******************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  module.exports = function () {
  	return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;
  };
  
  
  /***/ }),
  
  /***/ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=script&lang=js&":
  /*!*********************************************************************************************************************************************************************************************!*\
    !*** ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=script&lang=js& ***!
    \*********************************************************************************************************************************************************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es6.number.constructor */ "./node_modules/core-js/modules/es6.number.constructor.js");
  /* harmony import */ var core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_number_constructor__WEBPACK_IMPORTED_MODULE_0__);
  
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  //
  
  /* eslint-disable */
  /* harmony default export */ __webpack_exports__["default"] = ({
    name: 'vue-particles',
    props: {
      color: {
        type: String,
        default: '#dedede'
      },
      particleOpacity: {
        type: Number,
        default: 0.7
      },
      particlesNumber: {
        type: Number,
        default: 80
      },
      shapeType: {
        type: String,
        default: 'circle'
      },
      particleSize: {
        type: Number,
        default: 4
      },
      linesColor: {
        type: String,
        default: '#dedede'
      },
      linesWidth: {
        type: Number,
        default: 1
      },
      lineLinked: {
        type: Boolean,
        default: true
      },
      lineOpacity: {
        type: Number,
        default: 0.4
      },
      linesDistance: {
        type: Number,
        default: 150
      },
      moveSpeed: {
        type: Number,
        default: 3
      },
      hoverEffect: {
        type: Boolean,
        default: true
      },
      hoverMode: {
        type: String,
        default: 'grab'
      },
      clickEffect: {
        type: Boolean,
        default: true
      },
      clickMode: {
        type: String,
        default: 'push'
      }
    },
    mounted: function mounted() {
      var _this = this;
  
      // import particle.js only on client-side
      __webpack_require__(/*! particles.js */ "./node_modules/particles.js/particles.js");
  
      this.$nextTick(function () {
        _this.initParticleJS(_this.color, _this.particleOpacity, _this.particlesNumber, _this.shapeType, _this.particleSize, _this.linesColor, _this.linesWidth, _this.lineLinked, _this.lineOpacity, _this.linesDistance, _this.moveSpeed, _this.hoverEffect, _this.hoverMode, _this.clickEffect, _this.clickMode);
      });
    },
    methods: {
      initParticleJS: function initParticleJS(color, particleOpacity, particlesNumber, shapeType, particleSize, linesColor, linesWidth, lineLinked, lineOpacity, linesDistance, moveSpeed, hoverEffect, hoverMode, clickEffect, clickMode) {
        particlesJS('particles-js', {
          "particles": {
            "number": {
              "value": particlesNumber,
              "density": {
                "enable": true,
                "value_area": 800
              }
            },
            "color": {
              "value": color
            },
            "shape": {
              // circle, edge, triangle, polygon, star, image
              "type": shapeType,
              "stroke": {
                "width": 0,
                "color": "#192231"
              },
              "polygon": {
                "nb_sides": 5
              }
            },
            "opacity": {
              "value": particleOpacity,
              "random": false,
              "anim": {
                "enable": false,
                "speed": 1,
                "opacity_min": 0.1,
                "sync": false
              }
            },
            "size": {
              "value": particleSize,
              "random": true,
              "anim": {
                "enable": false,
                "speed": 40,
                "size_min": 0.1,
                "sync": false
              }
            },
            "line_linked": {
              "enable": lineLinked,
              "distance": linesDistance,
              "color": linesColor,
              "opacity": lineOpacity,
              "width": linesWidth
            },
            "move": {
              "enable": true,
              "speed": moveSpeed,
              "direction": "none",
              "random": false,
              "straight": false,
              "out_mode": "out",
              "bounce": false,
              "attract": {
                "enable": false,
                "rotateX": 600,
                "rotateY": 1200
              }
            }
          },
          "interactivity": {
            "detect_on": "canvas",
            "events": {
              "onhover": {
                "enable": hoverEffect,
                "mode": hoverMode
              },
              "onclick": {
                "enable": clickEffect,
                "mode": clickMode
              },
              "onresize": {
                "enable": true,
                "density_auto": true,
                "density_area": 400
              }
            },
            "modes": {
              "grab": {
                "distance": 140,
                "line_linked": {
                  "opacity": 1
                }
              },
              "bubble": {
                "distance": 400,
                "size": 40,
                "duration": 2,
                "opacity": 8,
                "speed": 3
              },
              "repulse": {
                "distance": 200,
                "duration": 0.4
              },
              "push": {
                "particles_nb": 4
              },
              "remove": {
                "particles_nb": 2
              }
            }
          },
          "retina_detect": true
        });
      }
    }
  });
  /* eslint-disable */
  
  /***/ }),
  
  /***/ "./node_modules/consola/dist/consola.browser.js":
  /*!******************************************************!*\
    !*** ./node_modules/consola/dist/consola.browser.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  !function(t,e){ true?module.exports=e():undefined}(this,function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function r(t,r,o){return r&&e(t.prototype,r),o&&e(t,o),t}function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function s(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,o)}return r}function n(t){return function(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e<t.length;e++)r[e]=t[e];return r}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var i={fatal:{level:0},error:{level:0},warn:{level:1},log:{level:2},info:{level:3},success:{level:3},debug:{level:4},trace:{level:5},silent:{level:1/0},ready:{level:3},start:{level:3}};function l(t){return e=t,"[object Object]"===Object.prototype.toString.call(e)&&(!(!t.message&&!t.args)&&!t.stack);var e}var a=!1,u=[],c=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var o in t(this,e),this._reporters=r.reporters||[],this._types=r.types||i,this._level=null!=r.level?r.level:3,this._defaults=r.defaults||{},this._async=void 0!==r.async?r.async:null,this._stdout=r.stdout,this._stderr=r.stdout,this._mockFn=r.mockFn,this._throttle=r.throttle||2e3,this._types)this[o]=this._wrapLogFn(Object.assign({type:o},this._types[o],this._defaults));this._mockFn&&this.mockTypes(),this._lastLogSerialized=null,this._lastLog=null,this._lastLogTime=null,this._lastLogCount=0}return r(e,[{key:"create",value:function(t){return new e(Object.assign({reporters:this._reporters,level:this._level,types:this._types,defaults:this._defaults,stdout:this._stdout,stderr:this._stderr,mockFn:this._mockFn},t))}},{key:"withDefaults",value:function(t){return this.create({defaults:Object.assign({},this._defaults,t)})}},{key:"withTag",value:function(t){return this.withDefaults({tag:this._defaults.tag?this._defaults.tag+":"+t:t})}},{key:"addReporter",value:function(t){return this._reporters.push(t),this}},{key:"removeReporter",value:function(t){if(t){var e=this._reporters.indexOf(t);if(e>=0)return this._reporters.splice(e,1)}else this._reporters.splice(0);return this}},{key:"setReporters",value:function(t){return this._reporters=Array.isArray(t)?t:[t],this}},{key:"wrapAll",value:function(){this.wrapConsole(),this.wrapStd()}},{key:"restoreAll",value:function(){this.restoreConsole(),this.restoreStd()}},{key:"wrapConsole",value:function(){for(var t in this._types)console["__"+t]||(console["__"+t]=console[t]),console[t]=this[t]}},{key:"restoreConsole",value:function(){for(var t in this._types)console["__"+t]&&(console[t]=console["__"+t],delete console["__"+t])}},{key:"wrapStd",value:function(){this._wrapStream(this.stdout,"log"),this._wrapStream(this.stderr,"log")}},{key:"_wrapStream",value:function(t,e){var r=this;t&&(t.__write||(t.__write=t.write),t.write=function(t){r[e](String(t).trim())})}},{key:"restoreStd",value:function(){this._restoreStream(this.stdout),this._restoreStream(this.stderr)}},{key:"_restoreStream",value:function(t){t&&t.__write&&(t.write=t.__write,delete t.__write)}},{key:"pauseLogs",value:function(){a=!0}},{key:"resumeLogs",value:function(){a=!1;var t=u.splice(0),e=!0,r=!1,o=void 0;try{for(var s,n=t[Symbol.iterator]();!(e=(s=n.next()).done);e=!0){var i=s.value;i[0]._logFn(i[1],i[2])}}catch(t){r=!0,o=t}finally{try{e||null==n.return||n.return()}finally{if(r)throw o}}}},{key:"mockTypes",value:function(t){if(this._mockFn=t||this._mockFn,"function"==typeof this._mockFn)for(var e in this._types)this[e]=this._mockFn(e,this._types[e])||this[e]}},{key:"_wrapLogFn",value:function(t){return function(){if(!a)return this._logFn(t,arguments);u.push([this,t,arguments])}.bind(this)}},{key:"_logFn",value:function(t,e){if(t.level>this._level)return!!this._async&&Promise.resolve(!1);var r=Object.assign({date:new Date,args:[]},t);1===e.length&&l(e[0])?Object.assign(r,e[0]):r.args=Array.from(e),r.message&&(r.args.unshift(r.message),delete r.message),r.additional&&(Array.isArray(r.additional)||(r.additional=r.additional.split("\n")),r.args.push("\n"+r.additional.join("\n")),delete r.additional),r.type&&(r.type=r.type.toLowerCase()),r.tag&&(r.tag=r.tag.toLowerCase());var i=this._lastLogTime?r.date-this._lastLogTime:0;if(this._lastLogTime=r.date,i<this._throttle)try{var a=JSON.stringify([r.type,r.tag,r.args]),u=this._lastLogSerialized===a;if(this._lastLogSerialized=a,u)return void this._lastLogCount++}catch(t){}if(this._lastLogCount&&(this._log(function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?s(r,!0).forEach(function(e){o(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):s(r).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}({},this._lastLog,{args:[].concat(n(this._lastLog.args),["(repeated ".concat(this._lastLogCount," times)")])})),this._lastLogCount=0),this._lastLog=r,this._async)return this._logAsync(r);this._log(r)}},{key:"_log",value:function(t){var e=!0,r=!1,o=void 0;try{for(var s,n=this._reporters[Symbol.iterator]();!(e=(s=n.next()).done);e=!0){s.value.log(t,{async:!1,stdout:this.stdout,stderr:this.stderr})}}catch(t){r=!0,o=t}finally{try{e||null==n.return||n.return()}finally{if(r)throw o}}}},{key:"_logAsync",value:function(t){var e=this;return Promise.all(this._reporters.map(function(r){return r.log(t,{async:!0,stdout:e.stdout,stderr:e.stderr})}))}},{key:"level",get:function(){return this._level},set:function(t){var e=0,r=0;for(var o in this._types){var s=this._types[o];s.level>r?r=s.level:s.level<e&&(e=s.level)}this._level=Math.min(r,Math.max(e,t))}},{key:"stdout",get:function(){return this._stdout||console._stdout}},{key:"stderr",get:function(){return this._stderr||console._stderr}}]),e}();c.prototype.add=c.prototype.addReporter,c.prototype.remove=c.prototype.removeReporter,c.prototype.clear=c.prototype.removeReporter,c.prototype.withScope=c.prototype.withTag,c.prototype.mock=c.prototype.mockTypes,c.prototype.pause=c.prototype.pauseLogs,c.prototype.resume=c.prototype.resumeLogs;var h,p=function(){function e(r){t(this,e),this.options=Object.assign({},r),this.defaultColor="#7f8c8d",this.levelColorMap={0:"#c0392b",1:"#f39c12",3:"#00BCD4"},this.typeColorMap={success:"#2ecc71"}}return r(e,[{key:"log",value:function(t){var e=t.level<1?console.__error||console.error:1===t.level&&console.warn?console.__warn||console.warn:console.__log||console.log,r="log"!==t.type?t.type:"",o=t.tag?t.tag:"",s=this.typeColorMap[t.type]||this.levelColorMap[t.level]||this.defaultColor,i="\n      background: ".concat(s,";\n      border-radius: 0.5em;\n      color: white;\n      font-weight: bold;\n      padding: 2px 0.5em;\n    ");e.apply(void 0,["%c"+[o,r].filter(Boolean).join(":"),i].concat(n(t.args)))}}]),e}();return"undefined"!=typeof window&&window.consola||((h=new c({reporters:[new p]})).Consola=c,h.BrowserReporter=p,h)});
  
  
  /***/ }),
  
  /***/ "./node_modules/css-loader/dist/runtime/api.js":
  /*!*****************************************************!*\
    !*** ./node_modules/css-loader/dist/runtime/api.js ***!
    \*****************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  /*
    MIT License http://www.opensource.org/licenses/mit-license.php
    Author Tobias Koppers @sokra
  */
  // css base code, injected by the css-loader
  // eslint-disable-next-line func-names
  module.exports = function (useSourceMap) {
    var list = []; // return the list of modules as css string
  
    list.toString = function toString() {
      return this.map(function (item) {
        var content = cssWithMappingToString(item, useSourceMap);
  
        if (item[2]) {
          return "@media ".concat(item[2], "{").concat(content, "}");
        }
  
        return content;
      }).join('');
    }; // import a list of modules into the list
    // eslint-disable-next-line func-names
  
  
    list.i = function (modules, mediaQuery) {
      if (typeof modules === 'string') {
        // eslint-disable-next-line no-param-reassign
        modules = [[null, modules, '']];
      }
  
      var alreadyImportedModules = {};
  
      for (var i = 0; i < this.length; i++) {
        // eslint-disable-next-line prefer-destructuring
        var id = this[i][0];
  
        if (id != null) {
          alreadyImportedModules[id] = true;
        }
      }
  
      for (var _i = 0; _i < modules.length; _i++) {
        var item = modules[_i]; // skip already imported module
        // this implementation is not 100% perfect for weird media query combinations
        // when a module is imported multiple times with different media queries.
        // I hope this will never occur (Hey this way we have smaller bundles)
  
        if (item[0] == null || !alreadyImportedModules[item[0]]) {
          if (mediaQuery && !item[2]) {
            item[2] = mediaQuery;
          } else if (mediaQuery) {
            item[2] = "(".concat(item[2], ") and (").concat(mediaQuery, ")");
          }
  
          list.push(item);
        }
      }
    };
  
    return list;
  };
  
  function cssWithMappingToString(item, useSourceMap) {
    var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring
  
    var cssMapping = item[3];
  
    if (!cssMapping) {
      return content;
    }
  
    if (useSourceMap && typeof btoa === 'function') {
      var sourceMapping = toComment(cssMapping);
      var sourceURLs = cssMapping.sources.map(function (source) {
        return "/*# sourceURL=".concat(cssMapping.sourceRoot).concat(source, " */");
      });
      return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
    }
  
    return [content].join('\n');
  } // Adapted from convert-source-map (MIT)
  
  
  function toComment(sourceMap) {
    // eslint-disable-next-line no-undef
    var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
    var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
    return "/*# ".concat(data, " */");
  }
  
  /***/ }),
  
  /***/ "./node_modules/deepmerge/dist/cjs.js":
  /*!********************************************!*\
    !*** ./node_modules/deepmerge/dist/cjs.js ***!
    \********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  var isMergeableObject = function isMergeableObject(value) {
  	return isNonNullObject(value)
  		&& !isSpecial(value)
  };
  
  function isNonNullObject(value) {
  	return !!value && typeof value === 'object'
  }
  
  function isSpecial(value) {
  	var stringValue = Object.prototype.toString.call(value);
  
  	return stringValue === '[object RegExp]'
  		|| stringValue === '[object Date]'
  		|| isReactElement(value)
  }
  
  // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
  var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
  var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
  
  function isReactElement(value) {
  	return value.$$typeof === REACT_ELEMENT_TYPE
  }
  
  function emptyTarget(val) {
  	return Array.isArray(val) ? [] : {}
  }
  
  function cloneUnlessOtherwiseSpecified(value, options) {
  	return (options.clone !== false && options.isMergeableObject(value))
  		? deepmerge(emptyTarget(value), value, options)
  		: value
  }
  
  function defaultArrayMerge(target, source, options) {
  	return target.concat(source).map(function(element) {
  		return cloneUnlessOtherwiseSpecified(element, options)
  	})
  }
  
  function getMergeFunction(key, options) {
  	if (!options.customMerge) {
  		return deepmerge
  	}
  	var customMerge = options.customMerge(key);
  	return typeof customMerge === 'function' ? customMerge : deepmerge
  }
  
  function getEnumerableOwnPropertySymbols(target) {
  	return Object.getOwnPropertySymbols
  		? Object.getOwnPropertySymbols(target).filter(function(symbol) {
  			return target.propertyIsEnumerable(symbol)
  		})
  		: []
  }
  
  function getKeys(target) {
  	return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))
  }
  
  function mergeObject(target, source, options) {
  	var destination = {};
  	if (options.isMergeableObject(target)) {
  		getKeys(target).forEach(function(key) {
  			destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
  		});
  	}
  	getKeys(source).forEach(function(key) {
  		if (!options.isMergeableObject(source[key]) || !target[key]) {
  			destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
  		} else {
  			destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
  		}
  	});
  	return destination
  }
  
  function deepmerge(target, source, options) {
  	options = options || {};
  	options.arrayMerge = options.arrayMerge || defaultArrayMerge;
  	options.isMergeableObject = options.isMergeableObject || isMergeableObject;
  
  	var sourceIsArray = Array.isArray(source);
  	var targetIsArray = Array.isArray(target);
  	var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
  
  	if (!sourceAndTargetTypesMatch) {
  		return cloneUnlessOtherwiseSpecified(source, options)
  	} else if (sourceIsArray) {
  		return options.arrayMerge(target, source, options)
  	} else {
  		return mergeObject(target, source, options)
  	}
  }
  
  deepmerge.all = function deepmergeAll(array, options) {
  	if (!Array.isArray(array)) {
  		throw new Error('first argument should be an array')
  	}
  
  	return array.reduce(function(prev, next) {
  		return deepmerge(prev, next, options)
  	}, {})
  };
  
  var deepmerge_1 = deepmerge;
  
  module.exports = deepmerge_1;
  
  
  /***/ }),
  
  /***/ "./node_modules/eventsource-polyfill/dist/browserify-eventsource.js":
  /*!**************************************************************************!*\
    !*** ./node_modules/eventsource-polyfill/dist/browserify-eventsource.js ***!
    \**************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  /*
     * CommonJS module that exports EventSource polyfill version 0.9.6
     * This module is intended for browser side use
     * =====================================================================
     * THIS IS A POLYFILL MODULE, SO IT HAS SIDE EFFECTS
     * IT AUTOMATICALLY CHECKS IF window OBJECT DEFINES EventSource
     * AND ADD THE EXPORTED ONE IN CASE IT IS UNDEFINED
     * =====================================================================
     * Supported by sc AmvTek srl
     * :email: devel@amvtek.com
   */
  
  
  var PolyfillEventSource = __webpack_require__(/*! ./eventsource.js */ "./node_modules/eventsource-polyfill/dist/eventsource.js").EventSource;
  module.exports = PolyfillEventSource;
  
  // Add EventSource to window if it is missing...
  if (window && !window.EventSource){
      window.EventSource = PolyfillEventSource;
      if (console){
  	console.log("polyfill-eventsource added missing EventSource to window");
      }
  }
  
  
  /***/ }),
  
  /***/ "./node_modules/eventsource-polyfill/dist/eventsource.js":
  /*!***************************************************************!*\
    !*** ./node_modules/eventsource-polyfill/dist/eventsource.js ***!
    \***************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  /*
     * EventSource polyfill version 0.9.6
     * Supported by sc AmvTek srl
     * :email: devel@amvtek.com
   */
  ;(function (global) {
  
      if (global.EventSource && !global._eventSourceImportPrefix){
          return;
      }
  
      var evsImportName = (global._eventSourceImportPrefix||'')+"EventSource";
  
      var EventSource = function (url, options) {
  
          if (!url || typeof url != 'string') {
              throw new SyntaxError('Not enough arguments');
          }
  
          this.URL = url;
          this.setOptions(options);
          var evs = this;
          setTimeout(function(){evs.poll()}, 0);
      };
  
      EventSource.prototype = {
  
          CONNECTING: 0,
  
          OPEN: 1,
  
          CLOSED: 2,
  
          defaultOptions: {
  
              loggingEnabled: false,
  
              loggingPrefix: "eventsource",
  
              interval: 500, // milliseconds
  
              bufferSizeLimit: 256*1024, // bytes
  
              silentTimeout: 300000, // milliseconds
  
              getArgs:{
                  'evs_buffer_size_limit': 256*1024
              },
  
              xhrHeaders:{
                  'Accept': 'text/event-stream',
                  'Cache-Control': 'no-cache',
                  'X-Requested-With': 'XMLHttpRequest'
              }
          },
  
          setOptions: function(options){
  
              var defaults = this.defaultOptions;
              var option;
  
              // set all default options...
              for (option in defaults){
  
                  if ( defaults.hasOwnProperty(option) ){
                      this[option] = defaults[option];
                  }
              }
  
              // override with what is in options
              for (option in options){
  
                  if (option in defaults && options.hasOwnProperty(option)){
                      this[option] = options[option];
                  }
              }
  
              // if getArgs option is enabled
              // ensure evs_buffer_size_limit corresponds to bufferSizeLimit
              if (this.getArgs && this.bufferSizeLimit) {
  
                  this.getArgs['evs_buffer_size_limit'] = this.bufferSizeLimit;
              }
  
              // if console is not available, force loggingEnabled to false
              if (typeof console === "undefined" || typeof console.log === "undefined") {
  
                  this.loggingEnabled = false;
              }
          },
  
          log: function(message) {
  
              if (this.loggingEnabled) {
  
                  console.log("[" + this.loggingPrefix +"]:" + message)
              }
          },
  
          poll: function() {
  
              try {
  
                  if (this.readyState == this.CLOSED) {
                      return;
                  }
  
                  this.cleanup();
                  this.readyState = this.CONNECTING;
                  this.cursor = 0;
                  this.cache = '';
                  this._xhr = new this.XHR(this);
                  this.resetNoActivityTimer();
  
              }
              catch (e) {
  
                  // in an attempt to silence the errors
                  this.log('There were errors inside the pool try-catch');
                  this.dispatchEvent('error', { type: 'error', data: e.message });
              }
          },
  
          pollAgain: function (interval) {
  
              // schedule poll to be called after interval milliseconds
              var evs = this;
              evs.readyState = evs.CONNECTING;
              evs.dispatchEvent('error', {
                  type: 'error',
                  data: "Reconnecting "
              });
              this._pollTimer = setTimeout(function(){evs.poll()}, interval||0);
          },
  
  
          cleanup: function() {
  
              this.log('evs cleaning up')
  
              if (this._pollTimer){
                  clearInterval(this._pollTimer);
                  this._pollTimer = null;
              }
  
              if (this._noActivityTimer){
                  clearInterval(this._noActivityTimer);
                  this._noActivityTimer = null;
              }
  
              if (this._xhr){
                  this._xhr.abort();
                  this._xhr = null;
              }
          },
  
          resetNoActivityTimer: function(){
  
              if (this.silentTimeout){
  
                  if (this._noActivityTimer){
                      clearInterval(this._noActivityTimer);
                  }
                  var evs = this;
                  this._noActivityTimer = setTimeout(
                          function(){ evs.log('Timeout! silentTImeout:'+evs.silentTimeout); evs.pollAgain(); },
                          this.silentTimeout
                          );
              }
          },
  
          close: function () {
  
              this.readyState = this.CLOSED;
              this.log('Closing connection. readyState: '+this.readyState);
              this.cleanup();
          },
  
          ondata: function() {
  
              var request = this._xhr;
  
              if (request.isReady() && !request.hasError() ) {
                  // reset the timer, as we have activity
                  this.resetNoActivityTimer();
  
                  // move this EventSource to OPEN state...
                  if (this.readyState == this.CONNECTING) {
                      this.readyState = this.OPEN;
                      this.dispatchEvent('open', { type: 'open' });
                  }
  
                  var buffer = request.getBuffer();
  
                  if (buffer.length > this.bufferSizeLimit) {
                      this.log('buffer.length > this.bufferSizeLimit');
                      this.pollAgain();
                  }
  
                  if (this.cursor == 0 && buffer.length > 0){
  
                      // skip byte order mark \uFEFF character if it starts the stream
                      if (buffer.substring(0,1) == '\uFEFF'){
                          this.cursor = 1;
                      }
                  }
  
                  var lastMessageIndex = this.lastMessageIndex(buffer);
                  if (lastMessageIndex[0] >= this.cursor){
  
                      var newcursor = lastMessageIndex[1];
                      var toparse = buffer.substring(this.cursor, newcursor);
                      this.parseStream(toparse);
                      this.cursor = newcursor;
                  }
  
                  // if request is finished, reopen the connection
                  if (request.isDone()) {
                      this.log('request.isDone(). reopening the connection');
                      this.pollAgain(this.interval);
                  }
              }
              else if (this.readyState !== this.CLOSED) {
  
                  this.log('this.readyState !== this.CLOSED');
                  this.pollAgain(this.interval);
  
                  //MV: Unsure why an error was previously dispatched
              }
          },
  
          parseStream: function(chunk) {
  
              // normalize line separators (\r\n,\r,\n) to \n
              // remove white spaces that may precede \n
              chunk = this.cache + this.normalizeToLF(chunk);
  
              var events = chunk.split('\n\n');
  
              var i, j, eventType, datas, line, retry;
  
              for (i=0; i < (events.length - 1); i++) {
  
                  eventType = 'message';
                  datas = [];
                  parts = events[i].split('\n');
  
                  for (j=0; j < parts.length; j++) {
  
                      line = this.trimWhiteSpace(parts[j]);
  
                      if (line.indexOf('event') == 0) {
  
                          eventType = line.replace(/event:?\s*/, '');
                      }
                      else if (line.indexOf('retry') == 0) {
  
                          retry = parseInt(line.replace(/retry:?\s*/, ''));
                          if(!isNaN(retry)) {
                              this.interval = retry;
                          }
                      }
                      else if (line.indexOf('data') == 0) {
  
                          datas.push(line.replace(/data:?\s*/, ''));
                      }
                      else if (line.indexOf('id:') == 0) {
  
                          this.lastEventId = line.replace(/id:?\s*/, '');
                      }
                      else if (line.indexOf('id') == 0) { // this resets the id
  
                          this.lastEventId = null;
                      }
                  }
  
                  if (datas.length) {
                      // dispatch a new event
                      var event = new MessageEvent(eventType, datas.join('\n'), window.location.origin, this.lastEventId);
                      this.dispatchEvent(eventType, event);
                  }
              }
  
              this.cache = events[events.length - 1];
          },
  
          dispatchEvent: function (type, event) {
              var handlers = this['_' + type + 'Handlers'];
  
              if (handlers) {
  
                  for (var i = 0; i < handlers.length; i++) {
                      handlers[i].call(this, event);
                  }
              }
  
              if (this['on' + type]) {
                  this['on' + type].call(this, event);
              }
  
          },
  
          addEventListener: function (type, handler) {
              if (!this['_' + type + 'Handlers']) {
                  this['_' + type + 'Handlers'] = [];
              }
  
              this['_' + type + 'Handlers'].push(handler);
          },
  
          removeEventListener: function (type, handler) {
              var handlers = this['_' + type + 'Handlers'];
              if (!handlers) {
                  return;
              }
              for (var i = handlers.length - 1; i >= 0; --i) {
                  if (handlers[i] === handler) {
                      handlers.splice(i, 1);
                      break;
                  }
              }
          },
  
          _pollTimer: null,
  
          _noactivityTimer: null,
  
          _xhr: null,
  
          lastEventId: null,
  
          cache: '',
  
          cursor: 0,
  
          onerror: null,
  
          onmessage: null,
  
          onopen: null,
  
          readyState: 0,
  
          // ===================================================================
          // helpers functions
          // those are attached to prototype to ease reuse and testing...
  
          urlWithParams: function (baseURL, params) {
  
              var encodedArgs = [];
  
              if (params){
  
                  var key, urlarg;
                  var urlize = encodeURIComponent;
  
                  for (key in params){
                      if (params.hasOwnProperty(key)) {
                          urlarg = urlize(key)+'='+urlize(params[key]);
                          encodedArgs.push(urlarg);
                      }
                  }
              }
  
              if (encodedArgs.length > 0){
  
                  if (baseURL.indexOf('?') == -1)
                      return baseURL + '?' + encodedArgs.join('&');
                  return baseURL + '&' + encodedArgs.join('&');
              }
              return baseURL;
          },
  
          lastMessageIndex: function(text) {
  
              var ln2 =text.lastIndexOf('\n\n');
              var lr2 = text.lastIndexOf('\r\r');
              var lrln2 = text.lastIndexOf('\r\n\r\n');
  
              if (lrln2 > Math.max(ln2, lr2)) {
                  return [lrln2, lrln2+4];
              }
              return [Math.max(ln2, lr2), Math.max(ln2, lr2) + 2]
          },
  
          trimWhiteSpace: function(str) {
              // to remove whitespaces left and right of string
  
              var reTrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g;
              return str.replace(reTrim, '');
          },
  
          normalizeToLF: function(str) {
  
              // replace \r and \r\n with \n
              return str.replace(/\r\n|\r/g, '\n');
          }
  
      };
  
      if (!isOldIE()){
  
          EventSource.isPolyfill = "XHR";
  
          // EventSource will send request using XMLHttpRequest
          EventSource.prototype.XHR = function(evs) {
  
              request = new XMLHttpRequest();
              this._request = request;
              evs._xhr = this;
  
              // set handlers
              request.onreadystatechange = function(){
                  if (request.readyState > 1 && evs.readyState != evs.CLOSED) {
                      if (request.status == 200 || (request.status>=300 && request.status<400)){
                          evs.ondata();
                      }
                      else {
                          request._failed = true;
                          evs.readyState = evs.CLOSED;
                          evs.dispatchEvent('error', {
                              type: 'error',
                              data: "The server responded with "+request.status
                          });
                          evs.close();
                      }
                  }
              };
  
              request.onprogress = function () {
              };
  
              request.open('GET', evs.urlWithParams(evs.URL, evs.getArgs), true);
  
              var headers = evs.xhrHeaders; // maybe null
              for (var header in headers) {
                  if (headers.hasOwnProperty(header)){
                      request.setRequestHeader(header, headers[header]);
                  }
              }
              if (evs.lastEventId) {
                  request.setRequestHeader('Last-Event-Id', evs.lastEventId);
              }
  
              request.send();
          };
  
          EventSource.prototype.XHR.prototype = {
  
              useXDomainRequest: false,
  
              _request: null,
  
              _failed: false, // true if we have had errors...
  
              isReady: function() {
  
  
                  return this._request.readyState >= 2;
              },
  
              isDone: function() {
  
                  return (this._request.readyState == 4);
              },
  
              hasError: function() {
  
                  return (this._failed || (this._request.status >= 400));
              },
  
              getBuffer: function() {
  
                  var rv = '';
                  try {
                      rv = this._request.responseText || '';
                  }
                  catch (e){}
                  return rv;
              },
  
              abort: function() {
  
                  if ( this._request ) {
                      this._request.abort();
                  }
              }
          };
      }
      else {
  
  	EventSource.isPolyfill = "IE_8-9";
  
          // patch EventSource defaultOptions
          var defaults = EventSource.prototype.defaultOptions;
          defaults.xhrHeaders = null; // no headers will be sent
          defaults.getArgs['evs_preamble'] = 2048 + 8;
  
          // EventSource will send request using Internet Explorer XDomainRequest
          EventSource.prototype.XHR = function(evs) {
  
              request = new XDomainRequest();
              this._request = request;
  
              // set handlers
              request.onprogress = function(){
                  request._ready = true;
                  evs.ondata();
              };
  
              request.onload = function(){
                  this._loaded = true;
                  evs.ondata();
              };
  
              request.onerror = function(){
                  this._failed = true;
                  evs.readyState = evs.CLOSED;
                  evs.dispatchEvent('error', {
                      type: 'error',
                      data: "XDomainRequest error"
                  });
              };
  
              request.ontimeout = function(){
                  this._failed = true;
                  evs.readyState = evs.CLOSED;
                  evs.dispatchEvent('error', {
                      type: 'error',
                      data: "XDomainRequest timed out"
                  });
              };
  
              // XDomainRequest does not allow setting custom headers
              // If EventSource has enabled the use of GET arguments
              // we add parameters to URL so that server can adapt the stream...
              var reqGetArgs = {};
              if (evs.getArgs) {
  
                  // copy evs.getArgs in reqGetArgs
                  var defaultArgs = evs.getArgs;
                      for (var key in defaultArgs) {
                          if (defaultArgs.hasOwnProperty(key)){
                              reqGetArgs[key] = defaultArgs[key];
                          }
                      }
                  if (evs.lastEventId){
                      reqGetArgs['evs_last_event_id'] = evs.lastEventId;
                  }
              }
              // send the request
  
              request.open('GET', evs.urlWithParams(evs.URL,reqGetArgs));
              request.send();
          };
  
          EventSource.prototype.XHR.prototype = {
  
              useXDomainRequest: true,
  
              _request: null,
  
              _ready: false, // true when progress events are dispatched
  
              _loaded: false, // true when request has been loaded
  
              _failed: false, // true if when request is in error
  
              isReady: function() {
  
                  return this._request._ready;
              },
  
              isDone: function() {
  
                  return this._request._loaded;
              },
  
              hasError: function() {
  
                  return this._request._failed;
              },
  
              getBuffer: function() {
  
                  var rv = '';
                  try {
                      rv = this._request.responseText || '';
                  }
                  catch (e){}
                  return rv;
              },
  
              abort: function() {
  
                  if ( this._request){
                      this._request.abort();
                  }
              }
          };
      }
  
      function MessageEvent(type, data, origin, lastEventId) {
  
          this.bubbles = false;
          this.cancelBubble = false;
          this.cancelable = false;
          this.data = data || null;
          this.origin = origin || '';
          this.lastEventId = lastEventId || '';
          this.type = type || 'message';
      }
  
      function isOldIE () {
  
          //return true if we are in IE8 or IE9
          return (window.XDomainRequest && (window.XMLHttpRequest && new XMLHttpRequest().responseType === undefined)) ? true : false;
      }
  
      global[evsImportName] = EventSource;
  })(this);
  
  
  /***/ }),
  
  /***/ "./node_modules/html-entities/index.js":
  /*!*********************************************!*\
    !*** ./node_modules/html-entities/index.js ***!
    \*********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  module.exports = {
    XmlEntities: __webpack_require__(/*! ./lib/xml-entities.js */ "./node_modules/html-entities/lib/xml-entities.js"),
    Html4Entities: __webpack_require__(/*! ./lib/html4-entities.js */ "./node_modules/html-entities/lib/html4-entities.js"),
    Html5Entities: __webpack_require__(/*! ./lib/html5-entities.js */ "./node_modules/html-entities/lib/html5-entities.js"),
    AllHtmlEntities: __webpack_require__(/*! ./lib/html5-entities.js */ "./node_modules/html-entities/lib/html5-entities.js")
  };
  
  
  /***/ }),
  
  /***/ "./node_modules/html-entities/lib/html4-entities.js":
  /*!**********************************************************!*\
    !*** ./node_modules/html-entities/lib/html4-entities.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  var HTML_ALPHA = ['apos', 'nbsp', 'iexcl', 'cent', 'pound', 'curren', 'yen', 'brvbar', 'sect', 'uml', 'copy', 'ordf', 'laquo', 'not', 'shy', 'reg', 'macr', 'deg', 'plusmn', 'sup2', 'sup3', 'acute', 'micro', 'para', 'middot', 'cedil', 'sup1', 'ordm', 'raquo', 'frac14', 'frac12', 'frac34', 'iquest', 'Agrave', 'Aacute', 'Acirc', 'Atilde', 'Auml', 'Aring', 'Aelig', 'Ccedil', 'Egrave', 'Eacute', 'Ecirc', 'Euml', 'Igrave', 'Iacute', 'Icirc', 'Iuml', 'ETH', 'Ntilde', 'Ograve', 'Oacute', 'Ocirc', 'Otilde', 'Ouml', 'times', 'Oslash', 'Ugrave', 'Uacute', 'Ucirc', 'Uuml', 'Yacute', 'THORN', 'szlig', 'agrave', 'aacute', 'acirc', 'atilde', 'auml', 'aring', 'aelig', 'ccedil', 'egrave', 'eacute', 'ecirc', 'euml', 'igrave', 'iacute', 'icirc', 'iuml', 'eth', 'ntilde', 'ograve', 'oacute', 'ocirc', 'otilde', 'ouml', 'divide', 'oslash', 'ugrave', 'uacute', 'ucirc', 'uuml', 'yacute', 'thorn', 'yuml', 'quot', 'amp', 'lt', 'gt', 'OElig', 'oelig', 'Scaron', 'scaron', 'Yuml', 'circ', 'tilde', 'ensp', 'emsp', 'thinsp', 'zwnj', 'zwj', 'lrm', 'rlm', 'ndash', 'mdash', 'lsquo', 'rsquo', 'sbquo', 'ldquo', 'rdquo', 'bdquo', 'dagger', 'Dagger', 'permil', 'lsaquo', 'rsaquo', 'euro', 'fnof', 'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta', 'Iota', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho', 'sigmaf', 'sigma', 'tau', 'upsilon', 'phi', 'chi', 'psi', 'omega', 'thetasym', 'upsih', 'piv', 'bull', 'hellip', 'prime', 'Prime', 'oline', 'frasl', 'weierp', 'image', 'real', 'trade', 'alefsym', 'larr', 'uarr', 'rarr', 'darr', 'harr', 'crarr', 'lArr', 'uArr', 'rArr', 'dArr', 'hArr', 'forall', 'part', 'exist', 'empty', 'nabla', 'isin', 'notin', 'ni', 'prod', 'sum', 'minus', 'lowast', 'radic', 'prop', 'infin', 'ang', 'and', 'or', 'cap', 'cup', 'int', 'there4', 'sim', 'cong', 'asymp', 'ne', 'equiv', 'le', 'ge', 'sub', 'sup', 'nsub', 'sube', 'supe', 'oplus', 'otimes', 'perp', 'sdot', 'lceil', 'rceil', 'lfloor', 'rfloor', 'lang', 'rang', 'loz', 'spades', 'clubs', 'hearts', 'diams'];
  var HTML_CODES = [39, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 34, 38, 60, 62, 338, 339, 352, 353, 376, 710, 732, 8194, 8195, 8201, 8204, 8205, 8206, 8207, 8211, 8212, 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8240, 8249, 8250, 8364, 402, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 977, 978, 982, 8226, 8230, 8242, 8243, 8254, 8260, 8472, 8465, 8476, 8482, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656, 8657, 8658, 8659, 8660, 8704, 8706, 8707, 8709, 8711, 8712, 8713, 8715, 8719, 8721, 8722, 8727, 8730, 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747, 8756, 8764, 8773, 8776, 8800, 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839, 8853, 8855, 8869, 8901, 8968, 8969, 8970, 8971, 9001, 9002, 9674, 9824, 9827, 9829, 9830];
  
  var alphaIndex = {};
  var numIndex = {};
  
  var i = 0;
  var length = HTML_ALPHA.length;
  while (i < length) {
      var a = HTML_ALPHA[i];
      var c = HTML_CODES[i];
      alphaIndex[a] = String.fromCharCode(c);
      numIndex[c] = a;
      i++;
  }
  
  /**
   * @constructor
   */
  function Html4Entities() {}
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html4Entities.prototype.decode = function(str) {
      if (!str || !str.length) {
          return '';
      }
      return str.replace(/&(#?[\w\d]+);?/g, function(s, entity) {
          var chr;
          if (entity.charAt(0) === "#") {
              var code = entity.charAt(1).toLowerCase() === 'x' ?
                  parseInt(entity.substr(2), 16) :
                  parseInt(entity.substr(1));
  
              if (!(isNaN(code) || code < -32768 || code > 65535)) {
                  chr = String.fromCharCode(code);
              }
          } else {
              chr = alphaIndex[entity];
          }
          return chr || s;
      });
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html4Entities.decode = function(str) {
      return new Html4Entities().decode(str);
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html4Entities.prototype.encode = function(str) {
      if (!str || !str.length) {
          return '';
      }
      var strLength = str.length;
      var result = '';
      var i = 0;
      while (i < strLength) {
          var alpha = numIndex[str.charCodeAt(i)];
          result += alpha ? "&" + alpha + ";" : str.charAt(i);
          i++;
      }
      return result;
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html4Entities.encode = function(str) {
      return new Html4Entities().encode(str);
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html4Entities.prototype.encodeNonUTF = function(str) {
      if (!str || !str.length) {
          return '';
      }
      var strLength = str.length;
      var result = '';
      var i = 0;
      while (i < strLength) {
          var cc = str.charCodeAt(i);
          var alpha = numIndex[cc];
          if (alpha) {
              result += "&" + alpha + ";";
          } else if (cc < 32 || cc > 126) {
              result += "&#" + cc + ";";
          } else {
              result += str.charAt(i);
          }
          i++;
      }
      return result;
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html4Entities.encodeNonUTF = function(str) {
      return new Html4Entities().encodeNonUTF(str);
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html4Entities.prototype.encodeNonASCII = function(str) {
      if (!str || !str.length) {
          return '';
      }
      var strLength = str.length;
      var result = '';
      var i = 0;
      while (i < strLength) {
          var c = str.charCodeAt(i);
          if (c <= 255) {
              result += str[i++];
              continue;
          }
          result += '&#' + c + ';';
          i++;
      }
      return result;
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html4Entities.encodeNonASCII = function(str) {
      return new Html4Entities().encodeNonASCII(str);
  };
  
  module.exports = Html4Entities;
  
  
  /***/ }),
  
  /***/ "./node_modules/html-entities/lib/html5-entities.js":
  /*!**********************************************************!*\
    !*** ./node_modules/html-entities/lib/html5-entities.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  var ENTITIES = [['Aacute', [193]], ['aacute', [225]], ['Abreve', [258]], ['abreve', [259]], ['ac', [8766]], ['acd', [8767]], ['acE', [8766, 819]], ['Acirc', [194]], ['acirc', [226]], ['acute', [180]], ['Acy', [1040]], ['acy', [1072]], ['AElig', [198]], ['aelig', [230]], ['af', [8289]], ['Afr', [120068]], ['afr', [120094]], ['Agrave', [192]], ['agrave', [224]], ['alefsym', [8501]], ['aleph', [8501]], ['Alpha', [913]], ['alpha', [945]], ['Amacr', [256]], ['amacr', [257]], ['amalg', [10815]], ['amp', [38]], ['AMP', [38]], ['andand', [10837]], ['And', [10835]], ['and', [8743]], ['andd', [10844]], ['andslope', [10840]], ['andv', [10842]], ['ang', [8736]], ['ange', [10660]], ['angle', [8736]], ['angmsdaa', [10664]], ['angmsdab', [10665]], ['angmsdac', [10666]], ['angmsdad', [10667]], ['angmsdae', [10668]], ['angmsdaf', [10669]], ['angmsdag', [10670]], ['angmsdah', [10671]], ['angmsd', [8737]], ['angrt', [8735]], ['angrtvb', [8894]], ['angrtvbd', [10653]], ['angsph', [8738]], ['angst', [197]], ['angzarr', [9084]], ['Aogon', [260]], ['aogon', [261]], ['Aopf', [120120]], ['aopf', [120146]], ['apacir', [10863]], ['ap', [8776]], ['apE', [10864]], ['ape', [8778]], ['apid', [8779]], ['apos', [39]], ['ApplyFunction', [8289]], ['approx', [8776]], ['approxeq', [8778]], ['Aring', [197]], ['aring', [229]], ['Ascr', [119964]], ['ascr', [119990]], ['Assign', [8788]], ['ast', [42]], ['asymp', [8776]], ['asympeq', [8781]], ['Atilde', [195]], ['atilde', [227]], ['Auml', [196]], ['auml', [228]], ['awconint', [8755]], ['awint', [10769]], ['backcong', [8780]], ['backepsilon', [1014]], ['backprime', [8245]], ['backsim', [8765]], ['backsimeq', [8909]], ['Backslash', [8726]], ['Barv', [10983]], ['barvee', [8893]], ['barwed', [8965]], ['Barwed', [8966]], ['barwedge', [8965]], ['bbrk', [9141]], ['bbrktbrk', [9142]], ['bcong', [8780]], ['Bcy', [1041]], ['bcy', [1073]], ['bdquo', [8222]], ['becaus', [8757]], ['because', [8757]], ['Because', [8757]], ['bemptyv', [10672]], ['bepsi', [1014]], ['bernou', [8492]], ['Bernoullis', [8492]], ['Beta', [914]], ['beta', [946]], ['beth', [8502]], ['between', [8812]], ['Bfr', [120069]], ['bfr', [120095]], ['bigcap', [8898]], ['bigcirc', [9711]], ['bigcup', [8899]], ['bigodot', [10752]], ['bigoplus', [10753]], ['bigotimes', [10754]], ['bigsqcup', [10758]], ['bigstar', [9733]], ['bigtriangledown', [9661]], ['bigtriangleup', [9651]], ['biguplus', [10756]], ['bigvee', [8897]], ['bigwedge', [8896]], ['bkarow', [10509]], ['blacklozenge', [10731]], ['blacksquare', [9642]], ['blacktriangle', [9652]], ['blacktriangledown', [9662]], ['blacktriangleleft', [9666]], ['blacktriangleright', [9656]], ['blank', [9251]], ['blk12', [9618]], ['blk14', [9617]], ['blk34', [9619]], ['block', [9608]], ['bne', [61, 8421]], ['bnequiv', [8801, 8421]], ['bNot', [10989]], ['bnot', [8976]], ['Bopf', [120121]], ['bopf', [120147]], ['bot', [8869]], ['bottom', [8869]], ['bowtie', [8904]], ['boxbox', [10697]], ['boxdl', [9488]], ['boxdL', [9557]], ['boxDl', [9558]], ['boxDL', [9559]], ['boxdr', [9484]], ['boxdR', [9554]], ['boxDr', [9555]], ['boxDR', [9556]], ['boxh', [9472]], ['boxH', [9552]], ['boxhd', [9516]], ['boxHd', [9572]], ['boxhD', [9573]], ['boxHD', [9574]], ['boxhu', [9524]], ['boxHu', [9575]], ['boxhU', [9576]], ['boxHU', [9577]], ['boxminus', [8863]], ['boxplus', [8862]], ['boxtimes', [8864]], ['boxul', [9496]], ['boxuL', [9563]], ['boxUl', [9564]], ['boxUL', [9565]], ['boxur', [9492]], ['boxuR', [9560]], ['boxUr', [9561]], ['boxUR', [9562]], ['boxv', [9474]], ['boxV', [9553]], ['boxvh', [9532]], ['boxvH', [9578]], ['boxVh', [9579]], ['boxVH', [9580]], ['boxvl', [9508]], ['boxvL', [9569]], ['boxVl', [9570]], ['boxVL', [9571]], ['boxvr', [9500]], ['boxvR', [9566]], ['boxVr', [9567]], ['boxVR', [9568]], ['bprime', [8245]], ['breve', [728]], ['Breve', [728]], ['brvbar', [166]], ['bscr', [119991]], ['Bscr', [8492]], ['bsemi', [8271]], ['bsim', [8765]], ['bsime', [8909]], ['bsolb', [10693]], ['bsol', [92]], ['bsolhsub', [10184]], ['bull', [8226]], ['bullet', [8226]], ['bump', [8782]], ['bumpE', [10926]], ['bumpe', [8783]], ['Bumpeq', [8782]], ['bumpeq', [8783]], ['Cacute', [262]], ['cacute', [263]], ['capand', [10820]], ['capbrcup', [10825]], ['capcap', [10827]], ['cap', [8745]], ['Cap', [8914]], ['capcup', [10823]], ['capdot', [10816]], ['CapitalDifferentialD', [8517]], ['caps', [8745, 65024]], ['caret', [8257]], ['caron', [711]], ['Cayleys', [8493]], ['ccaps', [10829]], ['Ccaron', [268]], ['ccaron', [269]], ['Ccedil', [199]], ['ccedil', [231]], ['Ccirc', [264]], ['ccirc', [265]], ['Cconint', [8752]], ['ccups', [10828]], ['ccupssm', [10832]], ['Cdot', [266]], ['cdot', [267]], ['cedil', [184]], ['Cedilla', [184]], ['cemptyv', [10674]], ['cent', [162]], ['centerdot', [183]], ['CenterDot', [183]], ['cfr', [120096]], ['Cfr', [8493]], ['CHcy', [1063]], ['chcy', [1095]], ['check', [10003]], ['checkmark', [10003]], ['Chi', [935]], ['chi', [967]], ['circ', [710]], ['circeq', [8791]], ['circlearrowleft', [8634]], ['circlearrowright', [8635]], ['circledast', [8859]], ['circledcirc', [8858]], ['circleddash', [8861]], ['CircleDot', [8857]], ['circledR', [174]], ['circledS', [9416]], ['CircleMinus', [8854]], ['CirclePlus', [8853]], ['CircleTimes', [8855]], ['cir', [9675]], ['cirE', [10691]], ['cire', [8791]], ['cirfnint', [10768]], ['cirmid', [10991]], ['cirscir', [10690]], ['ClockwiseContourIntegral', [8754]], ['clubs', [9827]], ['clubsuit', [9827]], ['colon', [58]], ['Colon', [8759]], ['Colone', [10868]], ['colone', [8788]], ['coloneq', [8788]], ['comma', [44]], ['commat', [64]], ['comp', [8705]], ['compfn', [8728]], ['complement', [8705]], ['complexes', [8450]], ['cong', [8773]], ['congdot', [10861]], ['Congruent', [8801]], ['conint', [8750]], ['Conint', [8751]], ['ContourIntegral', [8750]], ['copf', [120148]], ['Copf', [8450]], ['coprod', [8720]], ['Coproduct', [8720]], ['copy', [169]], ['COPY', [169]], ['copysr', [8471]], ['CounterClockwiseContourIntegral', [8755]], ['crarr', [8629]], ['cross', [10007]], ['Cross', [10799]], ['Cscr', [119966]], ['cscr', [119992]], ['csub', [10959]], ['csube', [10961]], ['csup', [10960]], ['csupe', [10962]], ['ctdot', [8943]], ['cudarrl', [10552]], ['cudarrr', [10549]], ['cuepr', [8926]], ['cuesc', [8927]], ['cularr', [8630]], ['cularrp', [10557]], ['cupbrcap', [10824]], ['cupcap', [10822]], ['CupCap', [8781]], ['cup', [8746]], ['Cup', [8915]], ['cupcup', [10826]], ['cupdot', [8845]], ['cupor', [10821]], ['cups', [8746, 65024]], ['curarr', [8631]], ['curarrm', [10556]], ['curlyeqprec', [8926]], ['curlyeqsucc', [8927]], ['curlyvee', [8910]], ['curlywedge', [8911]], ['curren', [164]], ['curvearrowleft', [8630]], ['curvearrowright', [8631]], ['cuvee', [8910]], ['cuwed', [8911]], ['cwconint', [8754]], ['cwint', [8753]], ['cylcty', [9005]], ['dagger', [8224]], ['Dagger', [8225]], ['daleth', [8504]], ['darr', [8595]], ['Darr', [8609]], ['dArr', [8659]], ['dash', [8208]], ['Dashv', [10980]], ['dashv', [8867]], ['dbkarow', [10511]], ['dblac', [733]], ['Dcaron', [270]], ['dcaron', [271]], ['Dcy', [1044]], ['dcy', [1076]], ['ddagger', [8225]], ['ddarr', [8650]], ['DD', [8517]], ['dd', [8518]], ['DDotrahd', [10513]], ['ddotseq', [10871]], ['deg', [176]], ['Del', [8711]], ['Delta', [916]], ['delta', [948]], ['demptyv', [10673]], ['dfisht', [10623]], ['Dfr', [120071]], ['dfr', [120097]], ['dHar', [10597]], ['dharl', [8643]], ['dharr', [8642]], ['DiacriticalAcute', [180]], ['DiacriticalDot', [729]], ['DiacriticalDoubleAcute', [733]], ['DiacriticalGrave', [96]], ['DiacriticalTilde', [732]], ['diam', [8900]], ['diamond', [8900]], ['Diamond', [8900]], ['diamondsuit', [9830]], ['diams', [9830]], ['die', [168]], ['DifferentialD', [8518]], ['digamma', [989]], ['disin', [8946]], ['div', [247]], ['divide', [247]], ['divideontimes', [8903]], ['divonx', [8903]], ['DJcy', [1026]], ['djcy', [1106]], ['dlcorn', [8990]], ['dlcrop', [8973]], ['dollar', [36]], ['Dopf', [120123]], ['dopf', [120149]], ['Dot', [168]], ['dot', [729]], ['DotDot', [8412]], ['doteq', [8784]], ['doteqdot', [8785]], ['DotEqual', [8784]], ['dotminus', [8760]], ['dotplus', [8724]], ['dotsquare', [8865]], ['doublebarwedge', [8966]], ['DoubleContourIntegral', [8751]], ['DoubleDot', [168]], ['DoubleDownArrow', [8659]], ['DoubleLeftArrow', [8656]], ['DoubleLeftRightArrow', [8660]], ['DoubleLeftTee', [10980]], ['DoubleLongLeftArrow', [10232]], ['DoubleLongLeftRightArrow', [10234]], ['DoubleLongRightArrow', [10233]], ['DoubleRightArrow', [8658]], ['DoubleRightTee', [8872]], ['DoubleUpArrow', [8657]], ['DoubleUpDownArrow', [8661]], ['DoubleVerticalBar', [8741]], ['DownArrowBar', [10515]], ['downarrow', [8595]], ['DownArrow', [8595]], ['Downarrow', [8659]], ['DownArrowUpArrow', [8693]], ['DownBreve', [785]], ['downdownarrows', [8650]], ['downharpoonleft', [8643]], ['downharpoonright', [8642]], ['DownLeftRightVector', [10576]], ['DownLeftTeeVector', [10590]], ['DownLeftVectorBar', [10582]], ['DownLeftVector', [8637]], ['DownRightTeeVector', [10591]], ['DownRightVectorBar', [10583]], ['DownRightVector', [8641]], ['DownTeeArrow', [8615]], ['DownTee', [8868]], ['drbkarow', [10512]], ['drcorn', [8991]], ['drcrop', [8972]], ['Dscr', [119967]], ['dscr', [119993]], ['DScy', [1029]], ['dscy', [1109]], ['dsol', [10742]], ['Dstrok', [272]], ['dstrok', [273]], ['dtdot', [8945]], ['dtri', [9663]], ['dtrif', [9662]], ['duarr', [8693]], ['duhar', [10607]], ['dwangle', [10662]], ['DZcy', [1039]], ['dzcy', [1119]], ['dzigrarr', [10239]], ['Eacute', [201]], ['eacute', [233]], ['easter', [10862]], ['Ecaron', [282]], ['ecaron', [283]], ['Ecirc', [202]], ['ecirc', [234]], ['ecir', [8790]], ['ecolon', [8789]], ['Ecy', [1069]], ['ecy', [1101]], ['eDDot', [10871]], ['Edot', [278]], ['edot', [279]], ['eDot', [8785]], ['ee', [8519]], ['efDot', [8786]], ['Efr', [120072]], ['efr', [120098]], ['eg', [10906]], ['Egrave', [200]], ['egrave', [232]], ['egs', [10902]], ['egsdot', [10904]], ['el', [10905]], ['Element', [8712]], ['elinters', [9191]], ['ell', [8467]], ['els', [10901]], ['elsdot', [10903]], ['Emacr', [274]], ['emacr', [275]], ['empty', [8709]], ['emptyset', [8709]], ['EmptySmallSquare', [9723]], ['emptyv', [8709]], ['EmptyVerySmallSquare', [9643]], ['emsp13', [8196]], ['emsp14', [8197]], ['emsp', [8195]], ['ENG', [330]], ['eng', [331]], ['ensp', [8194]], ['Eogon', [280]], ['eogon', [281]], ['Eopf', [120124]], ['eopf', [120150]], ['epar', [8917]], ['eparsl', [10723]], ['eplus', [10865]], ['epsi', [949]], ['Epsilon', [917]], ['epsilon', [949]], ['epsiv', [1013]], ['eqcirc', [8790]], ['eqcolon', [8789]], ['eqsim', [8770]], ['eqslantgtr', [10902]], ['eqslantless', [10901]], ['Equal', [10869]], ['equals', [61]], ['EqualTilde', [8770]], ['equest', [8799]], ['Equilibrium', [8652]], ['equiv', [8801]], ['equivDD', [10872]], ['eqvparsl', [10725]], ['erarr', [10609]], ['erDot', [8787]], ['escr', [8495]], ['Escr', [8496]], ['esdot', [8784]], ['Esim', [10867]], ['esim', [8770]], ['Eta', [919]], ['eta', [951]], ['ETH', [208]], ['eth', [240]], ['Euml', [203]], ['euml', [235]], ['euro', [8364]], ['excl', [33]], ['exist', [8707]], ['Exists', [8707]], ['expectation', [8496]], ['exponentiale', [8519]], ['ExponentialE', [8519]], ['fallingdotseq', [8786]], ['Fcy', [1060]], ['fcy', [1092]], ['female', [9792]], ['ffilig', [64259]], ['fflig', [64256]], ['ffllig', [64260]], ['Ffr', [120073]], ['ffr', [120099]], ['filig', [64257]], ['FilledSmallSquare', [9724]], ['FilledVerySmallSquare', [9642]], ['fjlig', [102, 106]], ['flat', [9837]], ['fllig', [64258]], ['fltns', [9649]], ['fnof', [402]], ['Fopf', [120125]], ['fopf', [120151]], ['forall', [8704]], ['ForAll', [8704]], ['fork', [8916]], ['forkv', [10969]], ['Fouriertrf', [8497]], ['fpartint', [10765]], ['frac12', [189]], ['frac13', [8531]], ['frac14', [188]], ['frac15', [8533]], ['frac16', [8537]], ['frac18', [8539]], ['frac23', [8532]], ['frac25', [8534]], ['frac34', [190]], ['frac35', [8535]], ['frac38', [8540]], ['frac45', [8536]], ['frac56', [8538]], ['frac58', [8541]], ['frac78', [8542]], ['frasl', [8260]], ['frown', [8994]], ['fscr', [119995]], ['Fscr', [8497]], ['gacute', [501]], ['Gamma', [915]], ['gamma', [947]], ['Gammad', [988]], ['gammad', [989]], ['gap', [10886]], ['Gbreve', [286]], ['gbreve', [287]], ['Gcedil', [290]], ['Gcirc', [284]], ['gcirc', [285]], ['Gcy', [1043]], ['gcy', [1075]], ['Gdot', [288]], ['gdot', [289]], ['ge', [8805]], ['gE', [8807]], ['gEl', [10892]], ['gel', [8923]], ['geq', [8805]], ['geqq', [8807]], ['geqslant', [10878]], ['gescc', [10921]], ['ges', [10878]], ['gesdot', [10880]], ['gesdoto', [10882]], ['gesdotol', [10884]], ['gesl', [8923, 65024]], ['gesles', [10900]], ['Gfr', [120074]], ['gfr', [120100]], ['gg', [8811]], ['Gg', [8921]], ['ggg', [8921]], ['gimel', [8503]], ['GJcy', [1027]], ['gjcy', [1107]], ['gla', [10917]], ['gl', [8823]], ['glE', [10898]], ['glj', [10916]], ['gnap', [10890]], ['gnapprox', [10890]], ['gne', [10888]], ['gnE', [8809]], ['gneq', [10888]], ['gneqq', [8809]], ['gnsim', [8935]], ['Gopf', [120126]], ['gopf', [120152]], ['grave', [96]], ['GreaterEqual', [8805]], ['GreaterEqualLess', [8923]], ['GreaterFullEqual', [8807]], ['GreaterGreater', [10914]], ['GreaterLess', [8823]], ['GreaterSlantEqual', [10878]], ['GreaterTilde', [8819]], ['Gscr', [119970]], ['gscr', [8458]], ['gsim', [8819]], ['gsime', [10894]], ['gsiml', [10896]], ['gtcc', [10919]], ['gtcir', [10874]], ['gt', [62]], ['GT', [62]], ['Gt', [8811]], ['gtdot', [8919]], ['gtlPar', [10645]], ['gtquest', [10876]], ['gtrapprox', [10886]], ['gtrarr', [10616]], ['gtrdot', [8919]], ['gtreqless', [8923]], ['gtreqqless', [10892]], ['gtrless', [8823]], ['gtrsim', [8819]], ['gvertneqq', [8809, 65024]], ['gvnE', [8809, 65024]], ['Hacek', [711]], ['hairsp', [8202]], ['half', [189]], ['hamilt', [8459]], ['HARDcy', [1066]], ['hardcy', [1098]], ['harrcir', [10568]], ['harr', [8596]], ['hArr', [8660]], ['harrw', [8621]], ['Hat', [94]], ['hbar', [8463]], ['Hcirc', [292]], ['hcirc', [293]], ['hearts', [9829]], ['heartsuit', [9829]], ['hellip', [8230]], ['hercon', [8889]], ['hfr', [120101]], ['Hfr', [8460]], ['HilbertSpace', [8459]], ['hksearow', [10533]], ['hkswarow', [10534]], ['hoarr', [8703]], ['homtht', [8763]], ['hookleftarrow', [8617]], ['hookrightarrow', [8618]], ['hopf', [120153]], ['Hopf', [8461]], ['horbar', [8213]], ['HorizontalLine', [9472]], ['hscr', [119997]], ['Hscr', [8459]], ['hslash', [8463]], ['Hstrok', [294]], ['hstrok', [295]], ['HumpDownHump', [8782]], ['HumpEqual', [8783]], ['hybull', [8259]], ['hyphen', [8208]], ['Iacute', [205]], ['iacute', [237]], ['ic', [8291]], ['Icirc', [206]], ['icirc', [238]], ['Icy', [1048]], ['icy', [1080]], ['Idot', [304]], ['IEcy', [1045]], ['iecy', [1077]], ['iexcl', [161]], ['iff', [8660]], ['ifr', [120102]], ['Ifr', [8465]], ['Igrave', [204]], ['igrave', [236]], ['ii', [8520]], ['iiiint', [10764]], ['iiint', [8749]], ['iinfin', [10716]], ['iiota', [8489]], ['IJlig', [306]], ['ijlig', [307]], ['Imacr', [298]], ['imacr', [299]], ['image', [8465]], ['ImaginaryI', [8520]], ['imagline', [8464]], ['imagpart', [8465]], ['imath', [305]], ['Im', [8465]], ['imof', [8887]], ['imped', [437]], ['Implies', [8658]], ['incare', [8453]], ['in', [8712]], ['infin', [8734]], ['infintie', [10717]], ['inodot', [305]], ['intcal', [8890]], ['int', [8747]], ['Int', [8748]], ['integers', [8484]], ['Integral', [8747]], ['intercal', [8890]], ['Intersection', [8898]], ['intlarhk', [10775]], ['intprod', [10812]], ['InvisibleComma', [8291]], ['InvisibleTimes', [8290]], ['IOcy', [1025]], ['iocy', [1105]], ['Iogon', [302]], ['iogon', [303]], ['Iopf', [120128]], ['iopf', [120154]], ['Iota', [921]], ['iota', [953]], ['iprod', [10812]], ['iquest', [191]], ['iscr', [119998]], ['Iscr', [8464]], ['isin', [8712]], ['isindot', [8949]], ['isinE', [8953]], ['isins', [8948]], ['isinsv', [8947]], ['isinv', [8712]], ['it', [8290]], ['Itilde', [296]], ['itilde', [297]], ['Iukcy', [1030]], ['iukcy', [1110]], ['Iuml', [207]], ['iuml', [239]], ['Jcirc', [308]], ['jcirc', [309]], ['Jcy', [1049]], ['jcy', [1081]], ['Jfr', [120077]], ['jfr', [120103]], ['jmath', [567]], ['Jopf', [120129]], ['jopf', [120155]], ['Jscr', [119973]], ['jscr', [119999]], ['Jsercy', [1032]], ['jsercy', [1112]], ['Jukcy', [1028]], ['jukcy', [1108]], ['Kappa', [922]], ['kappa', [954]], ['kappav', [1008]], ['Kcedil', [310]], ['kcedil', [311]], ['Kcy', [1050]], ['kcy', [1082]], ['Kfr', [120078]], ['kfr', [120104]], ['kgreen', [312]], ['KHcy', [1061]], ['khcy', [1093]], ['KJcy', [1036]], ['kjcy', [1116]], ['Kopf', [120130]], ['kopf', [120156]], ['Kscr', [119974]], ['kscr', [120000]], ['lAarr', [8666]], ['Lacute', [313]], ['lacute', [314]], ['laemptyv', [10676]], ['lagran', [8466]], ['Lambda', [923]], ['lambda', [955]], ['lang', [10216]], ['Lang', [10218]], ['langd', [10641]], ['langle', [10216]], ['lap', [10885]], ['Laplacetrf', [8466]], ['laquo', [171]], ['larrb', [8676]], ['larrbfs', [10527]], ['larr', [8592]], ['Larr', [8606]], ['lArr', [8656]], ['larrfs', [10525]], ['larrhk', [8617]], ['larrlp', [8619]], ['larrpl', [10553]], ['larrsim', [10611]], ['larrtl', [8610]], ['latail', [10521]], ['lAtail', [10523]], ['lat', [10923]], ['late', [10925]], ['lates', [10925, 65024]], ['lbarr', [10508]], ['lBarr', [10510]], ['lbbrk', [10098]], ['lbrace', [123]], ['lbrack', [91]], ['lbrke', [10635]], ['lbrksld', [10639]], ['lbrkslu', [10637]], ['Lcaron', [317]], ['lcaron', [318]], ['Lcedil', [315]], ['lcedil', [316]], ['lceil', [8968]], ['lcub', [123]], ['Lcy', [1051]], ['lcy', [1083]], ['ldca', [10550]], ['ldquo', [8220]], ['ldquor', [8222]], ['ldrdhar', [10599]], ['ldrushar', [10571]], ['ldsh', [8626]], ['le', [8804]], ['lE', [8806]], ['LeftAngleBracket', [10216]], ['LeftArrowBar', [8676]], ['leftarrow', [8592]], ['LeftArrow', [8592]], ['Leftarrow', [8656]], ['LeftArrowRightArrow', [8646]], ['leftarrowtail', [8610]], ['LeftCeiling', [8968]], ['LeftDoubleBracket', [10214]], ['LeftDownTeeVector', [10593]], ['LeftDownVectorBar', [10585]], ['LeftDownVector', [8643]], ['LeftFloor', [8970]], ['leftharpoondown', [8637]], ['leftharpoonup', [8636]], ['leftleftarrows', [8647]], ['leftrightarrow', [8596]], ['LeftRightArrow', [8596]], ['Leftrightarrow', [8660]], ['leftrightarrows', [8646]], ['leftrightharpoons', [8651]], ['leftrightsquigarrow', [8621]], ['LeftRightVector', [10574]], ['LeftTeeArrow', [8612]], ['LeftTee', [8867]], ['LeftTeeVector', [10586]], ['leftthreetimes', [8907]], ['LeftTriangleBar', [10703]], ['LeftTriangle', [8882]], ['LeftTriangleEqual', [8884]], ['LeftUpDownVector', [10577]], ['LeftUpTeeVector', [10592]], ['LeftUpVectorBar', [10584]], ['LeftUpVector', [8639]], ['LeftVectorBar', [10578]], ['LeftVector', [8636]], ['lEg', [10891]], ['leg', [8922]], ['leq', [8804]], ['leqq', [8806]], ['leqslant', [10877]], ['lescc', [10920]], ['les', [10877]], ['lesdot', [10879]], ['lesdoto', [10881]], ['lesdotor', [10883]], ['lesg', [8922, 65024]], ['lesges', [10899]], ['lessapprox', [10885]], ['lessdot', [8918]], ['lesseqgtr', [8922]], ['lesseqqgtr', [10891]], ['LessEqualGreater', [8922]], ['LessFullEqual', [8806]], ['LessGreater', [8822]], ['lessgtr', [8822]], ['LessLess', [10913]], ['lesssim', [8818]], ['LessSlantEqual', [10877]], ['LessTilde', [8818]], ['lfisht', [10620]], ['lfloor', [8970]], ['Lfr', [120079]], ['lfr', [120105]], ['lg', [8822]], ['lgE', [10897]], ['lHar', [10594]], ['lhard', [8637]], ['lharu', [8636]], ['lharul', [10602]], ['lhblk', [9604]], ['LJcy', [1033]], ['ljcy', [1113]], ['llarr', [8647]], ['ll', [8810]], ['Ll', [8920]], ['llcorner', [8990]], ['Lleftarrow', [8666]], ['llhard', [10603]], ['lltri', [9722]], ['Lmidot', [319]], ['lmidot', [320]], ['lmoustache', [9136]], ['lmoust', [9136]], ['lnap', [10889]], ['lnapprox', [10889]], ['lne', [10887]], ['lnE', [8808]], ['lneq', [10887]], ['lneqq', [8808]], ['lnsim', [8934]], ['loang', [10220]], ['loarr', [8701]], ['lobrk', [10214]], ['longleftarrow', [10229]], ['LongLeftArrow', [10229]], ['Longleftarrow', [10232]], ['longleftrightarrow', [10231]], ['LongLeftRightArrow', [10231]], ['Longleftrightarrow', [10234]], ['longmapsto', [10236]], ['longrightarrow', [10230]], ['LongRightArrow', [10230]], ['Longrightarrow', [10233]], ['looparrowleft', [8619]], ['looparrowright', [8620]], ['lopar', [10629]], ['Lopf', [120131]], ['lopf', [120157]], ['loplus', [10797]], ['lotimes', [10804]], ['lowast', [8727]], ['lowbar', [95]], ['LowerLeftArrow', [8601]], ['LowerRightArrow', [8600]], ['loz', [9674]], ['lozenge', [9674]], ['lozf', [10731]], ['lpar', [40]], ['lparlt', [10643]], ['lrarr', [8646]], ['lrcorner', [8991]], ['lrhar', [8651]], ['lrhard', [10605]], ['lrm', [8206]], ['lrtri', [8895]], ['lsaquo', [8249]], ['lscr', [120001]], ['Lscr', [8466]], ['lsh', [8624]], ['Lsh', [8624]], ['lsim', [8818]], ['lsime', [10893]], ['lsimg', [10895]], ['lsqb', [91]], ['lsquo', [8216]], ['lsquor', [8218]], ['Lstrok', [321]], ['lstrok', [322]], ['ltcc', [10918]], ['ltcir', [10873]], ['lt', [60]], ['LT', [60]], ['Lt', [8810]], ['ltdot', [8918]], ['lthree', [8907]], ['ltimes', [8905]], ['ltlarr', [10614]], ['ltquest', [10875]], ['ltri', [9667]], ['ltrie', [8884]], ['ltrif', [9666]], ['ltrPar', [10646]], ['lurdshar', [10570]], ['luruhar', [10598]], ['lvertneqq', [8808, 65024]], ['lvnE', [8808, 65024]], ['macr', [175]], ['male', [9794]], ['malt', [10016]], ['maltese', [10016]], ['Map', [10501]], ['map', [8614]], ['mapsto', [8614]], ['mapstodown', [8615]], ['mapstoleft', [8612]], ['mapstoup', [8613]], ['marker', [9646]], ['mcomma', [10793]], ['Mcy', [1052]], ['mcy', [1084]], ['mdash', [8212]], ['mDDot', [8762]], ['measuredangle', [8737]], ['MediumSpace', [8287]], ['Mellintrf', [8499]], ['Mfr', [120080]], ['mfr', [120106]], ['mho', [8487]], ['micro', [181]], ['midast', [42]], ['midcir', [10992]], ['mid', [8739]], ['middot', [183]], ['minusb', [8863]], ['minus', [8722]], ['minusd', [8760]], ['minusdu', [10794]], ['MinusPlus', [8723]], ['mlcp', [10971]], ['mldr', [8230]], ['mnplus', [8723]], ['models', [8871]], ['Mopf', [120132]], ['mopf', [120158]], ['mp', [8723]], ['mscr', [120002]], ['Mscr', [8499]], ['mstpos', [8766]], ['Mu', [924]], ['mu', [956]], ['multimap', [8888]], ['mumap', [8888]], ['nabla', [8711]], ['Nacute', [323]], ['nacute', [324]], ['nang', [8736, 8402]], ['nap', [8777]], ['napE', [10864, 824]], ['napid', [8779, 824]], ['napos', [329]], ['napprox', [8777]], ['natural', [9838]], ['naturals', [8469]], ['natur', [9838]], ['nbsp', [160]], ['nbump', [8782, 824]], ['nbumpe', [8783, 824]], ['ncap', [10819]], ['Ncaron', [327]], ['ncaron', [328]], ['Ncedil', [325]], ['ncedil', [326]], ['ncong', [8775]], ['ncongdot', [10861, 824]], ['ncup', [10818]], ['Ncy', [1053]], ['ncy', [1085]], ['ndash', [8211]], ['nearhk', [10532]], ['nearr', [8599]], ['neArr', [8663]], ['nearrow', [8599]], ['ne', [8800]], ['nedot', [8784, 824]], ['NegativeMediumSpace', [8203]], ['NegativeThickSpace', [8203]], ['NegativeThinSpace', [8203]], ['NegativeVeryThinSpace', [8203]], ['nequiv', [8802]], ['nesear', [10536]], ['nesim', [8770, 824]], ['NestedGreaterGreater', [8811]], ['NestedLessLess', [8810]], ['nexist', [8708]], ['nexists', [8708]], ['Nfr', [120081]], ['nfr', [120107]], ['ngE', [8807, 824]], ['nge', [8817]], ['ngeq', [8817]], ['ngeqq', [8807, 824]], ['ngeqslant', [10878, 824]], ['nges', [10878, 824]], ['nGg', [8921, 824]], ['ngsim', [8821]], ['nGt', [8811, 8402]], ['ngt', [8815]], ['ngtr', [8815]], ['nGtv', [8811, 824]], ['nharr', [8622]], ['nhArr', [8654]], ['nhpar', [10994]], ['ni', [8715]], ['nis', [8956]], ['nisd', [8954]], ['niv', [8715]], ['NJcy', [1034]], ['njcy', [1114]], ['nlarr', [8602]], ['nlArr', [8653]], ['nldr', [8229]], ['nlE', [8806, 824]], ['nle', [8816]], ['nleftarrow', [8602]], ['nLeftarrow', [8653]], ['nleftrightarrow', [8622]], ['nLeftrightarrow', [8654]], ['nleq', [8816]], ['nleqq', [8806, 824]], ['nleqslant', [10877, 824]], ['nles', [10877, 824]], ['nless', [8814]], ['nLl', [8920, 824]], ['nlsim', [8820]], ['nLt', [8810, 8402]], ['nlt', [8814]], ['nltri', [8938]], ['nltrie', [8940]], ['nLtv', [8810, 824]], ['nmid', [8740]], ['NoBreak', [8288]], ['NonBreakingSpace', [160]], ['nopf', [120159]], ['Nopf', [8469]], ['Not', [10988]], ['not', [172]], ['NotCongruent', [8802]], ['NotCupCap', [8813]], ['NotDoubleVerticalBar', [8742]], ['NotElement', [8713]], ['NotEqual', [8800]], ['NotEqualTilde', [8770, 824]], ['NotExists', [8708]], ['NotGreater', [8815]], ['NotGreaterEqual', [8817]], ['NotGreaterFullEqual', [8807, 824]], ['NotGreaterGreater', [8811, 824]], ['NotGreaterLess', [8825]], ['NotGreaterSlantEqual', [10878, 824]], ['NotGreaterTilde', [8821]], ['NotHumpDownHump', [8782, 824]], ['NotHumpEqual', [8783, 824]], ['notin', [8713]], ['notindot', [8949, 824]], ['notinE', [8953, 824]], ['notinva', [8713]], ['notinvb', [8951]], ['notinvc', [8950]], ['NotLeftTriangleBar', [10703, 824]], ['NotLeftTriangle', [8938]], ['NotLeftTriangleEqual', [8940]], ['NotLess', [8814]], ['NotLessEqual', [8816]], ['NotLessGreater', [8824]], ['NotLessLess', [8810, 824]], ['NotLessSlantEqual', [10877, 824]], ['NotLessTilde', [8820]], ['NotNestedGreaterGreater', [10914, 824]], ['NotNestedLessLess', [10913, 824]], ['notni', [8716]], ['notniva', [8716]], ['notnivb', [8958]], ['notnivc', [8957]], ['NotPrecedes', [8832]], ['NotPrecedesEqual', [10927, 824]], ['NotPrecedesSlantEqual', [8928]], ['NotReverseElement', [8716]], ['NotRightTriangleBar', [10704, 824]], ['NotRightTriangle', [8939]], ['NotRightTriangleEqual', [8941]], ['NotSquareSubset', [8847, 824]], ['NotSquareSubsetEqual', [8930]], ['NotSquareSuperset', [8848, 824]], ['NotSquareSupersetEqual', [8931]], ['NotSubset', [8834, 8402]], ['NotSubsetEqual', [8840]], ['NotSucceeds', [8833]], ['NotSucceedsEqual', [10928, 824]], ['NotSucceedsSlantEqual', [8929]], ['NotSucceedsTilde', [8831, 824]], ['NotSuperset', [8835, 8402]], ['NotSupersetEqual', [8841]], ['NotTilde', [8769]], ['NotTildeEqual', [8772]], ['NotTildeFullEqual', [8775]], ['NotTildeTilde', [8777]], ['NotVerticalBar', [8740]], ['nparallel', [8742]], ['npar', [8742]], ['nparsl', [11005, 8421]], ['npart', [8706, 824]], ['npolint', [10772]], ['npr', [8832]], ['nprcue', [8928]], ['nprec', [8832]], ['npreceq', [10927, 824]], ['npre', [10927, 824]], ['nrarrc', [10547, 824]], ['nrarr', [8603]], ['nrArr', [8655]], ['nrarrw', [8605, 824]], ['nrightarrow', [8603]], ['nRightarrow', [8655]], ['nrtri', [8939]], ['nrtrie', [8941]], ['nsc', [8833]], ['nsccue', [8929]], ['nsce', [10928, 824]], ['Nscr', [119977]], ['nscr', [120003]], ['nshortmid', [8740]], ['nshortparallel', [8742]], ['nsim', [8769]], ['nsime', [8772]], ['nsimeq', [8772]], ['nsmid', [8740]], ['nspar', [8742]], ['nsqsube', [8930]], ['nsqsupe', [8931]], ['nsub', [8836]], ['nsubE', [10949, 824]], ['nsube', [8840]], ['nsubset', [8834, 8402]], ['nsubseteq', [8840]], ['nsubseteqq', [10949, 824]], ['nsucc', [8833]], ['nsucceq', [10928, 824]], ['nsup', [8837]], ['nsupE', [10950, 824]], ['nsupe', [8841]], ['nsupset', [8835, 8402]], ['nsupseteq', [8841]], ['nsupseteqq', [10950, 824]], ['ntgl', [8825]], ['Ntilde', [209]], ['ntilde', [241]], ['ntlg', [8824]], ['ntriangleleft', [8938]], ['ntrianglelefteq', [8940]], ['ntriangleright', [8939]], ['ntrianglerighteq', [8941]], ['Nu', [925]], ['nu', [957]], ['num', [35]], ['numero', [8470]], ['numsp', [8199]], ['nvap', [8781, 8402]], ['nvdash', [8876]], ['nvDash', [8877]], ['nVdash', [8878]], ['nVDash', [8879]], ['nvge', [8805, 8402]], ['nvgt', [62, 8402]], ['nvHarr', [10500]], ['nvinfin', [10718]], ['nvlArr', [10498]], ['nvle', [8804, 8402]], ['nvlt', [60, 8402]], ['nvltrie', [8884, 8402]], ['nvrArr', [10499]], ['nvrtrie', [8885, 8402]], ['nvsim', [8764, 8402]], ['nwarhk', [10531]], ['nwarr', [8598]], ['nwArr', [8662]], ['nwarrow', [8598]], ['nwnear', [10535]], ['Oacute', [211]], ['oacute', [243]], ['oast', [8859]], ['Ocirc', [212]], ['ocirc', [244]], ['ocir', [8858]], ['Ocy', [1054]], ['ocy', [1086]], ['odash', [8861]], ['Odblac', [336]], ['odblac', [337]], ['odiv', [10808]], ['odot', [8857]], ['odsold', [10684]], ['OElig', [338]], ['oelig', [339]], ['ofcir', [10687]], ['Ofr', [120082]], ['ofr', [120108]], ['ogon', [731]], ['Ograve', [210]], ['ograve', [242]], ['ogt', [10689]], ['ohbar', [10677]], ['ohm', [937]], ['oint', [8750]], ['olarr', [8634]], ['olcir', [10686]], ['olcross', [10683]], ['oline', [8254]], ['olt', [10688]], ['Omacr', [332]], ['omacr', [333]], ['Omega', [937]], ['omega', [969]], ['Omicron', [927]], ['omicron', [959]], ['omid', [10678]], ['ominus', [8854]], ['Oopf', [120134]], ['oopf', [120160]], ['opar', [10679]], ['OpenCurlyDoubleQuote', [8220]], ['OpenCurlyQuote', [8216]], ['operp', [10681]], ['oplus', [8853]], ['orarr', [8635]], ['Or', [10836]], ['or', [8744]], ['ord', [10845]], ['order', [8500]], ['orderof', [8500]], ['ordf', [170]], ['ordm', [186]], ['origof', [8886]], ['oror', [10838]], ['orslope', [10839]], ['orv', [10843]], ['oS', [9416]], ['Oscr', [119978]], ['oscr', [8500]], ['Oslash', [216]], ['oslash', [248]], ['osol', [8856]], ['Otilde', [213]], ['otilde', [245]], ['otimesas', [10806]], ['Otimes', [10807]], ['otimes', [8855]], ['Ouml', [214]], ['ouml', [246]], ['ovbar', [9021]], ['OverBar', [8254]], ['OverBrace', [9182]], ['OverBracket', [9140]], ['OverParenthesis', [9180]], ['para', [182]], ['parallel', [8741]], ['par', [8741]], ['parsim', [10995]], ['parsl', [11005]], ['part', [8706]], ['PartialD', [8706]], ['Pcy', [1055]], ['pcy', [1087]], ['percnt', [37]], ['period', [46]], ['permil', [8240]], ['perp', [8869]], ['pertenk', [8241]], ['Pfr', [120083]], ['pfr', [120109]], ['Phi', [934]], ['phi', [966]], ['phiv', [981]], ['phmmat', [8499]], ['phone', [9742]], ['Pi', [928]], ['pi', [960]], ['pitchfork', [8916]], ['piv', [982]], ['planck', [8463]], ['planckh', [8462]], ['plankv', [8463]], ['plusacir', [10787]], ['plusb', [8862]], ['pluscir', [10786]], ['plus', [43]], ['plusdo', [8724]], ['plusdu', [10789]], ['pluse', [10866]], ['PlusMinus', [177]], ['plusmn', [177]], ['plussim', [10790]], ['plustwo', [10791]], ['pm', [177]], ['Poincareplane', [8460]], ['pointint', [10773]], ['popf', [120161]], ['Popf', [8473]], ['pound', [163]], ['prap', [10935]], ['Pr', [10939]], ['pr', [8826]], ['prcue', [8828]], ['precapprox', [10935]], ['prec', [8826]], ['preccurlyeq', [8828]], ['Precedes', [8826]], ['PrecedesEqual', [10927]], ['PrecedesSlantEqual', [8828]], ['PrecedesTilde', [8830]], ['preceq', [10927]], ['precnapprox', [10937]], ['precneqq', [10933]], ['precnsim', [8936]], ['pre', [10927]], ['prE', [10931]], ['precsim', [8830]], ['prime', [8242]], ['Prime', [8243]], ['primes', [8473]], ['prnap', [10937]], ['prnE', [10933]], ['prnsim', [8936]], ['prod', [8719]], ['Product', [8719]], ['profalar', [9006]], ['profline', [8978]], ['profsurf', [8979]], ['prop', [8733]], ['Proportional', [8733]], ['Proportion', [8759]], ['propto', [8733]], ['prsim', [8830]], ['prurel', [8880]], ['Pscr', [119979]], ['pscr', [120005]], ['Psi', [936]], ['psi', [968]], ['puncsp', [8200]], ['Qfr', [120084]], ['qfr', [120110]], ['qint', [10764]], ['qopf', [120162]], ['Qopf', [8474]], ['qprime', [8279]], ['Qscr', [119980]], ['qscr', [120006]], ['quaternions', [8461]], ['quatint', [10774]], ['quest', [63]], ['questeq', [8799]], ['quot', [34]], ['QUOT', [34]], ['rAarr', [8667]], ['race', [8765, 817]], ['Racute', [340]], ['racute', [341]], ['radic', [8730]], ['raemptyv', [10675]], ['rang', [10217]], ['Rang', [10219]], ['rangd', [10642]], ['range', [10661]], ['rangle', [10217]], ['raquo', [187]], ['rarrap', [10613]], ['rarrb', [8677]], ['rarrbfs', [10528]], ['rarrc', [10547]], ['rarr', [8594]], ['Rarr', [8608]], ['rArr', [8658]], ['rarrfs', [10526]], ['rarrhk', [8618]], ['rarrlp', [8620]], ['rarrpl', [10565]], ['rarrsim', [10612]], ['Rarrtl', [10518]], ['rarrtl', [8611]], ['rarrw', [8605]], ['ratail', [10522]], ['rAtail', [10524]], ['ratio', [8758]], ['rationals', [8474]], ['rbarr', [10509]], ['rBarr', [10511]], ['RBarr', [10512]], ['rbbrk', [10099]], ['rbrace', [125]], ['rbrack', [93]], ['rbrke', [10636]], ['rbrksld', [10638]], ['rbrkslu', [10640]], ['Rcaron', [344]], ['rcaron', [345]], ['Rcedil', [342]], ['rcedil', [343]], ['rceil', [8969]], ['rcub', [125]], ['Rcy', [1056]], ['rcy', [1088]], ['rdca', [10551]], ['rdldhar', [10601]], ['rdquo', [8221]], ['rdquor', [8221]], ['CloseCurlyDoubleQuote', [8221]], ['rdsh', [8627]], ['real', [8476]], ['realine', [8475]], ['realpart', [8476]], ['reals', [8477]], ['Re', [8476]], ['rect', [9645]], ['reg', [174]], ['REG', [174]], ['ReverseElement', [8715]], ['ReverseEquilibrium', [8651]], ['ReverseUpEquilibrium', [10607]], ['rfisht', [10621]], ['rfloor', [8971]], ['rfr', [120111]], ['Rfr', [8476]], ['rHar', [10596]], ['rhard', [8641]], ['rharu', [8640]], ['rharul', [10604]], ['Rho', [929]], ['rho', [961]], ['rhov', [1009]], ['RightAngleBracket', [10217]], ['RightArrowBar', [8677]], ['rightarrow', [8594]], ['RightArrow', [8594]], ['Rightarrow', [8658]], ['RightArrowLeftArrow', [8644]], ['rightarrowtail', [8611]], ['RightCeiling', [8969]], ['RightDoubleBracket', [10215]], ['RightDownTeeVector', [10589]], ['RightDownVectorBar', [10581]], ['RightDownVector', [8642]], ['RightFloor', [8971]], ['rightharpoondown', [8641]], ['rightharpoonup', [8640]], ['rightleftarrows', [8644]], ['rightleftharpoons', [8652]], ['rightrightarrows', [8649]], ['rightsquigarrow', [8605]], ['RightTeeArrow', [8614]], ['RightTee', [8866]], ['RightTeeVector', [10587]], ['rightthreetimes', [8908]], ['RightTriangleBar', [10704]], ['RightTriangle', [8883]], ['RightTriangleEqual', [8885]], ['RightUpDownVector', [10575]], ['RightUpTeeVector', [10588]], ['RightUpVectorBar', [10580]], ['RightUpVector', [8638]], ['RightVectorBar', [10579]], ['RightVector', [8640]], ['ring', [730]], ['risingdotseq', [8787]], ['rlarr', [8644]], ['rlhar', [8652]], ['rlm', [8207]], ['rmoustache', [9137]], ['rmoust', [9137]], ['rnmid', [10990]], ['roang', [10221]], ['roarr', [8702]], ['robrk', [10215]], ['ropar', [10630]], ['ropf', [120163]], ['Ropf', [8477]], ['roplus', [10798]], ['rotimes', [10805]], ['RoundImplies', [10608]], ['rpar', [41]], ['rpargt', [10644]], ['rppolint', [10770]], ['rrarr', [8649]], ['Rrightarrow', [8667]], ['rsaquo', [8250]], ['rscr', [120007]], ['Rscr', [8475]], ['rsh', [8625]], ['Rsh', [8625]], ['rsqb', [93]], ['rsquo', [8217]], ['rsquor', [8217]], ['CloseCurlyQuote', [8217]], ['rthree', [8908]], ['rtimes', [8906]], ['rtri', [9657]], ['rtrie', [8885]], ['rtrif', [9656]], ['rtriltri', [10702]], ['RuleDelayed', [10740]], ['ruluhar', [10600]], ['rx', [8478]], ['Sacute', [346]], ['sacute', [347]], ['sbquo', [8218]], ['scap', [10936]], ['Scaron', [352]], ['scaron', [353]], ['Sc', [10940]], ['sc', [8827]], ['sccue', [8829]], ['sce', [10928]], ['scE', [10932]], ['Scedil', [350]], ['scedil', [351]], ['Scirc', [348]], ['scirc', [349]], ['scnap', [10938]], ['scnE', [10934]], ['scnsim', [8937]], ['scpolint', [10771]], ['scsim', [8831]], ['Scy', [1057]], ['scy', [1089]], ['sdotb', [8865]], ['sdot', [8901]], ['sdote', [10854]], ['searhk', [10533]], ['searr', [8600]], ['seArr', [8664]], ['searrow', [8600]], ['sect', [167]], ['semi', [59]], ['seswar', [10537]], ['setminus', [8726]], ['setmn', [8726]], ['sext', [10038]], ['Sfr', [120086]], ['sfr', [120112]], ['sfrown', [8994]], ['sharp', [9839]], ['SHCHcy', [1065]], ['shchcy', [1097]], ['SHcy', [1064]], ['shcy', [1096]], ['ShortDownArrow', [8595]], ['ShortLeftArrow', [8592]], ['shortmid', [8739]], ['shortparallel', [8741]], ['ShortRightArrow', [8594]], ['ShortUpArrow', [8593]], ['shy', [173]], ['Sigma', [931]], ['sigma', [963]], ['sigmaf', [962]], ['sigmav', [962]], ['sim', [8764]], ['simdot', [10858]], ['sime', [8771]], ['simeq', [8771]], ['simg', [10910]], ['simgE', [10912]], ['siml', [10909]], ['simlE', [10911]], ['simne', [8774]], ['simplus', [10788]], ['simrarr', [10610]], ['slarr', [8592]], ['SmallCircle', [8728]], ['smallsetminus', [8726]], ['smashp', [10803]], ['smeparsl', [10724]], ['smid', [8739]], ['smile', [8995]], ['smt', [10922]], ['smte', [10924]], ['smtes', [10924, 65024]], ['SOFTcy', [1068]], ['softcy', [1100]], ['solbar', [9023]], ['solb', [10692]], ['sol', [47]], ['Sopf', [120138]], ['sopf', [120164]], ['spades', [9824]], ['spadesuit', [9824]], ['spar', [8741]], ['sqcap', [8851]], ['sqcaps', [8851, 65024]], ['sqcup', [8852]], ['sqcups', [8852, 65024]], ['Sqrt', [8730]], ['sqsub', [8847]], ['sqsube', [8849]], ['sqsubset', [8847]], ['sqsubseteq', [8849]], ['sqsup', [8848]], ['sqsupe', [8850]], ['sqsupset', [8848]], ['sqsupseteq', [8850]], ['square', [9633]], ['Square', [9633]], ['SquareIntersection', [8851]], ['SquareSubset', [8847]], ['SquareSubsetEqual', [8849]], ['SquareSuperset', [8848]], ['SquareSupersetEqual', [8850]], ['SquareUnion', [8852]], ['squarf', [9642]], ['squ', [9633]], ['squf', [9642]], ['srarr', [8594]], ['Sscr', [119982]], ['sscr', [120008]], ['ssetmn', [8726]], ['ssmile', [8995]], ['sstarf', [8902]], ['Star', [8902]], ['star', [9734]], ['starf', [9733]], ['straightepsilon', [1013]], ['straightphi', [981]], ['strns', [175]], ['sub', [8834]], ['Sub', [8912]], ['subdot', [10941]], ['subE', [10949]], ['sube', [8838]], ['subedot', [10947]], ['submult', [10945]], ['subnE', [10955]], ['subne', [8842]], ['subplus', [10943]], ['subrarr', [10617]], ['subset', [8834]], ['Subset', [8912]], ['subseteq', [8838]], ['subseteqq', [10949]], ['SubsetEqual', [8838]], ['subsetneq', [8842]], ['subsetneqq', [10955]], ['subsim', [10951]], ['subsub', [10965]], ['subsup', [10963]], ['succapprox', [10936]], ['succ', [8827]], ['succcurlyeq', [8829]], ['Succeeds', [8827]], ['SucceedsEqual', [10928]], ['SucceedsSlantEqual', [8829]], ['SucceedsTilde', [8831]], ['succeq', [10928]], ['succnapprox', [10938]], ['succneqq', [10934]], ['succnsim', [8937]], ['succsim', [8831]], ['SuchThat', [8715]], ['sum', [8721]], ['Sum', [8721]], ['sung', [9834]], ['sup1', [185]], ['sup2', [178]], ['sup3', [179]], ['sup', [8835]], ['Sup', [8913]], ['supdot', [10942]], ['supdsub', [10968]], ['supE', [10950]], ['supe', [8839]], ['supedot', [10948]], ['Superset', [8835]], ['SupersetEqual', [8839]], ['suphsol', [10185]], ['suphsub', [10967]], ['suplarr', [10619]], ['supmult', [10946]], ['supnE', [10956]], ['supne', [8843]], ['supplus', [10944]], ['supset', [8835]], ['Supset', [8913]], ['supseteq', [8839]], ['supseteqq', [10950]], ['supsetneq', [8843]], ['supsetneqq', [10956]], ['supsim', [10952]], ['supsub', [10964]], ['supsup', [10966]], ['swarhk', [10534]], ['swarr', [8601]], ['swArr', [8665]], ['swarrow', [8601]], ['swnwar', [10538]], ['szlig', [223]], ['Tab', [9]], ['target', [8982]], ['Tau', [932]], ['tau', [964]], ['tbrk', [9140]], ['Tcaron', [356]], ['tcaron', [357]], ['Tcedil', [354]], ['tcedil', [355]], ['Tcy', [1058]], ['tcy', [1090]], ['tdot', [8411]], ['telrec', [8981]], ['Tfr', [120087]], ['tfr', [120113]], ['there4', [8756]], ['therefore', [8756]], ['Therefore', [8756]], ['Theta', [920]], ['theta', [952]], ['thetasym', [977]], ['thetav', [977]], ['thickapprox', [8776]], ['thicksim', [8764]], ['ThickSpace', [8287, 8202]], ['ThinSpace', [8201]], ['thinsp', [8201]], ['thkap', [8776]], ['thksim', [8764]], ['THORN', [222]], ['thorn', [254]], ['tilde', [732]], ['Tilde', [8764]], ['TildeEqual', [8771]], ['TildeFullEqual', [8773]], ['TildeTilde', [8776]], ['timesbar', [10801]], ['timesb', [8864]], ['times', [215]], ['timesd', [10800]], ['tint', [8749]], ['toea', [10536]], ['topbot', [9014]], ['topcir', [10993]], ['top', [8868]], ['Topf', [120139]], ['topf', [120165]], ['topfork', [10970]], ['tosa', [10537]], ['tprime', [8244]], ['trade', [8482]], ['TRADE', [8482]], ['triangle', [9653]], ['triangledown', [9663]], ['triangleleft', [9667]], ['trianglelefteq', [8884]], ['triangleq', [8796]], ['triangleright', [9657]], ['trianglerighteq', [8885]], ['tridot', [9708]], ['trie', [8796]], ['triminus', [10810]], ['TripleDot', [8411]], ['triplus', [10809]], ['trisb', [10701]], ['tritime', [10811]], ['trpezium', [9186]], ['Tscr', [119983]], ['tscr', [120009]], ['TScy', [1062]], ['tscy', [1094]], ['TSHcy', [1035]], ['tshcy', [1115]], ['Tstrok', [358]], ['tstrok', [359]], ['twixt', [8812]], ['twoheadleftarrow', [8606]], ['twoheadrightarrow', [8608]], ['Uacute', [218]], ['uacute', [250]], ['uarr', [8593]], ['Uarr', [8607]], ['uArr', [8657]], ['Uarrocir', [10569]], ['Ubrcy', [1038]], ['ubrcy', [1118]], ['Ubreve', [364]], ['ubreve', [365]], ['Ucirc', [219]], ['ucirc', [251]], ['Ucy', [1059]], ['ucy', [1091]], ['udarr', [8645]], ['Udblac', [368]], ['udblac', [369]], ['udhar', [10606]], ['ufisht', [10622]], ['Ufr', [120088]], ['ufr', [120114]], ['Ugrave', [217]], ['ugrave', [249]], ['uHar', [10595]], ['uharl', [8639]], ['uharr', [8638]], ['uhblk', [9600]], ['ulcorn', [8988]], ['ulcorner', [8988]], ['ulcrop', [8975]], ['ultri', [9720]], ['Umacr', [362]], ['umacr', [363]], ['uml', [168]], ['UnderBar', [95]], ['UnderBrace', [9183]], ['UnderBracket', [9141]], ['UnderParenthesis', [9181]], ['Union', [8899]], ['UnionPlus', [8846]], ['Uogon', [370]], ['uogon', [371]], ['Uopf', [120140]], ['uopf', [120166]], ['UpArrowBar', [10514]], ['uparrow', [8593]], ['UpArrow', [8593]], ['Uparrow', [8657]], ['UpArrowDownArrow', [8645]], ['updownarrow', [8597]], ['UpDownArrow', [8597]], ['Updownarrow', [8661]], ['UpEquilibrium', [10606]], ['upharpoonleft', [8639]], ['upharpoonright', [8638]], ['uplus', [8846]], ['UpperLeftArrow', [8598]], ['UpperRightArrow', [8599]], ['upsi', [965]], ['Upsi', [978]], ['upsih', [978]], ['Upsilon', [933]], ['upsilon', [965]], ['UpTeeArrow', [8613]], ['UpTee', [8869]], ['upuparrows', [8648]], ['urcorn', [8989]], ['urcorner', [8989]], ['urcrop', [8974]], ['Uring', [366]], ['uring', [367]], ['urtri', [9721]], ['Uscr', [119984]], ['uscr', [120010]], ['utdot', [8944]], ['Utilde', [360]], ['utilde', [361]], ['utri', [9653]], ['utrif', [9652]], ['uuarr', [8648]], ['Uuml', [220]], ['uuml', [252]], ['uwangle', [10663]], ['vangrt', [10652]], ['varepsilon', [1013]], ['varkappa', [1008]], ['varnothing', [8709]], ['varphi', [981]], ['varpi', [982]], ['varpropto', [8733]], ['varr', [8597]], ['vArr', [8661]], ['varrho', [1009]], ['varsigma', [962]], ['varsubsetneq', [8842, 65024]], ['varsubsetneqq', [10955, 65024]], ['varsupsetneq', [8843, 65024]], ['varsupsetneqq', [10956, 65024]], ['vartheta', [977]], ['vartriangleleft', [8882]], ['vartriangleright', [8883]], ['vBar', [10984]], ['Vbar', [10987]], ['vBarv', [10985]], ['Vcy', [1042]], ['vcy', [1074]], ['vdash', [8866]], ['vDash', [8872]], ['Vdash', [8873]], ['VDash', [8875]], ['Vdashl', [10982]], ['veebar', [8891]], ['vee', [8744]], ['Vee', [8897]], ['veeeq', [8794]], ['vellip', [8942]], ['verbar', [124]], ['Verbar', [8214]], ['vert', [124]], ['Vert', [8214]], ['VerticalBar', [8739]], ['VerticalLine', [124]], ['VerticalSeparator', [10072]], ['VerticalTilde', [8768]], ['VeryThinSpace', [8202]], ['Vfr', [120089]], ['vfr', [120115]], ['vltri', [8882]], ['vnsub', [8834, 8402]], ['vnsup', [8835, 8402]], ['Vopf', [120141]], ['vopf', [120167]], ['vprop', [8733]], ['vrtri', [8883]], ['Vscr', [119985]], ['vscr', [120011]], ['vsubnE', [10955, 65024]], ['vsubne', [8842, 65024]], ['vsupnE', [10956, 65024]], ['vsupne', [8843, 65024]], ['Vvdash', [8874]], ['vzigzag', [10650]], ['Wcirc', [372]], ['wcirc', [373]], ['wedbar', [10847]], ['wedge', [8743]], ['Wedge', [8896]], ['wedgeq', [8793]], ['weierp', [8472]], ['Wfr', [120090]], ['wfr', [120116]], ['Wopf', [120142]], ['wopf', [120168]], ['wp', [8472]], ['wr', [8768]], ['wreath', [8768]], ['Wscr', [119986]], ['wscr', [120012]], ['xcap', [8898]], ['xcirc', [9711]], ['xcup', [8899]], ['xdtri', [9661]], ['Xfr', [120091]], ['xfr', [120117]], ['xharr', [10231]], ['xhArr', [10234]], ['Xi', [926]], ['xi', [958]], ['xlarr', [10229]], ['xlArr', [10232]], ['xmap', [10236]], ['xnis', [8955]], ['xodot', [10752]], ['Xopf', [120143]], ['xopf', [120169]], ['xoplus', [10753]], ['xotime', [10754]], ['xrarr', [10230]], ['xrArr', [10233]], ['Xscr', [119987]], ['xscr', [120013]], ['xsqcup', [10758]], ['xuplus', [10756]], ['xutri', [9651]], ['xvee', [8897]], ['xwedge', [8896]], ['Yacute', [221]], ['yacute', [253]], ['YAcy', [1071]], ['yacy', [1103]], ['Ycirc', [374]], ['ycirc', [375]], ['Ycy', [1067]], ['ycy', [1099]], ['yen', [165]], ['Yfr', [120092]], ['yfr', [120118]], ['YIcy', [1031]], ['yicy', [1111]], ['Yopf', [120144]], ['yopf', [120170]], ['Yscr', [119988]], ['yscr', [120014]], ['YUcy', [1070]], ['yucy', [1102]], ['yuml', [255]], ['Yuml', [376]], ['Zacute', [377]], ['zacute', [378]], ['Zcaron', [381]], ['zcaron', [382]], ['Zcy', [1047]], ['zcy', [1079]], ['Zdot', [379]], ['zdot', [380]], ['zeetrf', [8488]], ['ZeroWidthSpace', [8203]], ['Zeta', [918]], ['zeta', [950]], ['zfr', [120119]], ['Zfr', [8488]], ['ZHcy', [1046]], ['zhcy', [1078]], ['zigrarr', [8669]], ['zopf', [120171]], ['Zopf', [8484]], ['Zscr', [119989]], ['zscr', [120015]], ['zwj', [8205]], ['zwnj', [8204]]];
  
  var alphaIndex = {};
  var charIndex = {};
  
  createIndexes(alphaIndex, charIndex);
  
  /**
   * @constructor
   */
  function Html5Entities() {}
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html5Entities.prototype.decode = function(str) {
      if (!str || !str.length) {
          return '';
      }
      return str.replace(/&(#?[\w\d]+);?/g, function(s, entity) {
          var chr;
          if (entity.charAt(0) === "#") {
              var code = entity.charAt(1) === 'x' ?
                  parseInt(entity.substr(2).toLowerCase(), 16) :
                  parseInt(entity.substr(1));
  
              if (!(isNaN(code) || code < -32768 || code > 65535)) {
                  chr = String.fromCharCode(code);
              }
          } else {
              chr = alphaIndex[entity];
          }
          return chr || s;
      });
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
   Html5Entities.decode = function(str) {
      return new Html5Entities().decode(str);
   };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html5Entities.prototype.encode = function(str) {
      if (!str || !str.length) {
          return '';
      }
      var strLength = str.length;
      var result = '';
      var i = 0;
      while (i < strLength) {
          var charInfo = charIndex[str.charCodeAt(i)];
          if (charInfo) {
              var alpha = charInfo[str.charCodeAt(i + 1)];
              if (alpha) {
                  i++;
              } else {
                  alpha = charInfo[''];
              }
              if (alpha) {
                  result += "&" + alpha + ";";
                  i++;
                  continue;
              }
          }
          result += str.charAt(i);
          i++;
      }
      return result;
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
   Html5Entities.encode = function(str) {
      return new Html5Entities().encode(str);
   };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html5Entities.prototype.encodeNonUTF = function(str) {
      if (!str || !str.length) {
          return '';
      }
      var strLength = str.length;
      var result = '';
      var i = 0;
      while (i < strLength) {
          var c = str.charCodeAt(i);
          var charInfo = charIndex[c];
          if (charInfo) {
              var alpha = charInfo[str.charCodeAt(i + 1)];
              if (alpha) {
                  i++;
              } else {
                  alpha = charInfo[''];
              }
              if (alpha) {
                  result += "&" + alpha + ";";
                  i++;
                  continue;
              }
          }
          if (c < 32 || c > 126) {
              result += '&#' + c + ';';
          } else {
              result += str.charAt(i);
          }
          i++;
      }
      return result;
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
   Html5Entities.encodeNonUTF = function(str) {
      return new Html5Entities().encodeNonUTF(str);
   };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  Html5Entities.prototype.encodeNonASCII = function(str) {
      if (!str || !str.length) {
          return '';
      }
      var strLength = str.length;
      var result = '';
      var i = 0;
      while (i < strLength) {
          var c = str.charCodeAt(i);
          if (c <= 255) {
              result += str[i++];
              continue;
          }
          result += '&#' + c + ';';
          i++
      }
      return result;
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
   Html5Entities.encodeNonASCII = function(str) {
      return new Html5Entities().encodeNonASCII(str);
   };
  
  /**
   * @param {Object} alphaIndex Passed by reference.
   * @param {Object} charIndex Passed by reference.
   */
  function createIndexes(alphaIndex, charIndex) {
      var i = ENTITIES.length;
      var _results = [];
      while (i--) {
          var e = ENTITIES[i];
          var alpha = e[0];
          var chars = e[1];
          var chr = chars[0];
          var addChar = (chr < 32 || chr > 126) || chr === 62 || chr === 60 || chr === 38 || chr === 34 || chr === 39;
          var charInfo;
          if (addChar) {
              charInfo = charIndex[chr] = charIndex[chr] || {};
          }
          if (chars[1]) {
              var chr2 = chars[1];
              alphaIndex[alpha] = String.fromCharCode(chr) + String.fromCharCode(chr2);
              _results.push(addChar && (charInfo[chr2] = alpha));
          } else {
              alphaIndex[alpha] = String.fromCharCode(chr);
              _results.push(addChar && (charInfo[''] = alpha));
          }
      }
  }
  
  module.exports = Html5Entities;
  
  
  /***/ }),
  
  /***/ "./node_modules/html-entities/lib/xml-entities.js":
  /*!********************************************************!*\
    !*** ./node_modules/html-entities/lib/xml-entities.js ***!
    \********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  var ALPHA_INDEX = {
      '&lt': '<',
      '&gt': '>',
      '&quot': '"',
      '&apos': '\'',
      '&amp': '&',
      '&lt;': '<',
      '&gt;': '>',
      '&quot;': '"',
      '&apos;': '\'',
      '&amp;': '&'
  };
  
  var CHAR_INDEX = {
      60: 'lt',
      62: 'gt',
      34: 'quot',
      39: 'apos',
      38: 'amp'
  };
  
  var CHAR_S_INDEX = {
      '<': '&lt;',
      '>': '&gt;',
      '"': '&quot;',
      '\'': '&apos;',
      '&': '&amp;'
  };
  
  /**
   * @constructor
   */
  function XmlEntities() {}
  
  /**
   * @param {String} str
   * @returns {String}
   */
  XmlEntities.prototype.encode = function(str) {
      if (!str || !str.length) {
          return '';
      }
      return str.replace(/<|>|"|'|&/g, function(s) {
          return CHAR_S_INDEX[s];
      });
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
   XmlEntities.encode = function(str) {
      return new XmlEntities().encode(str);
   };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  XmlEntities.prototype.decode = function(str) {
      if (!str || !str.length) {
          return '';
      }
      return str.replace(/&#?[0-9a-zA-Z]+;?/g, function(s) {
          if (s.charAt(1) === '#') {
              var code = s.charAt(2).toLowerCase() === 'x' ?
                  parseInt(s.substr(3), 16) :
                  parseInt(s.substr(2));
  
              if (isNaN(code) || code < -32768 || code > 65535) {
                  return '';
              }
              return String.fromCharCode(code);
          }
          return ALPHA_INDEX[s] || s;
      });
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
   XmlEntities.decode = function(str) {
      return new XmlEntities().decode(str);
   };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  XmlEntities.prototype.encodeNonUTF = function(str) {
      if (!str || !str.length) {
          return '';
      }
      var strLength = str.length;
      var result = '';
      var i = 0;
      while (i < strLength) {
          var c = str.charCodeAt(i);
          var alpha = CHAR_INDEX[c];
          if (alpha) {
              result += "&" + alpha + ";";
              i++;
              continue;
          }
          if (c < 32 || c > 126) {
              result += '&#' + c + ';';
          } else {
              result += str.charAt(i);
          }
          i++;
      }
      return result;
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
   XmlEntities.encodeNonUTF = function(str) {
      return new XmlEntities().encodeNonUTF(str);
   };
  
  /**
   * @param {String} str
   * @returns {String}
   */
  XmlEntities.prototype.encodeNonASCII = function(str) {
      if (!str || !str.length) {
          return '';
      }
      var strLenght = str.length;
      var result = '';
      var i = 0;
      while (i < strLenght) {
          var c = str.charCodeAt(i);
          if (c <= 255) {
              result += str[i++];
              continue;
          }
          result += '&#' + c + ';';
          i++;
      }
      return result;
  };
  
  /**
   * @param {String} str
   * @returns {String}
   */
   XmlEntities.encodeNonASCII = function(str) {
      return new XmlEntities().encodeNonASCII(str);
   };
  
  module.exports = XmlEntities;
  
  
  /***/ }),
  
  /***/ "./node_modules/particles.js/particles.js":
  /*!************************************************!*\
    !*** ./node_modules/particles.js/particles.js ***!
    \************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  /* -----------------------------------------------
  /* Author : Vincent Garreau  - vincentgarreau.com
  /* MIT license: http://opensource.org/licenses/MIT
  /* Demo / Generator : vincentgarreau.com/particles.js
  /* GitHub : github.com/VincentGarreau/particles.js
  /* How to use? : Check the GitHub README
  /* v2.0.0
  /* ----------------------------------------------- */
  
  var pJS = function(tag_id, params){
  
    var canvas_el = document.querySelector('#'+tag_id+' > .particles-js-canvas-el');
  
    /* particles.js variables with default values */
    this.pJS = {
      canvas: {
        el: canvas_el,
        w: canvas_el.offsetWidth,
        h: canvas_el.offsetHeight
      },
      particles: {
        number: {
          value: 400,
          density: {
            enable: true,
            value_area: 800
          }
        },
        color: {
          value: '#fff'
        },
        shape: {
          type: 'circle',
          stroke: {
            width: 0,
            color: '#ff0000'
          },
          polygon: {
            nb_sides: 5
          },
          image: {
            src: '',
            width: 100,
            height: 100
          }
        },
        opacity: {
          value: 1,
          random: false,
          anim: {
            enable: false,
            speed: 2,
            opacity_min: 0,
            sync: false
          }
        },
        size: {
          value: 20,
          random: false,
          anim: {
            enable: false,
            speed: 20,
            size_min: 0,
            sync: false
          }
        },
        line_linked: {
          enable: true,
          distance: 100,
          color: '#fff',
          opacity: 1,
          width: 1
        },
        move: {
          enable: true,
          speed: 2,
          direction: 'none',
          random: false,
          straight: false,
          out_mode: 'out',
          bounce: false,
          attract: {
            enable: false,
            rotateX: 3000,
            rotateY: 3000
          }
        },
        array: []
      },
      interactivity: {
        detect_on: 'canvas',
        events: {
          onhover: {
            enable: true,
            mode: 'grab'
          },
          onclick: {
            enable: true,
            mode: 'push'
          },
          resize: true
        },
        modes: {
          grab:{
            distance: 100,
            line_linked:{
              opacity: 1
            }
          },
          bubble:{
            distance: 200,
            size: 80,
            duration: 0.4
          },
          repulse:{
            distance: 200,
            duration: 0.4
          },
          push:{
            particles_nb: 4
          },
          remove:{
            particles_nb: 2
          }
        },
        mouse:{}
      },
      retina_detect: false,
      fn: {
        interact: {},
        modes: {},
        vendors:{}
      },
      tmp: {}
    };
  
    var pJS = this.pJS;
  
    /* params settings */
    if(params){
      Object.deepExtend(pJS, params);
    }
  
    pJS.tmp.obj = {
      size_value: pJS.particles.size.value,
      size_anim_speed: pJS.particles.size.anim.speed,
      move_speed: pJS.particles.move.speed,
      line_linked_distance: pJS.particles.line_linked.distance,
      line_linked_width: pJS.particles.line_linked.width,
      mode_grab_distance: pJS.interactivity.modes.grab.distance,
      mode_bubble_distance: pJS.interactivity.modes.bubble.distance,
      mode_bubble_size: pJS.interactivity.modes.bubble.size,
      mode_repulse_distance: pJS.interactivity.modes.repulse.distance
    };
  
  
    pJS.fn.retinaInit = function(){
  
      if(pJS.retina_detect && window.devicePixelRatio > 1){
        pJS.canvas.pxratio = window.devicePixelRatio; 
        pJS.tmp.retina = true;
      } 
      else{
        pJS.canvas.pxratio = 1;
        pJS.tmp.retina = false;
      }
  
      pJS.canvas.w = pJS.canvas.el.offsetWidth * pJS.canvas.pxratio;
      pJS.canvas.h = pJS.canvas.el.offsetHeight * pJS.canvas.pxratio;
  
      pJS.particles.size.value = pJS.tmp.obj.size_value * pJS.canvas.pxratio;
      pJS.particles.size.anim.speed = pJS.tmp.obj.size_anim_speed * pJS.canvas.pxratio;
      pJS.particles.move.speed = pJS.tmp.obj.move_speed * pJS.canvas.pxratio;
      pJS.particles.line_linked.distance = pJS.tmp.obj.line_linked_distance * pJS.canvas.pxratio;
      pJS.interactivity.modes.grab.distance = pJS.tmp.obj.mode_grab_distance * pJS.canvas.pxratio;
      pJS.interactivity.modes.bubble.distance = pJS.tmp.obj.mode_bubble_distance * pJS.canvas.pxratio;
      pJS.particles.line_linked.width = pJS.tmp.obj.line_linked_width * pJS.canvas.pxratio;
      pJS.interactivity.modes.bubble.size = pJS.tmp.obj.mode_bubble_size * pJS.canvas.pxratio;
      pJS.interactivity.modes.repulse.distance = pJS.tmp.obj.mode_repulse_distance * pJS.canvas.pxratio;
  
    };
  
  
  
    /* ---------- pJS functions - canvas ------------ */
  
    pJS.fn.canvasInit = function(){
      pJS.canvas.ctx = pJS.canvas.el.getContext('2d');
    };
  
    pJS.fn.canvasSize = function(){
  
      pJS.canvas.el.width = pJS.canvas.w;
      pJS.canvas.el.height = pJS.canvas.h;
  
      if(pJS && pJS.interactivity.events.resize){
  
        window.addEventListener('resize', function(){
  
            pJS.canvas.w = pJS.canvas.el.offsetWidth;
            pJS.canvas.h = pJS.canvas.el.offsetHeight;
  
            /* resize canvas */
            if(pJS.tmp.retina){
              pJS.canvas.w *= pJS.canvas.pxratio;
              pJS.canvas.h *= pJS.canvas.pxratio;
            }
  
            pJS.canvas.el.width = pJS.canvas.w;
            pJS.canvas.el.height = pJS.canvas.h;
  
            /* repaint canvas on anim disabled */
            if(!pJS.particles.move.enable){
              pJS.fn.particlesEmpty();
              pJS.fn.particlesCreate();
              pJS.fn.particlesDraw();
              pJS.fn.vendors.densityAutoParticles();
            }
  
          /* density particles enabled */
          pJS.fn.vendors.densityAutoParticles();
  
        });
  
      }
  
    };
  
  
    pJS.fn.canvasPaint = function(){
      pJS.canvas.ctx.fillRect(0, 0, pJS.canvas.w, pJS.canvas.h);
    };
  
    pJS.fn.canvasClear = function(){
      pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h);
    };
  
  
    /* --------- pJS functions - particles ----------- */
  
    pJS.fn.particle = function(color, opacity, position){
  
      /* size */
      this.radius = (pJS.particles.size.random ? Math.random() : 1) * pJS.particles.size.value;
      if(pJS.particles.size.anim.enable){
        this.size_status = false;
        this.vs = pJS.particles.size.anim.speed / 100;
        if(!pJS.particles.size.anim.sync){
          this.vs = this.vs * Math.random();
        }
      }
  
      /* position */
      this.x = position ? position.x : Math.random() * pJS.canvas.w;
      this.y = position ? position.y : Math.random() * pJS.canvas.h;
  
      /* check position  - into the canvas */
      if(this.x > pJS.canvas.w - this.radius*2) this.x = this.x - this.radius;
      else if(this.x < this.radius*2) this.x = this.x + this.radius;
      if(this.y > pJS.canvas.h - this.radius*2) this.y = this.y - this.radius;
      else if(this.y < this.radius*2) this.y = this.y + this.radius;
  
      /* check position - avoid overlap */
      if(pJS.particles.move.bounce){
        pJS.fn.vendors.checkOverlap(this, position);
      }
  
      /* color */
      this.color = {};
      if(typeof(color.value) == 'object'){
  
        if(color.value instanceof Array){
          var color_selected = color.value[Math.floor(Math.random() * pJS.particles.color.value.length)];
          this.color.rgb = hexToRgb(color_selected);
        }else{
          if(color.value.r != undefined && color.value.g != undefined && color.value.b != undefined){
            this.color.rgb = {
              r: color.value.r,
              g: color.value.g,
              b: color.value.b
            }
          }
          if(color.value.h != undefined && color.value.s != undefined && color.value.l != undefined){
            this.color.hsl = {
              h: color.value.h,
              s: color.value.s,
              l: color.value.l
            }
          }
        }
  
      }
      else if(color.value == 'random'){
        this.color.rgb = {
          r: (Math.floor(Math.random() * (255 - 0 + 1)) + 0),
          g: (Math.floor(Math.random() * (255 - 0 + 1)) + 0),
          b: (Math.floor(Math.random() * (255 - 0 + 1)) + 0)
        }
      }
      else if(typeof(color.value) == 'string'){
        this.color = color;
        this.color.rgb = hexToRgb(this.color.value);
      }
  
      /* opacity */
      this.opacity = (pJS.particles.opacity.random ? Math.random() : 1) * pJS.particles.opacity.value;
      if(pJS.particles.opacity.anim.enable){
        this.opacity_status = false;
        this.vo = pJS.particles.opacity.anim.speed / 100;
        if(!pJS.particles.opacity.anim.sync){
          this.vo = this.vo * Math.random();
        }
      }
  
      /* animation - velocity for speed */
      var velbase = {}
      switch(pJS.particles.move.direction){
        case 'top':
          velbase = { x:0, y:-1 };
        break;
        case 'top-right':
          velbase = { x:0.5, y:-0.5 };
        break;
        case 'right':
          velbase = { x:1, y:-0 };
        break;
        case 'bottom-right':
          velbase = { x:0.5, y:0.5 };
        break;
        case 'bottom':
          velbase = { x:0, y:1 };
        break;
        case 'bottom-left':
          velbase = { x:-0.5, y:1 };
        break;
        case 'left':
          velbase = { x:-1, y:0 };
        break;
        case 'top-left':
          velbase = { x:-0.5, y:-0.5 };
        break;
        default:
          velbase = { x:0, y:0 };
        break;
      }
  
      if(pJS.particles.move.straight){
        this.vx = velbase.x;
        this.vy = velbase.y;
        if(pJS.particles.move.random){
          this.vx = this.vx * (Math.random());
          this.vy = this.vy * (Math.random());
        }
      }else{
        this.vx = velbase.x + Math.random()-0.5;
        this.vy = velbase.y + Math.random()-0.5;
      }
  
      // var theta = 2.0 * Math.PI * Math.random();
      // this.vx = Math.cos(theta);
      // this.vy = Math.sin(theta);
  
      this.vx_i = this.vx;
      this.vy_i = this.vy;
  
      
  
      /* if shape is image */
  
      var shape_type = pJS.particles.shape.type;
      if(typeof(shape_type) == 'object'){
        if(shape_type instanceof Array){
          var shape_selected = shape_type[Math.floor(Math.random() * shape_type.length)];
          this.shape = shape_selected;
        }
      }else{
        this.shape = shape_type;
      }
  
      if(this.shape == 'image'){
        var sh = pJS.particles.shape;
        this.img = {
          src: sh.image.src,
          ratio: sh.image.width / sh.image.height
        }
        if(!this.img.ratio) this.img.ratio = 1;
        if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg != undefined){
          pJS.fn.vendors.createSvgImg(this);
          if(pJS.tmp.pushing){
            this.img.loaded = false;
          }
        }
      }
  
      
  
    };
  
  
    pJS.fn.particle.prototype.draw = function() {
  
      var p = this;
  
      if(p.radius_bubble != undefined){
        var radius = p.radius_bubble; 
      }else{
        var radius = p.radius;
      }
  
      if(p.opacity_bubble != undefined){
        var opacity = p.opacity_bubble;
      }else{
        var opacity = p.opacity;
      }
  
      if(p.color.rgb){
        var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+opacity+')';
      }else{
        var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+opacity+')';
      }
  
      pJS.canvas.ctx.fillStyle = color_value;
      pJS.canvas.ctx.beginPath();
  
      switch(p.shape){
  
        case 'circle':
          pJS.canvas.ctx.arc(p.x, p.y, radius, 0, Math.PI * 2, false);
        break;
  
        case 'edge':
          pJS.canvas.ctx.rect(p.x-radius, p.y-radius, radius*2, radius*2);
        break;
  
        case 'triangle':
          pJS.fn.vendors.drawShape(pJS.canvas.ctx, p.x-radius, p.y+radius / 1.66, radius*2, 3, 2);
        break;
  
        case 'polygon':
          pJS.fn.vendors.drawShape(
            pJS.canvas.ctx,
            p.x - radius / (pJS.particles.shape.polygon.nb_sides/3.5), // startX
            p.y - radius / (2.66/3.5), // startY
            radius*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength
            pJS.particles.shape.polygon.nb_sides, // sideCountNumerator
            1 // sideCountDenominator
          );
        break;
  
        case 'star':
          pJS.fn.vendors.drawShape(
            pJS.canvas.ctx,
            p.x - radius*2 / (pJS.particles.shape.polygon.nb_sides/4), // startX
            p.y - radius / (2*2.66/3.5), // startY
            radius*2*2.66 / (pJS.particles.shape.polygon.nb_sides/3), // sideLength
            pJS.particles.shape.polygon.nb_sides, // sideCountNumerator
            2 // sideCountDenominator
          );
        break;
  
        case 'image':
  
          function draw(){
            pJS.canvas.ctx.drawImage(
              img_obj,
              p.x-radius,
              p.y-radius,
              radius*2,
              radius*2 / p.img.ratio
            );
          }
  
          if(pJS.tmp.img_type == 'svg'){
            var img_obj = p.img.obj;
          }else{
            var img_obj = pJS.tmp.img_obj;
          }
  
          if(img_obj){
            draw();
          }
  
        break;
  
      }
  
      pJS.canvas.ctx.closePath();
  
      if(pJS.particles.shape.stroke.width > 0){
        pJS.canvas.ctx.strokeStyle = pJS.particles.shape.stroke.color;
        pJS.canvas.ctx.lineWidth = pJS.particles.shape.stroke.width;
        pJS.canvas.ctx.stroke();
      }
      
      pJS.canvas.ctx.fill();
      
    };
  
  
    pJS.fn.particlesCreate = function(){
      for(var i = 0; i < pJS.particles.number.value; i++) {
        pJS.particles.array.push(new pJS.fn.particle(pJS.particles.color, pJS.particles.opacity.value));
      }
    };
  
    pJS.fn.particlesUpdate = function(){
  
      for(var i = 0; i < pJS.particles.array.length; i++){
  
        /* the particle */
        var p = pJS.particles.array[i];
  
        // var d = ( dx = pJS.interactivity.mouse.click_pos_x - p.x ) * dx + ( dy = pJS.interactivity.mouse.click_pos_y - p.y ) * dy;
        // var f = -BANG_SIZE / d;
        // if ( d < BANG_SIZE ) {
        //     var t = Math.atan2( dy, dx );
        //     p.vx = f * Math.cos(t);
        //     p.vy = f * Math.sin(t);
        // }
  
        /* move the particle */
        if(pJS.particles.move.enable){
          var ms = pJS.particles.move.speed/2;
          p.x += p.vx * ms;
          p.y += p.vy * ms;
        }
  
        /* change opacity status */
        if(pJS.particles.opacity.anim.enable) {
          if(p.opacity_status == true) {
            if(p.opacity >= pJS.particles.opacity.value) p.opacity_status = false;
            p.opacity += p.vo;
          }else {
            if(p.opacity <= pJS.particles.opacity.anim.opacity_min) p.opacity_status = true;
            p.opacity -= p.vo;
          }
          if(p.opacity < 0) p.opacity = 0;
        }
  
        /* change size */
        if(pJS.particles.size.anim.enable){
          if(p.size_status == true){
            if(p.radius >= pJS.particles.size.value) p.size_status = false;
            p.radius += p.vs;
          }else{
            if(p.radius <= pJS.particles.size.anim.size_min) p.size_status = true;
            p.radius -= p.vs;
          }
          if(p.radius < 0) p.radius = 0;
        }
  
        /* change particle position if it is out of canvas */
        if(pJS.particles.move.out_mode == 'bounce'){
          var new_pos = {
            x_left: p.radius,
            x_right:  pJS.canvas.w,
            y_top: p.radius,
            y_bottom: pJS.canvas.h
          }
        }else{
          var new_pos = {
            x_left: -p.radius,
            x_right: pJS.canvas.w + p.radius,
            y_top: -p.radius,
            y_bottom: pJS.canvas.h + p.radius
          }
        }
  
        if(p.x - p.radius > pJS.canvas.w){
          p.x = new_pos.x_left;
          p.y = Math.random() * pJS.canvas.h;
        }
        else if(p.x + p.radius < 0){
          p.x = new_pos.x_right;
          p.y = Math.random() * pJS.canvas.h;
        }
        if(p.y - p.radius > pJS.canvas.h){
          p.y = new_pos.y_top;
          p.x = Math.random() * pJS.canvas.w;
        }
        else if(p.y + p.radius < 0){
          p.y = new_pos.y_bottom;
          p.x = Math.random() * pJS.canvas.w;
        }
  
        /* out of canvas modes */
        switch(pJS.particles.move.out_mode){
          case 'bounce':
            if (p.x + p.radius > pJS.canvas.w) p.vx = -p.vx;
            else if (p.x - p.radius < 0) p.vx = -p.vx;
            if (p.y + p.radius > pJS.canvas.h) p.vy = -p.vy;
            else if (p.y - p.radius < 0) p.vy = -p.vy;
          break;
        }
  
        /* events */
        if(isInArray('grab', pJS.interactivity.events.onhover.mode)){
          pJS.fn.modes.grabParticle(p);
        }
  
        if(isInArray('bubble', pJS.interactivity.events.onhover.mode) || isInArray('bubble', pJS.interactivity.events.onclick.mode)){
          pJS.fn.modes.bubbleParticle(p);
        }
  
        if(isInArray('repulse', pJS.interactivity.events.onhover.mode) || isInArray('repulse', pJS.interactivity.events.onclick.mode)){
          pJS.fn.modes.repulseParticle(p);
        }
  
        /* interaction auto between particles */
        if(pJS.particles.line_linked.enable || pJS.particles.move.attract.enable){
          for(var j = i + 1; j < pJS.particles.array.length; j++){
            var p2 = pJS.particles.array[j];
  
            /* link particles */
            if(pJS.particles.line_linked.enable){
              pJS.fn.interact.linkParticles(p,p2);
            }
  
            /* attract particles */
            if(pJS.particles.move.attract.enable){
              pJS.fn.interact.attractParticles(p,p2);
            }
  
            /* bounce particles */
            if(pJS.particles.move.bounce){
              pJS.fn.interact.bounceParticles(p,p2);
            }
  
          }
        }
  
  
      }
  
    };
  
    pJS.fn.particlesDraw = function(){
  
      /* clear canvas */
      pJS.canvas.ctx.clearRect(0, 0, pJS.canvas.w, pJS.canvas.h);
  
      /* update each particles param */
      pJS.fn.particlesUpdate();
  
      /* draw each particle */
      for(var i = 0; i < pJS.particles.array.length; i++){
        var p = pJS.particles.array[i];
        p.draw();
      }
  
    };
  
    pJS.fn.particlesEmpty = function(){
      pJS.particles.array = [];
    };
  
    pJS.fn.particlesRefresh = function(){
  
      /* init all */
      cancelRequestAnimFrame(pJS.fn.checkAnimFrame);
      cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
      pJS.tmp.source_svg = undefined;
      pJS.tmp.img_obj = undefined;
      pJS.tmp.count_svg = 0;
      pJS.fn.particlesEmpty();
      pJS.fn.canvasClear();
      
      /* restart */
      pJS.fn.vendors.start();
  
    };
  
  
    /* ---------- pJS functions - particles interaction ------------ */
  
    pJS.fn.interact.linkParticles = function(p1, p2){
  
      var dx = p1.x - p2.x,
          dy = p1.y - p2.y,
          dist = Math.sqrt(dx*dx + dy*dy);
  
      /* draw a line between p1 and p2 if the distance between them is under the config distance */
      if(dist <= pJS.particles.line_linked.distance){
  
        var opacity_line = pJS.particles.line_linked.opacity - (dist / (1/pJS.particles.line_linked.opacity)) / pJS.particles.line_linked.distance;
  
        if(opacity_line > 0){        
          
          /* style */
          var color_line = pJS.particles.line_linked.color_rgb_line;
          pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')';
          pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width;
          //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */
          
          /* path */
          pJS.canvas.ctx.beginPath();
          pJS.canvas.ctx.moveTo(p1.x, p1.y);
          pJS.canvas.ctx.lineTo(p2.x, p2.y);
          pJS.canvas.ctx.stroke();
          pJS.canvas.ctx.closePath();
  
        }
  
      }
  
    };
  
  
    pJS.fn.interact.attractParticles  = function(p1, p2){
  
      /* condensed particles */
      var dx = p1.x - p2.x,
          dy = p1.y - p2.y,
          dist = Math.sqrt(dx*dx + dy*dy);
  
      if(dist <= pJS.particles.line_linked.distance){
  
        var ax = dx/(pJS.particles.move.attract.rotateX*1000),
            ay = dy/(pJS.particles.move.attract.rotateY*1000);
  
        p1.vx -= ax;
        p1.vy -= ay;
  
        p2.vx += ax;
        p2.vy += ay;
  
      }
      
  
    }
  
  
    pJS.fn.interact.bounceParticles = function(p1, p2){
  
      var dx = p1.x - p2.x,
          dy = p1.y - p2.y,
          dist = Math.sqrt(dx*dx + dy*dy),
          dist_p = p1.radius+p2.radius;
  
      if(dist <= dist_p){
        p1.vx = -p1.vx;
        p1.vy = -p1.vy;
  
        p2.vx = -p2.vx;
        p2.vy = -p2.vy;
      }
  
    }
  
  
    /* ---------- pJS functions - modes events ------------ */
  
    pJS.fn.modes.pushParticles = function(nb, pos){
  
      pJS.tmp.pushing = true;
  
      for(var i = 0; i < nb; i++){
        pJS.particles.array.push(
          new pJS.fn.particle(
            pJS.particles.color,
            pJS.particles.opacity.value,
            {
              'x': pos ? pos.pos_x : Math.random() * pJS.canvas.w,
              'y': pos ? pos.pos_y : Math.random() * pJS.canvas.h
            }
          )
        )
        if(i == nb-1){
          if(!pJS.particles.move.enable){
            pJS.fn.particlesDraw();
          }
          pJS.tmp.pushing = false;
        }
      }
  
    };
  
  
    pJS.fn.modes.removeParticles = function(nb){
  
      pJS.particles.array.splice(0, nb);
      if(!pJS.particles.move.enable){
        pJS.fn.particlesDraw();
      }
  
    };
  
  
    pJS.fn.modes.bubbleParticle = function(p){
  
      /* on hover event */
      if(pJS.interactivity.events.onhover.enable && isInArray('bubble', pJS.interactivity.events.onhover.mode)){
  
        var dx_mouse = p.x - pJS.interactivity.mouse.pos_x,
            dy_mouse = p.y - pJS.interactivity.mouse.pos_y,
            dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse),
            ratio = 1 - dist_mouse / pJS.interactivity.modes.bubble.distance;
  
        function init(){
          p.opacity_bubble = p.opacity;
          p.radius_bubble = p.radius;
        }
  
        /* mousemove - check ratio */
        if(dist_mouse <= pJS.interactivity.modes.bubble.distance){
  
          if(ratio >= 0 && pJS.interactivity.status == 'mousemove'){
            
            /* size */
            if(pJS.interactivity.modes.bubble.size != pJS.particles.size.value){
  
              if(pJS.interactivity.modes.bubble.size > pJS.particles.size.value){
                var size = p.radius + (pJS.interactivity.modes.bubble.size*ratio);
                if(size >= 0){
                  p.radius_bubble = size;
                }
              }else{
                var dif = p.radius - pJS.interactivity.modes.bubble.size,
                    size = p.radius - (dif*ratio);
                if(size > 0){
                  p.radius_bubble = size;
                }else{
                  p.radius_bubble = 0;
                }
              }
  
            }
  
            /* opacity */
            if(pJS.interactivity.modes.bubble.opacity != pJS.particles.opacity.value){
  
              if(pJS.interactivity.modes.bubble.opacity > pJS.particles.opacity.value){
                var opacity = pJS.interactivity.modes.bubble.opacity*ratio;
                if(opacity > p.opacity && opacity <= pJS.interactivity.modes.bubble.opacity){
                  p.opacity_bubble = opacity;
                }
              }else{
                var opacity = p.opacity - (pJS.particles.opacity.value-pJS.interactivity.modes.bubble.opacity)*ratio;
                if(opacity < p.opacity && opacity >= pJS.interactivity.modes.bubble.opacity){
                  p.opacity_bubble = opacity;
                }
              }
  
            }
  
          }
  
        }else{
          init();
        }
  
  
        /* mouseleave */
        if(pJS.interactivity.status == 'mouseleave'){
          init();
        }
      
      }
  
      /* on click event */
      else if(pJS.interactivity.events.onclick.enable && isInArray('bubble', pJS.interactivity.events.onclick.mode)){
  
  
        if(pJS.tmp.bubble_clicking){
          var dx_mouse = p.x - pJS.interactivity.mouse.click_pos_x,
              dy_mouse = p.y - pJS.interactivity.mouse.click_pos_y,
              dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse),
              time_spent = (new Date().getTime() - pJS.interactivity.mouse.click_time)/1000;
  
          if(time_spent > pJS.interactivity.modes.bubble.duration){
            pJS.tmp.bubble_duration_end = true;
          }
  
          if(time_spent > pJS.interactivity.modes.bubble.duration*2){
            pJS.tmp.bubble_clicking = false;
            pJS.tmp.bubble_duration_end = false;
          }
        }
  
  
        function process(bubble_param, particles_param, p_obj_bubble, p_obj, id){
  
          if(bubble_param != particles_param){
  
            if(!pJS.tmp.bubble_duration_end){
              if(dist_mouse <= pJS.interactivity.modes.bubble.distance){
                if(p_obj_bubble != undefined) var obj = p_obj_bubble;
                else var obj = p_obj;
                if(obj != bubble_param){
                  var value = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration);
                  if(id == 'size') p.radius_bubble = value;
                  if(id == 'opacity') p.opacity_bubble = value;
                }
              }else{
                if(id == 'size') p.radius_bubble = undefined;
                if(id == 'opacity') p.opacity_bubble = undefined;
              }
            }else{
              if(p_obj_bubble != undefined){
                var value_tmp = p_obj - (time_spent * (p_obj - bubble_param) / pJS.interactivity.modes.bubble.duration),
                    dif = bubble_param - value_tmp;
                    value = bubble_param + dif;
                if(id == 'size') p.radius_bubble = value;
                if(id == 'opacity') p.opacity_bubble = value;
              }
            }
  
          }
  
        }
  
        if(pJS.tmp.bubble_clicking){
          /* size */
          process(pJS.interactivity.modes.bubble.size, pJS.particles.size.value, p.radius_bubble, p.radius, 'size');
          /* opacity */
          process(pJS.interactivity.modes.bubble.opacity, pJS.particles.opacity.value, p.opacity_bubble, p.opacity, 'opacity');
        }
  
      }
  
    };
  
  
    pJS.fn.modes.repulseParticle = function(p){
  
      if(pJS.interactivity.events.onhover.enable && isInArray('repulse', pJS.interactivity.events.onhover.mode) && pJS.interactivity.status == 'mousemove') {
  
        var dx_mouse = p.x - pJS.interactivity.mouse.pos_x,
            dy_mouse = p.y - pJS.interactivity.mouse.pos_y,
            dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse);
  
        var normVec = {x: dx_mouse/dist_mouse, y: dy_mouse/dist_mouse},
            repulseRadius = pJS.interactivity.modes.repulse.distance,
            velocity = 100,
            repulseFactor = clamp((1/repulseRadius)*(-1*Math.pow(dist_mouse/repulseRadius,2)+1)*repulseRadius*velocity, 0, 50);
        
        var pos = {
          x: p.x + normVec.x * repulseFactor,
          y: p.y + normVec.y * repulseFactor
        }
  
        if(pJS.particles.move.out_mode == 'bounce'){
          if(pos.x - p.radius > 0 && pos.x + p.radius < pJS.canvas.w) p.x = pos.x;
          if(pos.y - p.radius > 0 && pos.y + p.radius < pJS.canvas.h) p.y = pos.y;
        }else{
          p.x = pos.x;
          p.y = pos.y;
        }
      
      }
  
  
      else if(pJS.interactivity.events.onclick.enable && isInArray('repulse', pJS.interactivity.events.onclick.mode)) {
  
        if(!pJS.tmp.repulse_finish){
          pJS.tmp.repulse_count++;
          if(pJS.tmp.repulse_count == pJS.particles.array.length){
            pJS.tmp.repulse_finish = true;
          }
        }
  
        if(pJS.tmp.repulse_clicking){
  
          var repulseRadius = Math.pow(pJS.interactivity.modes.repulse.distance/6, 3);
  
          var dx = pJS.interactivity.mouse.click_pos_x - p.x,
              dy = pJS.interactivity.mouse.click_pos_y - p.y,
              d = dx*dx + dy*dy;
  
          var force = -repulseRadius / d * 1;
  
          function process(){
  
            var f = Math.atan2(dy,dx);
            p.vx = force * Math.cos(f);
            p.vy = force * Math.sin(f);
  
            if(pJS.particles.move.out_mode == 'bounce'){
              var pos = {
                x: p.x + p.vx,
                y: p.y + p.vy
              }
              if (pos.x + p.radius > pJS.canvas.w) p.vx = -p.vx;
              else if (pos.x - p.radius < 0) p.vx = -p.vx;
              if (pos.y + p.radius > pJS.canvas.h) p.vy = -p.vy;
              else if (pos.y - p.radius < 0) p.vy = -p.vy;
            }
  
          }
  
          // default
          if(d <= repulseRadius){
            process();
          }
  
          // bang - slow motion mode
          // if(!pJS.tmp.repulse_finish){
          //   if(d <= repulseRadius){
          //     process();
          //   }
          // }else{
          //   process();
          // }
          
  
        }else{
  
          if(pJS.tmp.repulse_clicking == false){
  
            p.vx = p.vx_i;
            p.vy = p.vy_i;
          
          }
  
        }
  
      }
  
    }
  
  
    pJS.fn.modes.grabParticle = function(p){
  
      if(pJS.interactivity.events.onhover.enable && pJS.interactivity.status == 'mousemove'){
  
        var dx_mouse = p.x - pJS.interactivity.mouse.pos_x,
            dy_mouse = p.y - pJS.interactivity.mouse.pos_y,
            dist_mouse = Math.sqrt(dx_mouse*dx_mouse + dy_mouse*dy_mouse);
  
        /* draw a line between the cursor and the particle if the distance between them is under the config distance */
        if(dist_mouse <= pJS.interactivity.modes.grab.distance){
  
          var opacity_line = pJS.interactivity.modes.grab.line_linked.opacity - (dist_mouse / (1/pJS.interactivity.modes.grab.line_linked.opacity)) / pJS.interactivity.modes.grab.distance;
  
          if(opacity_line > 0){
  
            /* style */
            var color_line = pJS.particles.line_linked.color_rgb_line;
            pJS.canvas.ctx.strokeStyle = 'rgba('+color_line.r+','+color_line.g+','+color_line.b+','+opacity_line+')';
            pJS.canvas.ctx.lineWidth = pJS.particles.line_linked.width;
            //pJS.canvas.ctx.lineCap = 'round'; /* performance issue */
            
            /* path */
            pJS.canvas.ctx.beginPath();
            pJS.canvas.ctx.moveTo(p.x, p.y);
            pJS.canvas.ctx.lineTo(pJS.interactivity.mouse.pos_x, pJS.interactivity.mouse.pos_y);
            pJS.canvas.ctx.stroke();
            pJS.canvas.ctx.closePath();
  
          }
  
        }
  
      }
  
    };
  
  
  
    /* ---------- pJS functions - vendors ------------ */
  
    pJS.fn.vendors.eventsListeners = function(){
  
      /* events target element */
      if(pJS.interactivity.detect_on == 'window'){
        pJS.interactivity.el = window;
      }else{
        pJS.interactivity.el = pJS.canvas.el;
      }
  
  
      /* detect mouse pos - on hover / click event */
      if(pJS.interactivity.events.onhover.enable || pJS.interactivity.events.onclick.enable){
  
        /* el on mousemove */
        pJS.interactivity.el.addEventListener('mousemove', function(e){
  
          if(pJS.interactivity.el == window){
            var pos_x = e.clientX,
                pos_y = e.clientY;
          }
          else{
            var pos_x = e.offsetX || e.clientX,
                pos_y = e.offsetY || e.clientY;
          }
  
          pJS.interactivity.mouse.pos_x = pos_x;
          pJS.interactivity.mouse.pos_y = pos_y;
  
          if(pJS.tmp.retina){
            pJS.interactivity.mouse.pos_x *= pJS.canvas.pxratio;
            pJS.interactivity.mouse.pos_y *= pJS.canvas.pxratio;
          }
  
          pJS.interactivity.status = 'mousemove';
  
        });
  
        /* el on onmouseleave */
        pJS.interactivity.el.addEventListener('mouseleave', function(e){
  
          pJS.interactivity.mouse.pos_x = null;
          pJS.interactivity.mouse.pos_y = null;
          pJS.interactivity.status = 'mouseleave';
  
        });
  
      }
  
      /* on click event */
      if(pJS.interactivity.events.onclick.enable){
  
        pJS.interactivity.el.addEventListener('click', function(){
  
          pJS.interactivity.mouse.click_pos_x = pJS.interactivity.mouse.pos_x;
          pJS.interactivity.mouse.click_pos_y = pJS.interactivity.mouse.pos_y;
          pJS.interactivity.mouse.click_time = new Date().getTime();
  
          if(pJS.interactivity.events.onclick.enable){
  
            switch(pJS.interactivity.events.onclick.mode){
  
              case 'push':
                if(pJS.particles.move.enable){
                  pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse);
                }else{
                  if(pJS.interactivity.modes.push.particles_nb == 1){
                    pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb, pJS.interactivity.mouse);
                  }
                  else if(pJS.interactivity.modes.push.particles_nb > 1){
                    pJS.fn.modes.pushParticles(pJS.interactivity.modes.push.particles_nb);
                  }
                }
              break;
  
              case 'remove':
                pJS.fn.modes.removeParticles(pJS.interactivity.modes.remove.particles_nb);
              break;
  
              case 'bubble':
                pJS.tmp.bubble_clicking = true;
              break;
  
              case 'repulse':
                pJS.tmp.repulse_clicking = true;
                pJS.tmp.repulse_count = 0;
                pJS.tmp.repulse_finish = false;
                setTimeout(function(){
                  pJS.tmp.repulse_clicking = false;
                }, pJS.interactivity.modes.repulse.duration*1000)
              break;
  
            }
  
          }
  
        });
          
      }
  
  
    };
  
    pJS.fn.vendors.densityAutoParticles = function(){
  
      if(pJS.particles.number.density.enable){
  
        /* calc area */
        var area = pJS.canvas.el.width * pJS.canvas.el.height / 1000;
        if(pJS.tmp.retina){
          area = area/(pJS.canvas.pxratio*2);
        }
  
        /* calc number of particles based on density area */
        var nb_particles = area * pJS.particles.number.value / pJS.particles.number.density.value_area;
  
        /* add or remove X particles */
        var missing_particles = pJS.particles.array.length - nb_particles;
        if(missing_particles < 0) pJS.fn.modes.pushParticles(Math.abs(missing_particles));
        else pJS.fn.modes.removeParticles(missing_particles);
  
      }
  
    };
  
  
    pJS.fn.vendors.checkOverlap = function(p1, position){
      for(var i = 0; i < pJS.particles.array.length; i++){
        var p2 = pJS.particles.array[i];
  
        var dx = p1.x - p2.x,
            dy = p1.y - p2.y,
            dist = Math.sqrt(dx*dx + dy*dy);
  
        if(dist <= p1.radius + p2.radius){
          p1.x = position ? position.x : Math.random() * pJS.canvas.w;
          p1.y = position ? position.y : Math.random() * pJS.canvas.h;
          pJS.fn.vendors.checkOverlap(p1);
        }
      }
    };
  
  
    pJS.fn.vendors.createSvgImg = function(p){
  
      /* set color to svg element */
      var svgXml = pJS.tmp.source_svg,
          rgbHex = /#([0-9A-F]{3,6})/gi,
          coloredSvgXml = svgXml.replace(rgbHex, function (m, r, g, b) {
            if(p.color.rgb){
              var color_value = 'rgba('+p.color.rgb.r+','+p.color.rgb.g+','+p.color.rgb.b+','+p.opacity+')';
            }else{
              var color_value = 'hsla('+p.color.hsl.h+','+p.color.hsl.s+'%,'+p.color.hsl.l+'%,'+p.opacity+')';
            }
            return color_value;
          });
  
      /* prepare to create img with colored svg */
      var svg = new Blob([coloredSvgXml], {type: 'image/svg+xml;charset=utf-8'}),
          DOMURL = window.URL || window.webkitURL || window,
          url = DOMURL.createObjectURL(svg);
  
      /* create particle img obj */
      var img = new Image();
      img.addEventListener('load', function(){
        p.img.obj = img;
        p.img.loaded = true;
        DOMURL.revokeObjectURL(url);
        pJS.tmp.count_svg++;
      });
      img.src = url;
  
    };
  
  
    pJS.fn.vendors.destroypJS = function(){
      cancelAnimationFrame(pJS.fn.drawAnimFrame);
      canvas_el.remove();
      pJSDom = null;
    };
  
  
    pJS.fn.vendors.drawShape = function(c, startX, startY, sideLength, sideCountNumerator, sideCountDenominator){
  
      // By Programming Thomas - https://programmingthomas.wordpress.com/2013/04/03/n-sided-shapes/
      var sideCount = sideCountNumerator * sideCountDenominator;
      var decimalSides = sideCountNumerator / sideCountDenominator;
      var interiorAngleDegrees = (180 * (decimalSides - 2)) / decimalSides;
      var interiorAngle = Math.PI - Math.PI * interiorAngleDegrees / 180; // convert to radians
      c.save();
      c.beginPath();
      c.translate(startX, startY);
      c.moveTo(0,0);
      for (var i = 0; i < sideCount; i++) {
        c.lineTo(sideLength,0);
        c.translate(sideLength,0);
        c.rotate(interiorAngle);
      }
      //c.stroke();
      c.fill();
      c.restore();
  
    };
  
    pJS.fn.vendors.exportImg = function(){
      window.open(pJS.canvas.el.toDataURL('image/png'), '_blank');
    };
  
  
    pJS.fn.vendors.loadImg = function(type){
  
      pJS.tmp.img_error = undefined;
  
      if(pJS.particles.shape.image.src != ''){
  
        if(type == 'svg'){
  
          var xhr = new XMLHttpRequest();
          xhr.open('GET', pJS.particles.shape.image.src);
          xhr.onreadystatechange = function (data) {
            if(xhr.readyState == 4){
              if(xhr.status == 200){
                pJS.tmp.source_svg = data.currentTarget.response;
                pJS.fn.vendors.checkBeforeDraw();
              }else{
                console.log('Error pJS - Image not found');
                pJS.tmp.img_error = true;
              }
            }
          }
          xhr.send();
  
        }else{
  
          var img = new Image();
          img.addEventListener('load', function(){
            pJS.tmp.img_obj = img;
            pJS.fn.vendors.checkBeforeDraw();
          });
          img.src = pJS.particles.shape.image.src;
  
        }
  
      }else{
        console.log('Error pJS - No image.src');
        pJS.tmp.img_error = true;
      }
  
    };
  
  
    pJS.fn.vendors.draw = function(){
  
      if(pJS.particles.shape.type == 'image'){
  
        if(pJS.tmp.img_type == 'svg'){
  
          if(pJS.tmp.count_svg >= pJS.particles.number.value){
            pJS.fn.particlesDraw();
            if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
            else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
          }else{
            //console.log('still loading...');
            if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
          }
  
        }else{
  
          if(pJS.tmp.img_obj != undefined){
            pJS.fn.particlesDraw();
            if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
            else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
          }else{
            if(!pJS.tmp.img_error) pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
          }
  
        }
  
      }else{
        pJS.fn.particlesDraw();
        if(!pJS.particles.move.enable) cancelRequestAnimFrame(pJS.fn.drawAnimFrame);
        else pJS.fn.drawAnimFrame = requestAnimFrame(pJS.fn.vendors.draw);
      }
  
    };
  
  
    pJS.fn.vendors.checkBeforeDraw = function(){
  
      // if shape is image
      if(pJS.particles.shape.type == 'image'){
  
        if(pJS.tmp.img_type == 'svg' && pJS.tmp.source_svg == undefined){
          pJS.tmp.checkAnimFrame = requestAnimFrame(check);
        }else{
          //console.log('images loaded! cancel check');
          cancelRequestAnimFrame(pJS.tmp.checkAnimFrame);
          if(!pJS.tmp.img_error){
            pJS.fn.vendors.init();
            pJS.fn.vendors.draw();
          }
          
        }
  
      }else{
        pJS.fn.vendors.init();
        pJS.fn.vendors.draw();
      }
  
    };
  
  
    pJS.fn.vendors.init = function(){
  
      /* init canvas + particles */
      pJS.fn.retinaInit();
      pJS.fn.canvasInit();
      pJS.fn.canvasSize();
      pJS.fn.canvasPaint();
      pJS.fn.particlesCreate();
      pJS.fn.vendors.densityAutoParticles();
  
      /* particles.line_linked - convert hex colors to rgb */
      pJS.particles.line_linked.color_rgb_line = hexToRgb(pJS.particles.line_linked.color);
  
    };
  
  
    pJS.fn.vendors.start = function(){
  
      if(isInArray('image', pJS.particles.shape.type)){
        pJS.tmp.img_type = pJS.particles.shape.image.src.substr(pJS.particles.shape.image.src.length - 3);
        pJS.fn.vendors.loadImg(pJS.tmp.img_type);
      }else{
        pJS.fn.vendors.checkBeforeDraw();
      }
  
    };
  
  
  
  
    /* ---------- pJS - start ------------ */
  
  
    pJS.fn.vendors.eventsListeners();
  
    pJS.fn.vendors.start();
    
  
  
  };
  
  /* ---------- global functions - vendors ------------ */
  
  Object.deepExtend = function(destination, source) {
    for (var property in source) {
      if (source[property] && source[property].constructor &&
       source[property].constructor === Object) {
        destination[property] = destination[property] || {};
        arguments.callee(destination[property], source[property]);
      } else {
        destination[property] = source[property];
      }
    }
    return destination;
  };
  
  window.requestAnimFrame = (function(){
    return  window.requestAnimationFrame ||
      window.webkitRequestAnimationFrame ||
      window.mozRequestAnimationFrame    ||
      window.oRequestAnimationFrame      ||
      window.msRequestAnimationFrame     ||
      function(callback){
        window.setTimeout(callback, 1000 / 60);
      };
  })();
  
  window.cancelRequestAnimFrame = ( function() {
    return window.cancelAnimationFrame         ||
      window.webkitCancelRequestAnimationFrame ||
      window.mozCancelRequestAnimationFrame    ||
      window.oCancelRequestAnimationFrame      ||
      window.msCancelRequestAnimationFrame     ||
      clearTimeout
  } )();
  
  function hexToRgb(hex){
    // By Tim Down - http://stackoverflow.com/a/5624139/3493650
    // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
    var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
    hex = hex.replace(shorthandRegex, function(m, r, g, b) {
       return r + r + g + g + b + b;
    });
    var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
    return result ? {
        r: parseInt(result[1], 16),
        g: parseInt(result[2], 16),
        b: parseInt(result[3], 16)
    } : null;
  };
  
  function clamp(number, min, max) {
    return Math.min(Math.max(number, min), max);
  };
  
  function isInArray(value, array) {
    return array.indexOf(value) > -1;
  }
  
  
  /* ---------- particles.js functions - start ------------ */
  
  window.pJSDom = [];
  
  window.particlesJS = function(tag_id, params){
  
    //console.log(params);
  
    /* no string id? so it's object params, and set the id with default id */
    if(typeof(tag_id) != 'string'){
      params = tag_id;
      tag_id = 'particles-js';
    }
  
    /* no id? set the id to default id */
    if(!tag_id){
      tag_id = 'particles-js';
    }
  
    /* pJS elements */
    var pJS_tag = document.getElementById(tag_id),
        pJS_canvas_class = 'particles-js-canvas-el',
        exist_canvas = pJS_tag.getElementsByClassName(pJS_canvas_class);
  
    /* remove canvas if exists into the pJS target tag */
    if(exist_canvas.length){
      while(exist_canvas.length > 0){
        pJS_tag.removeChild(exist_canvas[0]);
      }
    }
  
    /* create canvas element */
    var canvas_el = document.createElement('canvas');
    canvas_el.className = pJS_canvas_class;
  
    /* set size canvas */
    canvas_el.style.width = "100%";
    canvas_el.style.height = "100%";
  
    /* append canvas */
    var canvas = document.getElementById(tag_id).appendChild(canvas_el);
  
    /* launch particle.js */
    if(canvas != null){
      pJSDom.push(new pJS(tag_id, params));
    }
  
  };
  
  window.particlesJS.load = function(tag_id, path_config_json, callback){
  
    /* load json config */
    var xhr = new XMLHttpRequest();
    xhr.open('GET', path_config_json);
    xhr.onreadystatechange = function (data) {
      if(xhr.readyState == 4){
        if(xhr.status == 200){
          var params = JSON.parse(data.currentTarget.response);
          window.particlesJS(tag_id, params);
          if(callback) callback();
        }else{
          console.log('Error pJS - XMLHttpRequest status: '+xhr.status);
          console.log('Error pJS - File config not found');
        }
      }
    };
    xhr.send();
  
  };
  
  /***/ }),
  
  /***/ "./node_modules/querystring-es3/decode.js":
  /*!************************************************!*\
    !*** ./node_modules/querystring-es3/decode.js ***!
    \************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  // Copyright Joyent, Inc. and other Node contributors.
  //
  // Permission is hereby granted, free of charge, to any person obtaining a
  // copy of this software and associated documentation files (the
  // "Software"), to deal in the Software without restriction, including
  // without limitation the rights to use, copy, modify, merge, publish,
  // distribute, sublicense, and/or sell copies of the Software, and to permit
  // persons to whom the Software is furnished to do so, subject to the
  // following conditions:
  //
  // The above copyright notice and this permission notice shall be included
  // in all copies or substantial portions of the Software.
  //
  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  // USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  
  
  // If obj.hasOwnProperty has been overridden, then calling
  // obj.hasOwnProperty(prop) will break.
  // See: https://github.com/joyent/node/issues/1707
  function hasOwnProperty(obj, prop) {
    return Object.prototype.hasOwnProperty.call(obj, prop);
  }
  
  module.exports = function(qs, sep, eq, options) {
    sep = sep || '&';
    eq = eq || '=';
    var obj = {};
  
    if (typeof qs !== 'string' || qs.length === 0) {
      return obj;
    }
  
    var regexp = /\+/g;
    qs = qs.split(sep);
  
    var maxKeys = 1000;
    if (options && typeof options.maxKeys === 'number') {
      maxKeys = options.maxKeys;
    }
  
    var len = qs.length;
    // maxKeys <= 0 means that we should not limit keys count
    if (maxKeys > 0 && len > maxKeys) {
      len = maxKeys;
    }
  
    for (var i = 0; i < len; ++i) {
      var x = qs[i].replace(regexp, '%20'),
          idx = x.indexOf(eq),
          kstr, vstr, k, v;
  
      if (idx >= 0) {
        kstr = x.substr(0, idx);
        vstr = x.substr(idx + 1);
      } else {
        kstr = x;
        vstr = '';
      }
  
      k = decodeURIComponent(kstr);
      v = decodeURIComponent(vstr);
  
      if (!hasOwnProperty(obj, k)) {
        obj[k] = v;
      } else if (isArray(obj[k])) {
        obj[k].push(v);
      } else {
        obj[k] = [obj[k], v];
      }
    }
  
    return obj;
  };
  
  var isArray = Array.isArray || function (xs) {
    return Object.prototype.toString.call(xs) === '[object Array]';
  };
  
  
  /***/ }),
  
  /***/ "./node_modules/querystring-es3/encode.js":
  /*!************************************************!*\
    !*** ./node_modules/querystring-es3/encode.js ***!
    \************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  // Copyright Joyent, Inc. and other Node contributors.
  //
  // Permission is hereby granted, free of charge, to any person obtaining a
  // copy of this software and associated documentation files (the
  // "Software"), to deal in the Software without restriction, including
  // without limitation the rights to use, copy, modify, merge, publish,
  // distribute, sublicense, and/or sell copies of the Software, and to permit
  // persons to whom the Software is furnished to do so, subject to the
  // following conditions:
  //
  // The above copyright notice and this permission notice shall be included
  // in all copies or substantial portions of the Software.
  //
  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  // USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  
  
  var stringifyPrimitive = function(v) {
    switch (typeof v) {
      case 'string':
        return v;
  
      case 'boolean':
        return v ? 'true' : 'false';
  
      case 'number':
        return isFinite(v) ? v : '';
  
      default:
        return '';
    }
  };
  
  module.exports = function(obj, sep, eq, name) {
    sep = sep || '&';
    eq = eq || '=';
    if (obj === null) {
      obj = undefined;
    }
  
    if (typeof obj === 'object') {
      return map(objectKeys(obj), function(k) {
        var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
        if (isArray(obj[k])) {
          return map(obj[k], function(v) {
            return ks + encodeURIComponent(stringifyPrimitive(v));
          }).join(sep);
        } else {
          return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
        }
      }).join(sep);
  
    }
  
    if (!name) return '';
    return encodeURIComponent(stringifyPrimitive(name)) + eq +
           encodeURIComponent(stringifyPrimitive(obj));
  };
  
  var isArray = Array.isArray || function (xs) {
    return Object.prototype.toString.call(xs) === '[object Array]';
  };
  
  function map (xs, f) {
    if (xs.map) return xs.map(f);
    var res = [];
    for (var i = 0; i < xs.length; i++) {
      res.push(f(xs[i], i));
    }
    return res;
  }
  
  var objectKeys = Object.keys || function (obj) {
    var res = [];
    for (var key in obj) {
      if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
    }
    return res;
  };
  
  
  /***/ }),
  
  /***/ "./node_modules/querystring-es3/index.js":
  /*!***********************************************!*\
    !*** ./node_modules/querystring-es3/index.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  
  exports.decode = exports.parse = __webpack_require__(/*! ./decode */ "./node_modules/querystring-es3/decode.js");
  exports.encode = exports.stringify = __webpack_require__(/*! ./encode */ "./node_modules/querystring-es3/encode.js");
  
  
  /***/ }),
  
  /***/ "./node_modules/strip-ansi/index.js":
  /*!******************************************!*\
    !*** ./node_modules/strip-ansi/index.js ***!
    \******************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  
  var ansiRegex = __webpack_require__(/*! ansi-regex */ "./node_modules/ansi-regex/index.js")();
  
  module.exports = function (str) {
  	return typeof str === 'string' ? str.replace(ansiRegex, '') : str;
  };
  
  
  /***/ }),
  
  /***/ "./node_modules/unfetch/dist/unfetch.mjs":
  /*!***********************************************!*\
    !*** ./node_modules/unfetch/dist/unfetch.mjs ***!
    \***********************************************/
  /*! exports provided: default */
  /***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony default export */ __webpack_exports__["default"] = (function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(JSON.parse(s.responseText))},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||"get",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+","+t:t}),t(a())},s.onerror=r,s.withCredentials="include"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})});
  //# sourceMappingURL=unfetch.mjs.map
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-client-only/dist/vue-client-only.common.js":
  /*!*********************************************************************!*\
    !*** ./node_modules/vue-client-only/dist/vue-client-only.common.js ***!
    \*********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  /*!
   * vue-client-only v2.0.0
   * (c) 2019-present egoist <0x142857@gmail.com>
   * Released under the MIT License.
   */
  
  
  var index = {
    name: 'ClientOnly',
    functional: true,
    props: {
      placeholder: String,
      placeholderTag: {
        type: String,
        default: 'div'
      }
    },
    render: function render(h, ref) {
      var parent = ref.parent;
      var slots = ref.slots;
      var props = ref.props;
  
      var ref$1 = slots();
      var defaultSlot = ref$1.default; if ( defaultSlot === void 0 ) defaultSlot = [];
      var placeholderSlot = ref$1.placeholder;
  
      if (parent._isMounted) {
        return defaultSlot
      }
  
      parent.$once('hook:mounted', function () {
        parent.$forceUpdate();
      });
  
      if (props.placeholderTag && (props.placeholder || placeholderSlot)) {
        return h(
          props.placeholderTag,
          {
            class: ['client-only-placeholder']
          },
          props.placeholder || placeholderSlot
        )
      }
  
      // Return a placeholder element for each child in the default slot
      // Or if no children return a single placeholder
      return defaultSlot.length > 0 ? defaultSlot.map(function () { return h(false); }) : h(false)
    }
  };
  
  module.exports = index;
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-hot-reload-api/dist/index.js":
  /*!*******************************************************!*\
    !*** ./node_modules/vue-hot-reload-api/dist/index.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  var Vue // late bind
  var version
  var map = Object.create(null)
  if (typeof window !== 'undefined') {
    window.__VUE_HOT_MAP__ = map
  }
  var installed = false
  var isBrowserify = false
  var initHookName = 'beforeCreate'
  
  exports.install = function (vue, browserify) {
    if (installed) { return }
    installed = true
  
    Vue = vue.__esModule ? vue.default : vue
    version = Vue.version.split('.').map(Number)
    isBrowserify = browserify
  
    // compat with < 2.0.0-alpha.7
    if (Vue.config._lifecycleHooks.indexOf('init') > -1) {
      initHookName = 'init'
    }
  
    exports.compatible = version[0] >= 2
    if (!exports.compatible) {
      console.warn(
        '[HMR] You are using a version of vue-hot-reload-api that is ' +
          'only compatible with Vue.js core ^2.0.0.'
      )
      return
    }
  }
  
  /**
   * Create a record for a hot module, which keeps track of its constructor
   * and instances
   *
   * @param {String} id
   * @param {Object} options
   */
  
  exports.createRecord = function (id, options) {
    if(map[id]) { return }
  
    var Ctor = null
    if (typeof options === 'function') {
      Ctor = options
      options = Ctor.options
    }
    makeOptionsHot(id, options)
    map[id] = {
      Ctor: Ctor,
      options: options,
      instances: []
    }
  }
  
  /**
   * Check if module is recorded
   *
   * @param {String} id
   */
  
  exports.isRecorded = function (id) {
    return typeof map[id] !== 'undefined'
  }
  
  /**
   * Make a Component options object hot.
   *
   * @param {String} id
   * @param {Object} options
   */
  
  function makeOptionsHot(id, options) {
    if (options.functional) {
      var render = options.render
      options.render = function (h, ctx) {
        var instances = map[id].instances
        if (ctx && instances.indexOf(ctx.parent) < 0) {
          instances.push(ctx.parent)
        }
        return render(h, ctx)
      }
    } else {
      injectHook(options, initHookName, function() {
        var record = map[id]
        if (!record.Ctor) {
          record.Ctor = this.constructor
        }
        record.instances.push(this)
      })
      injectHook(options, 'beforeDestroy', function() {
        var instances = map[id].instances
        instances.splice(instances.indexOf(this), 1)
      })
    }
  }
  
  /**
   * Inject a hook to a hot reloadable component so that
   * we can keep track of it.
   *
   * @param {Object} options
   * @param {String} name
   * @param {Function} hook
   */
  
  function injectHook(options, name, hook) {
    var existing = options[name]
    options[name] = existing
      ? Array.isArray(existing) ? existing.concat(hook) : [existing, hook]
      : [hook]
  }
  
  function tryWrap(fn) {
    return function (id, arg) {
      try {
        fn(id, arg)
      } catch (e) {
        console.error(e)
        console.warn(
          'Something went wrong during Vue component hot-reload. Full reload required.'
        )
      }
    }
  }
  
  function updateOptions (oldOptions, newOptions) {
    for (var key in oldOptions) {
      if (!(key in newOptions)) {
        delete oldOptions[key]
      }
    }
    for (var key$1 in newOptions) {
      oldOptions[key$1] = newOptions[key$1]
    }
  }
  
  exports.rerender = tryWrap(function (id, options) {
    var record = map[id]
    if (!options) {
      record.instances.slice().forEach(function (instance) {
        instance.$forceUpdate()
      })
      return
    }
    if (typeof options === 'function') {
      options = options.options
    }
    if (record.Ctor) {
      record.Ctor.options.render = options.render
      record.Ctor.options.staticRenderFns = options.staticRenderFns
      record.instances.slice().forEach(function (instance) {
        instance.$options.render = options.render
        instance.$options.staticRenderFns = options.staticRenderFns
        // reset static trees
        // pre 2.5, all static trees are cached together on the instance
        if (instance._staticTrees) {
          instance._staticTrees = []
        }
        // 2.5.0
        if (Array.isArray(record.Ctor.options.cached)) {
          record.Ctor.options.cached = []
        }
        // 2.5.3
        if (Array.isArray(instance.$options.cached)) {
          instance.$options.cached = []
        }
  
        // post 2.5.4: v-once trees are cached on instance._staticTrees.
        // Pure static trees are cached on the staticRenderFns array
        // (both already reset above)
  
        // 2.6: temporarily mark rendered scoped slots as unstable so that
        // child components can be forced to update
        var restore = patchScopedSlots(instance)
        instance.$forceUpdate()
        instance.$nextTick(restore)
      })
    } else {
      // functional or no instance created yet
      record.options.render = options.render
      record.options.staticRenderFns = options.staticRenderFns
  
      // handle functional component re-render
      if (record.options.functional) {
        // rerender with full options
        if (Object.keys(options).length > 2) {
          updateOptions(record.options, options)
        } else {
          // template-only rerender.
          // need to inject the style injection code for CSS modules
          // to work properly.
          var injectStyles = record.options._injectStyles
          if (injectStyles) {
            var render = options.render
            record.options.render = function (h, ctx) {
              injectStyles.call(ctx)
              return render(h, ctx)
            }
          }
        }
        record.options._Ctor = null
        // 2.5.3
        if (Array.isArray(record.options.cached)) {
          record.options.cached = []
        }
        record.instances.slice().forEach(function (instance) {
          instance.$forceUpdate()
        })
      }
    }
  })
  
  exports.reload = tryWrap(function (id, options) {
    var record = map[id]
    if (options) {
      if (typeof options === 'function') {
        options = options.options
      }
      makeOptionsHot(id, options)
      if (record.Ctor) {
        if (version[1] < 2) {
          // preserve pre 2.2 behavior for global mixin handling
          record.Ctor.extendOptions = options
        }
        var newCtor = record.Ctor.super.extend(options)
        record.Ctor.options = newCtor.options
        record.Ctor.cid = newCtor.cid
        record.Ctor.prototype = newCtor.prototype
        if (newCtor.release) {
          // temporary global mixin strategy used in < 2.0.0-alpha.6
          newCtor.release()
        }
      } else {
        updateOptions(record.options, options)
      }
    }
    record.instances.slice().forEach(function (instance) {
      if (instance.$vnode && instance.$vnode.context) {
        instance.$vnode.context.$forceUpdate()
      } else {
        console.warn(
          'Root or manually mounted instance modified. Full reload required.'
        )
      }
    })
  })
  
  // 2.6 optimizes template-compiled scoped slots and skips updates if child
  // only uses scoped slots. We need to patch the scoped slots resolving helper
  // to temporarily mark all scoped slots as unstable in order to force child
  // updates.
  function patchScopedSlots (instance) {
    if (!instance._u) { return }
    // https://github.com/vuejs/vue/blob/dev/src/core/instance/render-helpers/resolve-scoped-slots.js
    var original = instance._u
    instance._u = function (slots) {
      try {
        // 2.6.4 ~ 2.6.6
        return original(slots, true)
      } catch (e) {
        // 2.5 / >= 2.6.7
        return original(slots, null, true)
      }
    }
    return function () {
      instance._u = original
    }
  }
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-i18n/dist/vue-i18n.esm.js":
  /*!****************************************************!*\
    !*** ./node_modules/vue-i18n/dist/vue-i18n.esm.js ***!
    \****************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /*!
   * vue-i18n v8.14.0 
   * (c) 2019 kazuya kawaguchi
   * Released under the MIT License.
   */
  /*  */
  
  /**
   * constants
   */
  
  var numberFormatKeys = [
    'style',
    'currency',
    'currencyDisplay',
    'useGrouping',
    'minimumIntegerDigits',
    'minimumFractionDigits',
    'maximumFractionDigits',
    'minimumSignificantDigits',
    'maximumSignificantDigits',
    'localeMatcher',
    'formatMatcher'
  ];
  
  /**
   * utilities
   */
  
  function warn (msg, err) {
    if (typeof console !== 'undefined') {
      console.warn('[vue-i18n] ' + msg);
      /* istanbul ignore if */
      if (err) {
        console.warn(err.stack);
      }
    }
  }
  
  function error (msg, err) {
    if (typeof console !== 'undefined') {
      console.error('[vue-i18n] ' + msg);
      /* istanbul ignore if */
      if (err) {
        console.error(err.stack);
      }
    }
  }
  
  function isObject (obj) {
    return obj !== null && typeof obj === 'object'
  }
  
  var toString = Object.prototype.toString;
  var OBJECT_STRING = '[object Object]';
  function isPlainObject (obj) {
    return toString.call(obj) === OBJECT_STRING
  }
  
  function isNull (val) {
    return val === null || val === undefined
  }
  
  function parseArgs () {
    var args = [], len = arguments.length;
    while ( len-- ) args[ len ] = arguments[ len ];
  
    var locale = null;
    var params = null;
    if (args.length === 1) {
      if (isObject(args[0]) || Array.isArray(args[0])) {
        params = args[0];
      } else if (typeof args[0] === 'string') {
        locale = args[0];
      }
    } else if (args.length === 2) {
      if (typeof args[0] === 'string') {
        locale = args[0];
      }
      /* istanbul ignore if */
      if (isObject(args[1]) || Array.isArray(args[1])) {
        params = args[1];
      }
    }
  
    return { locale: locale, params: params }
  }
  
  function looseClone (obj) {
    return JSON.parse(JSON.stringify(obj))
  }
  
  function remove (arr, item) {
    if (arr.length) {
      var index = arr.indexOf(item);
      if (index > -1) {
        return arr.splice(index, 1)
      }
    }
  }
  
  var hasOwnProperty = Object.prototype.hasOwnProperty;
  function hasOwn (obj, key) {
    return hasOwnProperty.call(obj, key)
  }
  
  function merge (target) {
    var arguments$1 = arguments;
  
    var output = Object(target);
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments$1[i];
      if (source !== undefined && source !== null) {
        var key = (void 0);
        for (key in source) {
          if (hasOwn(source, key)) {
            if (isObject(source[key])) {
              output[key] = merge(output[key], source[key]);
            } else {
              output[key] = source[key];
            }
          }
        }
      }
    }
    return output
  }
  
  function looseEqual (a, b) {
    if (a === b) { return true }
    var isObjectA = isObject(a);
    var isObjectB = isObject(b);
    if (isObjectA && isObjectB) {
      try {
        var isArrayA = Array.isArray(a);
        var isArrayB = Array.isArray(b);
        if (isArrayA && isArrayB) {
          return a.length === b.length && a.every(function (e, i) {
            return looseEqual(e, b[i])
          })
        } else if (!isArrayA && !isArrayB) {
          var keysA = Object.keys(a);
          var keysB = Object.keys(b);
          return keysA.length === keysB.length && keysA.every(function (key) {
            return looseEqual(a[key], b[key])
          })
        } else {
          /* istanbul ignore next */
          return false
        }
      } catch (e) {
        /* istanbul ignore next */
        return false
      }
    } else if (!isObjectA && !isObjectB) {
      return String(a) === String(b)
    } else {
      return false
    }
  }
  
  /*  */
  
  function extend (Vue) {
    if (!Vue.prototype.hasOwnProperty('$i18n')) {
      // $FlowFixMe
      Object.defineProperty(Vue.prototype, '$i18n', {
        get: function get () { return this._i18n }
      });
    }
  
    Vue.prototype.$t = function (key) {
      var values = [], len = arguments.length - 1;
      while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];
  
      var i18n = this.$i18n;
      return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))
    };
  
    Vue.prototype.$tc = function (key, choice) {
      var values = [], len = arguments.length - 2;
      while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];
  
      var i18n = this.$i18n;
      return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))
    };
  
    Vue.prototype.$te = function (key, locale) {
      var i18n = this.$i18n;
      return i18n._te(key, i18n.locale, i18n._getMessages(), locale)
    };
  
    Vue.prototype.$d = function (value) {
      var ref;
  
      var args = [], len = arguments.length - 1;
      while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
      return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))
    };
  
    Vue.prototype.$n = function (value) {
      var ref;
  
      var args = [], len = arguments.length - 1;
      while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
      return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))
    };
  }
  
  /*  */
  
  var mixin = {
    beforeCreate: function beforeCreate () {
      var options = this.$options;
      options.i18n = options.i18n || (options.__i18n ? {} : null);
  
      if (options.i18n) {
        if (options.i18n instanceof VueI18n) {
          // init locale messages via custom blocks
          if (options.__i18n) {
            try {
              var localeMessages = {};
              options.__i18n.forEach(function (resource) {
                localeMessages = merge(localeMessages, JSON.parse(resource));
              });
              Object.keys(localeMessages).forEach(function (locale) {
                options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);
              });
            } catch (e) {
              if (true) {
                warn("Cannot parse locale messages via custom blocks.", e);
              }
            }
          }
          this._i18n = options.i18n;
          this._i18nWatcher = this._i18n.watchI18nData();
        } else if (isPlainObject(options.i18n)) {
          // component local i18n
          if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
            options.i18n.root = this.$root;
            options.i18n.formatter = this.$root.$i18n.formatter;
            options.i18n.fallbackLocale = this.$root.$i18n.fallbackLocale;
            options.i18n.formatFallbackMessages = this.$root.$i18n.formatFallbackMessages;
            options.i18n.silentTranslationWarn = this.$root.$i18n.silentTranslationWarn;
            options.i18n.silentFallbackWarn = this.$root.$i18n.silentFallbackWarn;
            options.i18n.pluralizationRules = this.$root.$i18n.pluralizationRules;
            options.i18n.preserveDirectiveContent = this.$root.$i18n.preserveDirectiveContent;
          }
  
          // init locale messages via custom blocks
          if (options.__i18n) {
            try {
              var localeMessages$1 = {};
              options.__i18n.forEach(function (resource) {
                localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));
              });
              options.i18n.messages = localeMessages$1;
            } catch (e) {
              if (true) {
                warn("Cannot parse locale messages via custom blocks.", e);
              }
            }
          }
  
          var ref = options.i18n;
          var sharedMessages = ref.sharedMessages;
          if (sharedMessages && isPlainObject(sharedMessages)) {
            options.i18n.messages = merge(options.i18n.messages, sharedMessages);
          }
  
          this._i18n = new VueI18n(options.i18n);
          this._i18nWatcher = this._i18n.watchI18nData();
  
          if (options.i18n.sync === undefined || !!options.i18n.sync) {
            this._localeWatcher = this.$i18n.watchLocale();
          }
        } else {
          if (true) {
            warn("Cannot be interpreted 'i18n' option.");
          }
        }
      } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
        // root i18n
        this._i18n = this.$root.$i18n;
      } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {
        // parent i18n
        this._i18n = options.parent.$i18n;
      }
    },
  
    beforeMount: function beforeMount () {
      var options = this.$options;
      options.i18n = options.i18n || (options.__i18n ? {} : null);
  
      if (options.i18n) {
        if (options.i18n instanceof VueI18n) {
          // init locale messages via custom blocks
          this._i18n.subscribeDataChanging(this);
          this._subscribing = true;
        } else if (isPlainObject(options.i18n)) {
          this._i18n.subscribeDataChanging(this);
          this._subscribing = true;
        } else {
          if (true) {
            warn("Cannot be interpreted 'i18n' option.");
          }
        }
      } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
        this._i18n.subscribeDataChanging(this);
        this._subscribing = true;
      } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {
        this._i18n.subscribeDataChanging(this);
        this._subscribing = true;
      }
    },
  
    beforeDestroy: function beforeDestroy () {
      if (!this._i18n) { return }
  
      var self = this;
      this.$nextTick(function () {
        if (self._subscribing) {
          self._i18n.unsubscribeDataChanging(self);
          delete self._subscribing;
        }
  
        if (self._i18nWatcher) {
          self._i18nWatcher();
          self._i18n.destroyVM();
          delete self._i18nWatcher;
        }
  
        if (self._localeWatcher) {
          self._localeWatcher();
          delete self._localeWatcher;
        }
  
        self._i18n = null;
      });
    }
  };
  
  /*  */
  
  var interpolationComponent = {
    name: 'i18n',
    functional: true,
    props: {
      tag: {
        type: String
      },
      path: {
        type: String,
        required: true
      },
      locale: {
        type: String
      },
      places: {
        type: [Array, Object]
      }
    },
    render: function render (h, ref) {
      var data = ref.data;
      var parent = ref.parent;
      var props = ref.props;
      var slots = ref.slots;
  
      var $i18n = parent.$i18n;
      if (!$i18n) {
        if (true) {
          warn('Cannot find VueI18n instance!');
        }
        return
      }
  
      var path = props.path;
      var locale = props.locale;
      var places = props.places;
      var params = slots();
      var children = $i18n.i(
        path,
        locale,
        onlyHasDefaultPlace(params) || places
          ? useLegacyPlaces(params.default, places)
          : params
      );
  
      var tag = props.tag || 'span';
      return tag ? h(tag, data, children) : children
    }
  };
  
  function onlyHasDefaultPlace (params) {
    var prop;
    for (prop in params) {
      if (prop !== 'default') { return false }
    }
    return Boolean(prop)
  }
  
  function useLegacyPlaces (children, places) {
    var params = places ? createParamsFromPlaces(places) : {};
    if (!children) { return params }
  
    var everyPlace = children.every(vnodeHasPlaceAttribute);
    if ( true && everyPlace) {
      warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');
    }
  
    return children.reduce(
      everyPlace ? assignChildPlace : assignChildIndex,
      params
    )
  }
  
  function createParamsFromPlaces (places) {
    if (true) {
      warn('`places` prop is deprecated in next majaor version. Please switch to Vue slots.');
    }
  
    return Array.isArray(places)
      ? places.reduce(assignChildIndex, {})
      : Object.assign({}, places)
  }
  
  function assignChildPlace (params, child) {
    if (child.data && child.data.attrs && child.data.attrs.place) {
      params[child.data.attrs.place] = child;
    }
    return params
  }
  
  function assignChildIndex (params, child, index) {
    params[index] = child;
    return params
  }
  
  function vnodeHasPlaceAttribute (vnode) {
    return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)
  }
  
  /*  */
  
  var numberComponent = {
    name: 'i18n-n',
    functional: true,
    props: {
      tag: {
        type: String,
        default: 'span'
      },
      value: {
        type: Number,
        required: true
      },
      format: {
        type: [String, Object]
      },
      locale: {
        type: String
      }
    },
    render: function render (h, ref) {
      var props = ref.props;
      var parent = ref.parent;
      var data = ref.data;
  
      var i18n = parent.$i18n;
  
      if (!i18n) {
        if (true) {
          warn('Cannot find VueI18n instance!');
        }
        return null
      }
  
      var key = null;
      var options = null;
  
      if (typeof props.format === 'string') {
        key = props.format;
      } else if (isObject(props.format)) {
        if (props.format.key) {
          key = props.format.key;
        }
  
        // Filter out number format options only
        options = Object.keys(props.format).reduce(function (acc, prop) {
          var obj;
  
          if (numberFormatKeys.includes(prop)) {
            return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))
          }
          return acc
        }, null);
      }
  
      var locale = props.locale || i18n.locale;
      var parts = i18n._ntp(props.value, locale, key, options);
  
      var values = parts.map(function (part, index) {
        var obj;
  
        var slot = data.scopedSlots && data.scopedSlots[part.type];
        return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value
      });
  
      return h(props.tag, {
        attrs: data.attrs,
        'class': data['class'],
        staticClass: data.staticClass
      }, values)
    }
  };
  
  /*  */
  
  function bind (el, binding, vnode) {
    if (!assert(el, vnode)) { return }
  
    t(el, binding, vnode);
  }
  
  function update (el, binding, vnode, oldVNode) {
    if (!assert(el, vnode)) { return }
  
    var i18n = vnode.context.$i18n;
    if (localeEqual(el, vnode) &&
      (looseEqual(binding.value, binding.oldValue) &&
       looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }
  
    t(el, binding, vnode);
  }
  
  function unbind (el, binding, vnode, oldVNode) {
    var vm = vnode.context;
    if (!vm) {
      warn('Vue instance does not exists in VNode context');
      return
    }
  
    var i18n = vnode.context.$i18n || {};
    if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {
      el.textContent = '';
    }
    el._vt = undefined;
    delete el['_vt'];
    el._locale = undefined;
    delete el['_locale'];
    el._localeMessage = undefined;
    delete el['_localeMessage'];
  }
  
  function assert (el, vnode) {
    var vm = vnode.context;
    if (!vm) {
      warn('Vue instance does not exists in VNode context');
      return false
    }
  
    if (!vm.$i18n) {
      warn('VueI18n instance does not exists in Vue instance');
      return false
    }
  
    return true
  }
  
  function localeEqual (el, vnode) {
    var vm = vnode.context;
    return el._locale === vm.$i18n.locale
  }
  
  function t (el, binding, vnode) {
    var ref$1, ref$2;
  
    var value = binding.value;
  
    var ref = parseValue(value);
    var path = ref.path;
    var locale = ref.locale;
    var args = ref.args;
    var choice = ref.choice;
    if (!path && !locale && !args) {
      warn('value type not supported');
      return
    }
  
    if (!path) {
      warn('`path` is required in v-t directive');
      return
    }
  
    var vm = vnode.context;
    if (choice) {
      el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));
    } else {
      el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));
    }
    el._locale = vm.$i18n.locale;
    el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);
  }
  
  function parseValue (value) {
    var path;
    var locale;
    var args;
    var choice;
  
    if (typeof value === 'string') {
      path = value;
    } else if (isPlainObject(value)) {
      path = value.path;
      locale = value.locale;
      args = value.args;
      choice = value.choice;
    }
  
    return { path: path, locale: locale, args: args, choice: choice }
  }
  
  function makeParams (locale, args) {
    var params = [];
  
    locale && params.push(locale);
    if (args && (Array.isArray(args) || isPlainObject(args))) {
      params.push(args);
    }
  
    return params
  }
  
  var Vue;
  
  function install (_Vue) {
    /* istanbul ignore if */
    if ( true && install.installed && _Vue === Vue) {
      warn('already installed.');
      return
    }
    install.installed = true;
  
    Vue = _Vue;
  
    var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;
    /* istanbul ignore if */
    if ( true && version < 2) {
      warn(("vue-i18n (" + (install.version) + ") need to use Vue 2.0 or later (Vue: " + (Vue.version) + ")."));
      return
    }
  
    extend(Vue);
    Vue.mixin(mixin);
    Vue.directive('t', { bind: bind, update: update, unbind: unbind });
    Vue.component(interpolationComponent.name, interpolationComponent);
    Vue.component(numberComponent.name, numberComponent);
  
    // use simple mergeStrategies to prevent i18n instance lose '__proto__'
    var strats = Vue.config.optionMergeStrategies;
    strats.i18n = function (parentVal, childVal) {
      return childVal === undefined
        ? parentVal
        : childVal
    };
  }
  
  /*  */
  
  var BaseFormatter = function BaseFormatter () {
    this._caches = Object.create(null);
  };
  
  BaseFormatter.prototype.interpolate = function interpolate (message, values) {
    if (!values) {
      return [message]
    }
    var tokens = this._caches[message];
    if (!tokens) {
      tokens = parse(message);
      this._caches[message] = tokens;
    }
    return compile(tokens, values)
  };
  
  
  
  var RE_TOKEN_LIST_VALUE = /^(?:\d)+/;
  var RE_TOKEN_NAMED_VALUE = /^(?:\w)+/;
  
  function parse (format) {
    var tokens = [];
    var position = 0;
  
    var text = '';
    while (position < format.length) {
      var char = format[position++];
      if (char === '{') {
        if (text) {
          tokens.push({ type: 'text', value: text });
        }
  
        text = '';
        var sub = '';
        char = format[position++];
        while (char !== undefined && char !== '}') {
          sub += char;
          char = format[position++];
        }
        var isClosed = char === '}';
  
        var type = RE_TOKEN_LIST_VALUE.test(sub)
          ? 'list'
          : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)
            ? 'named'
            : 'unknown';
        tokens.push({ value: sub, type: type });
      } else if (char === '%') {
        // when found rails i18n syntax, skip text capture
        if (format[(position)] !== '{') {
          text += char;
        }
      } else {
        text += char;
      }
    }
  
    text && tokens.push({ type: 'text', value: text });
  
    return tokens
  }
  
  function compile (tokens, values) {
    var compiled = [];
    var index = 0;
  
    var mode = Array.isArray(values)
      ? 'list'
      : isObject(values)
        ? 'named'
        : 'unknown';
    if (mode === 'unknown') { return compiled }
  
    while (index < tokens.length) {
      var token = tokens[index];
      switch (token.type) {
        case 'text':
          compiled.push(token.value);
          break
        case 'list':
          compiled.push(values[parseInt(token.value, 10)]);
          break
        case 'named':
          if (mode === 'named') {
            compiled.push((values)[token.value]);
          } else {
            if (true) {
              warn(("Type of token '" + (token.type) + "' and format of value '" + mode + "' don't match!"));
            }
          }
          break
        case 'unknown':
          if (true) {
            warn("Detect 'unknown' type of token!");
          }
          break
      }
      index++;
    }
  
    return compiled
  }
  
  /*  */
  
  /**
   *  Path parser
   *  - Inspired:
   *    Vue.js Path parser
   */
  
  // actions
  var APPEND = 0;
  var PUSH = 1;
  var INC_SUB_PATH_DEPTH = 2;
  var PUSH_SUB_PATH = 3;
  
  // states
  var BEFORE_PATH = 0;
  var IN_PATH = 1;
  var BEFORE_IDENT = 2;
  var IN_IDENT = 3;
  var IN_SUB_PATH = 4;
  var IN_SINGLE_QUOTE = 5;
  var IN_DOUBLE_QUOTE = 6;
  var AFTER_PATH = 7;
  var ERROR = 8;
  
  var pathStateMachine = [];
  
  pathStateMachine[BEFORE_PATH] = {
    'ws': [BEFORE_PATH],
    'ident': [IN_IDENT, APPEND],
    '[': [IN_SUB_PATH],
    'eof': [AFTER_PATH]
  };
  
  pathStateMachine[IN_PATH] = {
    'ws': [IN_PATH],
    '.': [BEFORE_IDENT],
    '[': [IN_SUB_PATH],
    'eof': [AFTER_PATH]
  };
  
  pathStateMachine[BEFORE_IDENT] = {
    'ws': [BEFORE_IDENT],
    'ident': [IN_IDENT, APPEND],
    '0': [IN_IDENT, APPEND],
    'number': [IN_IDENT, APPEND]
  };
  
  pathStateMachine[IN_IDENT] = {
    'ident': [IN_IDENT, APPEND],
    '0': [IN_IDENT, APPEND],
    'number': [IN_IDENT, APPEND],
    'ws': [IN_PATH, PUSH],
    '.': [BEFORE_IDENT, PUSH],
    '[': [IN_SUB_PATH, PUSH],
    'eof': [AFTER_PATH, PUSH]
  };
  
  pathStateMachine[IN_SUB_PATH] = {
    "'": [IN_SINGLE_QUOTE, APPEND],
    '"': [IN_DOUBLE_QUOTE, APPEND],
    '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],
    ']': [IN_PATH, PUSH_SUB_PATH],
    'eof': ERROR,
    'else': [IN_SUB_PATH, APPEND]
  };
  
  pathStateMachine[IN_SINGLE_QUOTE] = {
    "'": [IN_SUB_PATH, APPEND],
    'eof': ERROR,
    'else': [IN_SINGLE_QUOTE, APPEND]
  };
  
  pathStateMachine[IN_DOUBLE_QUOTE] = {
    '"': [IN_SUB_PATH, APPEND],
    'eof': ERROR,
    'else': [IN_DOUBLE_QUOTE, APPEND]
  };
  
  /**
   * Check if an expression is a literal value.
   */
  
  var literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;
  function isLiteral (exp) {
    return literalValueRE.test(exp)
  }
  
  /**
   * Strip quotes from a string
   */
  
  function stripQuotes (str) {
    var a = str.charCodeAt(0);
    var b = str.charCodeAt(str.length - 1);
    return a === b && (a === 0x22 || a === 0x27)
      ? str.slice(1, -1)
      : str
  }
  
  /**
   * Determine the type of a character in a keypath.
   */
  
  function getPathCharType (ch) {
    if (ch === undefined || ch === null) { return 'eof' }
  
    var code = ch.charCodeAt(0);
  
    switch (code) {
      case 0x5B: // [
      case 0x5D: // ]
      case 0x2E: // .
      case 0x22: // "
      case 0x27: // '
        return ch
  
      case 0x5F: // _
      case 0x24: // $
      case 0x2D: // -
        return 'ident'
  
      case 0x09: // Tab
      case 0x0A: // Newline
      case 0x0D: // Return
      case 0xA0:  // No-break space
      case 0xFEFF:  // Byte Order Mark
      case 0x2028:  // Line Separator
      case 0x2029:  // Paragraph Separator
        return 'ws'
    }
  
    return 'ident'
  }
  
  /**
   * Format a subPath, return its plain form if it is
   * a literal string or number. Otherwise prepend the
   * dynamic indicator (*).
   */
  
  function formatSubPath (path) {
    var trimmed = path.trim();
    // invalid leading 0
    if (path.charAt(0) === '0' && isNaN(path)) { return false }
  
    return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed
  }
  
  /**
   * Parse a string path into an array of segments
   */
  
  function parse$1 (path) {
    var keys = [];
    var index = -1;
    var mode = BEFORE_PATH;
    var subPathDepth = 0;
    var c;
    var key;
    var newChar;
    var type;
    var transition;
    var action;
    var typeMap;
    var actions = [];
  
    actions[PUSH] = function () {
      if (key !== undefined) {
        keys.push(key);
        key = undefined;
      }
    };
  
    actions[APPEND] = function () {
      if (key === undefined) {
        key = newChar;
      } else {
        key += newChar;
      }
    };
  
    actions[INC_SUB_PATH_DEPTH] = function () {
      actions[APPEND]();
      subPathDepth++;
    };
  
    actions[PUSH_SUB_PATH] = function () {
      if (subPathDepth > 0) {
        subPathDepth--;
        mode = IN_SUB_PATH;
        actions[APPEND]();
      } else {
        subPathDepth = 0;
        key = formatSubPath(key);
        if (key === false) {
          return false
        } else {
          actions[PUSH]();
        }
      }
    };
  
    function maybeUnescapeQuote () {
      var nextChar = path[index + 1];
      if ((mode === IN_SINGLE_QUOTE && nextChar === "'") ||
        (mode === IN_DOUBLE_QUOTE && nextChar === '"')) {
        index++;
        newChar = '\\' + nextChar;
        actions[APPEND]();
        return true
      }
    }
  
    while (mode !== null) {
      index++;
      c = path[index];
  
      if (c === '\\' && maybeUnescapeQuote()) {
        continue
      }
  
      type = getPathCharType(c);
      typeMap = pathStateMachine[mode];
      transition = typeMap[type] || typeMap['else'] || ERROR;
  
      if (transition === ERROR) {
        return // parse error
      }
  
      mode = transition[0];
      action = actions[transition[1]];
      if (action) {
        newChar = transition[2];
        newChar = newChar === undefined
          ? c
          : newChar;
        if (action() === false) {
          return
        }
      }
  
      if (mode === AFTER_PATH) {
        return keys
      }
    }
  }
  
  
  
  
  
  var I18nPath = function I18nPath () {
    this._cache = Object.create(null);
  };
  
  /**
   * External parse that check for a cache hit first
   */
  I18nPath.prototype.parsePath = function parsePath (path) {
    var hit = this._cache[path];
    if (!hit) {
      hit = parse$1(path);
      if (hit) {
        this._cache[path] = hit;
      }
    }
    return hit || []
  };
  
  /**
   * Get path value from path string
   */
  I18nPath.prototype.getPathValue = function getPathValue (obj, path) {
    if (!isObject(obj)) { return null }
  
    var paths = this.parsePath(path);
    if (paths.length === 0) {
      return null
    } else {
      var length = paths.length;
      var last = obj;
      var i = 0;
      while (i < length) {
        var value = last[paths[i]];
        if (value === undefined) {
          return null
        }
        last = value;
        i++;
      }
  
      return last
    }
  };
  
  /*  */
  
  
  
  var htmlTagMatcher = /<\/?[\w\s="/.':;#-\/]+>/;
  var linkKeyMatcher = /(?:@(?:\.[a-z]+)?:(?:[\w\-_|.]+|\([\w\-_|.]+\)))/g;
  var linkKeyPrefixMatcher = /^@(?:\.([a-z]+))?:/;
  var bracketsMatcher = /[()]/g;
  var formatters = {
    'upper': function (str) { return str.toLocaleUpperCase(); },
    'lower': function (str) { return str.toLocaleLowerCase(); }
  };
  
  var defaultFormatter = new BaseFormatter();
  
  var VueI18n = function VueI18n (options) {
    var this$1 = this;
    if ( options === void 0 ) options = {};
  
    // Auto install if it is not done yet and `window` has `Vue`.
    // To allow users to avoid auto-installation in some cases,
    // this code should be placed here. See #290
    /* istanbul ignore if */
    if (!Vue && typeof window !== 'undefined' && window.Vue) {
      install(window.Vue);
    }
  
    var locale = options.locale || 'en-US';
    var fallbackLocale = options.fallbackLocale || 'en-US';
    var messages = options.messages || {};
    var dateTimeFormats = options.dateTimeFormats || {};
    var numberFormats = options.numberFormats || {};
  
    this._vm = null;
    this._formatter = options.formatter || defaultFormatter;
    this._missing = options.missing || null;
    this._root = options.root || null;
    this._sync = options.sync === undefined ? true : !!options.sync;
    this._fallbackRoot = options.fallbackRoot === undefined
      ? true
      : !!options.fallbackRoot;
    this._formatFallbackMessages = options.formatFallbackMessages === undefined
      ? false
      : !!options.formatFallbackMessages;
    this._silentTranslationWarn = options.silentTranslationWarn === undefined
      ? false
      : options.silentTranslationWarn;
    this._silentFallbackWarn = options.silentFallbackWarn === undefined
      ? false
      : !!options.silentFallbackWarn;
    this._dateTimeFormatters = {};
    this._numberFormatters = {};
    this._path = new I18nPath();
    this._dataListeners = [];
    this._preserveDirectiveContent = options.preserveDirectiveContent === undefined
      ? false
      : !!options.preserveDirectiveContent;
    this.pluralizationRules = options.pluralizationRules || {};
    this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';
  
    this._exist = function (message, key) {
      if (!message || !key) { return false }
      if (!isNull(this$1._path.getPathValue(message, key))) { return true }
      // fallback for flat key
      if (message[key]) { return true }
      return false
    };
  
    if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
      Object.keys(messages).forEach(function (locale) {
        this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);
      });
    }
  
    this._initVM({
      locale: locale,
      fallbackLocale: fallbackLocale,
      messages: messages,
      dateTimeFormats: dateTimeFormats,
      numberFormats: numberFormats
    });
  };
  
  var prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true } };
  
  VueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {
    var paths = [];
  
    var fn = function (level, locale, message, paths) {
      if (isPlainObject(message)) {
        Object.keys(message).forEach(function (key) {
          var val = message[key];
          if (isPlainObject(val)) {
            paths.push(key);
            paths.push('.');
            fn(level, locale, val, paths);
            paths.pop();
            paths.pop();
          } else {
            paths.push(key);
            fn(level, locale, val, paths);
            paths.pop();
          }
        });
      } else if (Array.isArray(message)) {
        message.forEach(function (item, index) {
          if (isPlainObject(item)) {
            paths.push(("[" + index + "]"));
            paths.push('.');
            fn(level, locale, item, paths);
            paths.pop();
            paths.pop();
          } else {
            paths.push(("[" + index + "]"));
            fn(level, locale, item, paths);
            paths.pop();
          }
        });
      } else if (typeof message === 'string') {
        var ret = htmlTagMatcher.test(message);
        if (ret) {
          var msg = "Detected HTML in message '" + message + "' of keypath '" + (paths.join('')) + "' at '" + locale + "'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp";
          if (level === 'warn') {
            warn(msg);
          } else if (level === 'error') {
            error(msg);
          }
        }
      }
    };
  
    fn(level, locale, message, paths);
  };
  
  VueI18n.prototype._initVM = function _initVM (data) {
    var silent = Vue.config.silent;
    Vue.config.silent = true;
    this._vm = new Vue({ data: data });
    Vue.config.silent = silent;
  };
  
  VueI18n.prototype.destroyVM = function destroyVM () {
    this._vm.$destroy();
  };
  
  VueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {
    this._dataListeners.push(vm);
  };
  
  VueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {
    remove(this._dataListeners, vm);
  };
  
  VueI18n.prototype.watchI18nData = function watchI18nData () {
    var self = this;
    return this._vm.$watch('$data', function () {
      var i = self._dataListeners.length;
      while (i--) {
        Vue.nextTick(function () {
          self._dataListeners[i] && self._dataListeners[i].$forceUpdate();
        });
      }
    }, { deep: true })
  };
  
  VueI18n.prototype.watchLocale = function watchLocale () {
    /* istanbul ignore if */
    if (!this._sync || !this._root) { return null }
    var target = this._vm;
    return this._root.$i18n.vm.$watch('locale', function (val) {
      target.$set(target, 'locale', val);
      target.$forceUpdate();
    }, { immediate: true })
  };
  
  prototypeAccessors.vm.get = function () { return this._vm };
  
  prototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };
  prototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };
  prototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };
  prototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };
  
  prototypeAccessors.locale.get = function () { return this._vm.locale };
  prototypeAccessors.locale.set = function (locale) {
    this._vm.$set(this._vm, 'locale', locale);
  };
  
  prototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };
  prototypeAccessors.fallbackLocale.set = function (locale) {
    this._vm.$set(this._vm, 'fallbackLocale', locale);
  };
  
  prototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };
  prototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };
  
  prototypeAccessors.missing.get = function () { return this._missing };
  prototypeAccessors.missing.set = function (handler) { this._missing = handler; };
  
  prototypeAccessors.formatter.get = function () { return this._formatter };
  prototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };
  
  prototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };
  prototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };
  
  prototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };
  prototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };
  
  prototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };
  prototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };
  
  prototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };
  prototypeAccessors.warnHtmlInMessage.set = function (level) {
      var this$1 = this;
  
    var orgLevel = this._warnHtmlInMessage;
    this._warnHtmlInMessage = level;
    if (orgLevel !== level && (level === 'warn' || level === 'error')) {
      var messages = this._getMessages();
      Object.keys(messages).forEach(function (locale) {
        this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);
      });
    }
  };
  
  VueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };
  VueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };
  VueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };
  
  VueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values) {
    if (!isNull(result)) { return result }
    if (this._missing) {
      var missingRet = this._missing.apply(null, [locale, key, vm, values]);
      if (typeof missingRet === 'string') {
        return missingRet
      }
    } else {
      if ( true && !this._isSilentTranslationWarn(key)) {
        warn(
          "Cannot translate the value of keypath '" + key + "'. " +
          'Use the value of keypath as default.'
        );
      }
    }
  
    if (this._formatFallbackMessages) {
      var parsedArgs = parseArgs.apply(void 0, values);
      return this._render(key, 'string', parsedArgs.params, key)
    } else {
      return key
    }
  };
  
  VueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {
    return !val && !isNull(this._root) && this._fallbackRoot
  };
  
  VueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {
    return this._silentFallbackWarn instanceof RegExp
      ? this._silentFallbackWarn.test(key)
      : this._silentFallbackWarn
  };
  
  VueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {
    return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)
  };
  
  VueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {
    return this._silentTranslationWarn instanceof RegExp
      ? this._silentTranslationWarn.test(key)
      : this._silentTranslationWarn
  };
  
  VueI18n.prototype._interpolate = function _interpolate (
    locale,
    message,
    key,
    host,
    interpolateMode,
    values,
    visitedLinkStack
  ) {
    if (!message) { return null }
  
    var pathRet = this._path.getPathValue(message, key);
    if (Array.isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }
  
    var ret;
    if (isNull(pathRet)) {
      /* istanbul ignore else */
      if (isPlainObject(message)) {
        ret = message[key];
        if (typeof ret !== 'string') {
          if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {
            warn(("Value of key '" + key + "' is not a string!"));
          }
          return null
        }
      } else {
        return null
      }
    } else {
      /* istanbul ignore else */
      if (typeof pathRet === 'string') {
        ret = pathRet;
      } else {
        if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {
          warn(("Value of key '" + key + "' is not a string!"));
        }
        return null
      }
    }
  
    // Check for the existence of links within the translated string
    if (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0) {
      ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);
    }
  
    return this._render(ret, interpolateMode, values, key)
  };
  
  VueI18n.prototype._link = function _link (
    locale,
    message,
    str,
    host,
    interpolateMode,
    values,
    visitedLinkStack
  ) {
    var ret = str;
  
    // Match all the links within the local
    // We are going to replace each of
    // them with its translation
    var matches = ret.match(linkKeyMatcher);
    for (var idx in matches) {
      // ie compatible: filter custom array
      // prototype method
      if (!matches.hasOwnProperty(idx)) {
        continue
      }
      var link = matches[idx];
      var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);
      var linkPrefix = linkKeyPrefixMatches[0];
        var formatterName = linkKeyPrefixMatches[1];
  
      // Remove the leading @:, @.case: and the brackets
      var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');
  
      if (visitedLinkStack.includes(linkPlaceholder)) {
        if (true) {
          warn(("Circular reference found. \"" + link + "\" is already visited in the chain of " + (visitedLinkStack.reverse().join(' <- '))));
        }
        return ret
      }
      visitedLinkStack.push(linkPlaceholder);
  
      // Translate the link
      var translated = this._interpolate(
        locale, message, linkPlaceholder, host,
        interpolateMode === 'raw' ? 'string' : interpolateMode,
        interpolateMode === 'raw' ? undefined : values,
        visitedLinkStack
      );
  
      if (this._isFallbackRoot(translated)) {
        if ( true && !this._isSilentTranslationWarn(linkPlaceholder)) {
          warn(("Fall back to translate the link placeholder '" + linkPlaceholder + "' with root locale."));
        }
        /* istanbul ignore if */
        if (!this._root) { throw Error('unexpected error') }
        var root = this._root.$i18n;
        translated = root._translate(
          root._getMessages(), root.locale, root.fallbackLocale,
          linkPlaceholder, host, interpolateMode, values
        );
      }
      translated = this._warnDefault(
        locale, linkPlaceholder, translated, host,
        Array.isArray(values) ? values : [values]
      );
      if (formatters.hasOwnProperty(formatterName)) {
        translated = formatters[formatterName](translated);
      }
  
      visitedLinkStack.pop();
  
      // Replace the link with the translated
      ret = !translated ? ret : ret.replace(link, translated);
    }
  
    return ret
  };
  
  VueI18n.prototype._render = function _render (message, interpolateMode, values, path) {
    var ret = this._formatter.interpolate(message, values, path);
  
    // If the custom formatter refuses to work - apply the default one
    if (!ret) {
      ret = defaultFormatter.interpolate(message, values, path);
    }
  
    // if interpolateMode is **not** 'string' ('row'),
    // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter
    return interpolateMode === 'string' ? ret.join('') : ret
  };
  
  VueI18n.prototype._translate = function _translate (
    messages,
    locale,
    fallback,
    key,
    host,
    interpolateMode,
    args
  ) {
    var res =
      this._interpolate(locale, messages[locale], key, host, interpolateMode, args, [key]);
    if (!isNull(res)) { return res }
  
    res = this._interpolate(fallback, messages[fallback], key, host, interpolateMode, args, [key]);
    if (!isNull(res)) {
      if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
        warn(("Fall back to translate the keypath '" + key + "' with '" + fallback + "' locale."));
      }
      return res
    } else {
      return null
    }
  };
  
  VueI18n.prototype._t = function _t (key, _locale, messages, host) {
      var ref;
  
      var values = [], len = arguments.length - 4;
      while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];
    if (!key) { return '' }
  
    var parsedArgs = parseArgs.apply(void 0, values);
    var locale = parsedArgs.locale || _locale;
  
    var ret = this._translate(
      messages, locale, this.fallbackLocale, key,
      host, 'string', parsedArgs.params
    );
    if (this._isFallbackRoot(ret)) {
      if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
        warn(("Fall back to translate the keypath '" + key + "' with root locale."));
      }
      /* istanbul ignore if */
      if (!this._root) { throw Error('unexpected error') }
      return (ref = this._root).$t.apply(ref, [ key ].concat( values ))
    } else {
      return this._warnDefault(locale, key, ret, host, values)
    }
  };
  
  VueI18n.prototype.t = function t (key) {
      var ref;
  
      var values = [], len = arguments.length - 1;
      while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];
    return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))
  };
  
  VueI18n.prototype._i = function _i (key, locale, messages, host, values) {
    var ret =
      this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);
    if (this._isFallbackRoot(ret)) {
      if ( true && !this._isSilentTranslationWarn(key)) {
        warn(("Fall back to interpolate the keypath '" + key + "' with root locale."));
      }
      if (!this._root) { throw Error('unexpected error') }
      return this._root.$i18n.i(key, locale, values)
    } else {
      return this._warnDefault(locale, key, ret, host, [values])
    }
  };
  
  VueI18n.prototype.i = function i (key, locale, values) {
    /* istanbul ignore if */
    if (!key) { return '' }
  
    if (typeof locale !== 'string') {
      locale = this.locale;
    }
  
    return this._i(key, locale, this._getMessages(), null, values)
  };
  
  VueI18n.prototype._tc = function _tc (
    key,
    _locale,
    messages,
    host,
    choice
  ) {
      var ref;
  
      var values = [], len = arguments.length - 5;
      while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];
    if (!key) { return '' }
    if (choice === undefined) {
      choice = 1;
    }
  
    var predefined = { 'count': choice, 'n': choice };
    var parsedArgs = parseArgs.apply(void 0, values);
    parsedArgs.params = Object.assign(predefined, parsedArgs.params);
    values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];
    return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)
  };
  
  VueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {
    /* istanbul ignore if */
    if (!message && typeof message !== 'string') { return null }
    var choices = message.split('|');
  
    choice = this.getChoiceIndex(choice, choices.length);
    if (!choices[choice]) { return message }
    return choices[choice].trim()
  };
  
  /**
   * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`
   * @param choicesLength {number} an overall amount of available choices
   * @returns a final choice index
  */
  VueI18n.prototype.getChoiceIndex = function getChoiceIndex (choice, choicesLength) {
    // Default (old) getChoiceIndex implementation - english-compatible
    var defaultImpl = function (_choice, _choicesLength) {
      _choice = Math.abs(_choice);
  
      if (_choicesLength === 2) {
        return _choice
          ? _choice > 1
            ? 1
            : 0
          : 1
      }
  
      return _choice ? Math.min(_choice, 2) : 0
    };
  
    if (this.locale in this.pluralizationRules) {
      return this.pluralizationRules[this.locale].apply(this, [choice, choicesLength])
    } else {
      return defaultImpl(choice, choicesLength)
    }
  };
  
  VueI18n.prototype.tc = function tc (key, choice) {
      var ref;
  
      var values = [], len = arguments.length - 2;
      while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];
    return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))
  };
  
  VueI18n.prototype._te = function _te (key, locale, messages) {
      var args = [], len = arguments.length - 3;
      while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];
  
    var _locale = parseArgs.apply(void 0, args).locale || locale;
    return this._exist(messages[_locale], key)
  };
  
  VueI18n.prototype.te = function te (key, locale) {
    return this._te(key, this.locale, this._getMessages(), locale)
  };
  
  VueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {
    return looseClone(this._vm.messages[locale] || {})
  };
  
  VueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {
    if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
      this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);
      if (this._warnHtmlInMessage === 'error') { return }
    }
    this._vm.$set(this._vm.messages, locale, message);
  };
  
  VueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {
    if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
      this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);
      if (this._warnHtmlInMessage === 'error') { return }
    }
    this._vm.$set(this._vm.messages, locale, merge(this._vm.messages[locale] || {}, message));
  };
  
  VueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {
    return looseClone(this._vm.dateTimeFormats[locale] || {})
  };
  
  VueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {
    this._vm.$set(this._vm.dateTimeFormats, locale, format);
  };
  
  VueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {
    this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));
  };
  
  VueI18n.prototype._localizeDateTime = function _localizeDateTime (
    value,
    locale,
    fallback,
    dateTimeFormats,
    key
  ) {
    var _locale = locale;
    var formats = dateTimeFormats[_locale];
  
    // fallback locale
    if (isNull(formats) || isNull(formats[key])) {
      if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
        warn(("Fall back to '" + fallback + "' datetime formats from '" + locale + "' datetime formats."));
      }
      _locale = fallback;
      formats = dateTimeFormats[_locale];
    }
  
    if (isNull(formats) || isNull(formats[key])) {
      return null
    } else {
      var format = formats[key];
      var id = _locale + "__" + key;
      var formatter = this._dateTimeFormatters[id];
      if (!formatter) {
        formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);
      }
      return formatter.format(value)
    }
  };
  
  VueI18n.prototype._d = function _d (value, locale, key) {
    /* istanbul ignore if */
    if ( true && !VueI18n.availabilities.dateTimeFormat) {
      warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');
      return ''
    }
  
    if (!key) {
      return new Intl.DateTimeFormat(locale).format(value)
    }
  
    var ret =
      this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);
    if (this._isFallbackRoot(ret)) {
      if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
        warn(("Fall back to datetime localization of root: key '" + key + "'."));
      }
      /* istanbul ignore if */
      if (!this._root) { throw Error('unexpected error') }
      return this._root.$i18n.d(value, key, locale)
    } else {
      return ret || ''
    }
  };
  
  VueI18n.prototype.d = function d (value) {
      var args = [], len = arguments.length - 1;
      while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  
    var locale = this.locale;
    var key = null;
  
    if (args.length === 1) {
      if (typeof args[0] === 'string') {
        key = args[0];
      } else if (isObject(args[0])) {
        if (args[0].locale) {
          locale = args[0].locale;
        }
        if (args[0].key) {
          key = args[0].key;
        }
      }
    } else if (args.length === 2) {
      if (typeof args[0] === 'string') {
        key = args[0];
      }
      if (typeof args[1] === 'string') {
        locale = args[1];
      }
    }
  
    return this._d(value, locale, key)
  };
  
  VueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {
    return looseClone(this._vm.numberFormats[locale] || {})
  };
  
  VueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {
    this._vm.$set(this._vm.numberFormats, locale, format);
  };
  
  VueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {
    this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));
  };
  
  VueI18n.prototype._getNumberFormatter = function _getNumberFormatter (
    value,
    locale,
    fallback,
    numberFormats,
    key,
    options
  ) {
    var _locale = locale;
    var formats = numberFormats[_locale];
  
    // fallback locale
    if (isNull(formats) || isNull(formats[key])) {
      if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
        warn(("Fall back to '" + fallback + "' number formats from '" + locale + "' number formats."));
      }
      _locale = fallback;
      formats = numberFormats[_locale];
    }
  
    if (isNull(formats) || isNull(formats[key])) {
      return null
    } else {
      var format = formats[key];
  
      var formatter;
      if (options) {
        // If options specified - create one time number formatter
        formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));
      } else {
        var id = _locale + "__" + key;
        formatter = this._numberFormatters[id];
        if (!formatter) {
          formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);
        }
      }
      return formatter
    }
  };
  
  VueI18n.prototype._n = function _n (value, locale, key, options) {
    /* istanbul ignore if */
    if (!VueI18n.availabilities.numberFormat) {
      if (true) {
        warn('Cannot format a Number value due to not supported Intl.NumberFormat.');
      }
      return ''
    }
  
    if (!key) {
      var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);
      return nf.format(value)
    }
  
    var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);
    var ret = formatter && formatter.format(value);
    if (this._isFallbackRoot(ret)) {
      if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
        warn(("Fall back to number localization of root: key '" + key + "'."));
      }
      /* istanbul ignore if */
      if (!this._root) { throw Error('unexpected error') }
      return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))
    } else {
      return ret || ''
    }
  };
  
  VueI18n.prototype.n = function n (value) {
      var args = [], len = arguments.length - 1;
      while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
  
    var locale = this.locale;
    var key = null;
    var options = null;
  
    if (args.length === 1) {
      if (typeof args[0] === 'string') {
        key = args[0];
      } else if (isObject(args[0])) {
        if (args[0].locale) {
          locale = args[0].locale;
        }
        if (args[0].key) {
          key = args[0].key;
        }
  
        // Filter out number format options only
        options = Object.keys(args[0]).reduce(function (acc, key) {
            var obj;
  
          if (numberFormatKeys.includes(key)) {
            return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))
          }
          return acc
        }, null);
      }
    } else if (args.length === 2) {
      if (typeof args[0] === 'string') {
        key = args[0];
      }
      if (typeof args[1] === 'string') {
        locale = args[1];
      }
    }
  
    return this._n(value, locale, key, options)
  };
  
  VueI18n.prototype._ntp = function _ntp (value, locale, key, options) {
    /* istanbul ignore if */
    if (!VueI18n.availabilities.numberFormat) {
      if (true) {
        warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');
      }
      return []
    }
  
    if (!key) {
      var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);
      return nf.formatToParts(value)
    }
  
    var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);
    var ret = formatter && formatter.formatToParts(value);
    if (this._isFallbackRoot(ret)) {
      if ( true && !this._isSilentTranslationWarn(key)) {
        warn(("Fall back to format number to parts of root: key '" + key + "' ."));
      }
      /* istanbul ignore if */
      if (!this._root) { throw Error('unexpected error') }
      return this._root.$i18n._ntp(value, locale, key, options)
    } else {
      return ret || []
    }
  };
  
  Object.defineProperties( VueI18n.prototype, prototypeAccessors );
  
  var availabilities;
  // $FlowFixMe
  Object.defineProperty(VueI18n, 'availabilities', {
    get: function get () {
      if (!availabilities) {
        var intlDefined = typeof Intl !== 'undefined';
        availabilities = {
          dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',
          numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'
        };
      }
  
      return availabilities
    }
  });
  
  VueI18n.install = install;
  VueI18n.version = '8.14.0';
  
  /* harmony default export */ __webpack_exports__["default"] = (VueI18n);
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=template&id=beb6e31c&":
  /*!*************************************************************************************************************************************************************************************************************************************!*\
    !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=template&id=beb6e31c& ***!
    \*************************************************************************************************************************************************************************************************************************************/
  /*! exports provided: render, staticRenderFns */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  var render = function() {
    var _vm = this
    var _h = _vm.$createElement
    var _c = _vm._self._c || _h
    return _c("div", {
      attrs: {
        id: "particles-js",
        color: _vm.color,
        particleOpacity: _vm.particleOpacity,
        linesColor: _vm.linesColor,
        particlesNumber: _vm.particlesNumber,
        shapeType: _vm.shapeType,
        particleSize: _vm.particleSize,
        linesWidth: _vm.linesWidth,
        lineLinked: _vm.lineLinked,
        lineOpacity: _vm.lineOpacity,
        linesDistance: _vm.linesDistance,
        moveSpeed: _vm.moveSpeed,
        hoverEffect: _vm.hoverEffect,
        hoverMode: _vm.hoverMode,
        clickEffect: _vm.clickEffect,
        clickMode: _vm.clickMode
      }
    })
  }
  var staticRenderFns = []
  render._withStripped = true
  
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-no-ssr/dist/vue-no-ssr.common.js":
  /*!***********************************************************!*\
    !*** ./node_modules/vue-no-ssr/dist/vue-no-ssr.common.js ***!
    \***********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  /*!
   * vue-no-ssr v1.1.1
   * (c) 2018-present egoist <0x142857@gmail.com>
   * Released under the MIT License.
   */
  
  
  var index = {
    name: 'NoSsr',
    functional: true,
    props: {
      placeholder: String,
      placeholderTag: {
        type: String,
        default: 'div'
      }
    },
    render: function render(h, ref) {
      var parent = ref.parent;
      var slots = ref.slots;
      var props = ref.props;
  
      var ref$1 = slots();
      var defaultSlot = ref$1.default; if ( defaultSlot === void 0 ) defaultSlot = [];
      var placeholderSlot = ref$1.placeholder;
  
      if (parent._isMounted) {
        return defaultSlot
      }
  
      parent.$once('hook:mounted', function () {
        parent.$forceUpdate();
      });
  
      if (props.placeholderTag && (props.placeholder || placeholderSlot)) {
        return h(
          props.placeholderTag,
          {
            class: ['no-ssr-placeholder']
          },
          props.placeholder || placeholderSlot
        )
      }
  
      // Return a placeholder element for each child in the default slot
      // Or if no children return a single placeholder
      return defaultSlot.length > 0 ? defaultSlot.map(function () { return h(false); }) : h(false)
    }
  };
  
  module.exports = index;
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-particles/src/vue-particles/index.js":
  /*!***************************************************************!*\
    !*** ./node_modules/vue-particles/src/vue-particles/index.js ***!
    \***************************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony import */ var _vue_particles_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vue-particles.vue */ "./node_modules/vue-particles/src/vue-particles/vue-particles.vue");
  /* eslint-disable */
  
  
  const VueParticles = {
  
      install (Vue, options) {
          Vue.component('vue-particles', _vue_particles_vue__WEBPACK_IMPORTED_MODULE_0__["default"])
      }
  
  }
  
  /* harmony default export */ __webpack_exports__["default"] = (VueParticles);
  /* eslint-disable */
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-particles/src/vue-particles/vue-particles.vue":
  /*!************************************************************************!*\
    !*** ./node_modules/vue-particles/src/vue-particles/vue-particles.vue ***!
    \************************************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony import */ var _vue_particles_vue_vue_type_template_id_beb6e31c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vue-particles.vue?vue&type=template&id=beb6e31c& */ "./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=template&id=beb6e31c&");
  /* harmony import */ var _vue_particles_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vue-particles.vue?vue&type=script&lang=js& */ "./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=script&lang=js&");
  /* empty/unused harmony star reexport *//* harmony import */ var _vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
  
  
  
  
  
  /* normalize component */
  
  var component = Object(_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
    _vue_particles_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
    _vue_particles_vue_vue_type_template_id_beb6e31c___WEBPACK_IMPORTED_MODULE_0__["render"],
    _vue_particles_vue_vue_type_template_id_beb6e31c___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
    false,
    null,
    null,
    null
    
  )
  
  /* hot reload */
  if (true) {
    var api = __webpack_require__(/*! ./node_modules/vue-hot-reload-api/dist/index.js */ "./node_modules/vue-hot-reload-api/dist/index.js")
    api.install(__webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"))
    if (api.compatible) {
      module.hot.accept()
      if (!api.isRecorded('beb6e31c')) {
        api.createRecord('beb6e31c', component.options)
      } else {
        api.reload('beb6e31c', component.options)
      }
      module.hot.accept(/*! ./vue-particles.vue?vue&type=template&id=beb6e31c& */ "./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=template&id=beb6e31c&", function(__WEBPACK_OUTDATED_DEPENDENCIES__) { /* harmony import */ _vue_particles_vue_vue_type_template_id_beb6e31c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vue-particles.vue?vue&type=template&id=beb6e31c& */ "./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=template&id=beb6e31c&");
  (function () {
        api.rerender('beb6e31c', {
          render: _vue_particles_vue_vue_type_template_id_beb6e31c___WEBPACK_IMPORTED_MODULE_0__["render"],
          staticRenderFns: _vue_particles_vue_vue_type_template_id_beb6e31c___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]
        })
      })(__WEBPACK_OUTDATED_DEPENDENCIES__); }.bind(this))
    }
  }
  component.options.__file = "node_modules/vue-particles/src/vue-particles/vue-particles.vue"
  /* harmony default export */ __webpack_exports__["default"] = (component.exports);
  
  /***/ }),
  
  /***/ "./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=script&lang=js&":
  /*!*************************************************************************************************!*\
    !*** ./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=script&lang=js& ***!
    \*************************************************************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony import */ var _babel_loader_lib_index_js_ref_2_0_vue_loader_lib_index_js_vue_loader_options_vue_particles_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../babel-loader/lib??ref--2-0!../../../vue-loader/lib??vue-loader-options!./vue-particles.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=script&lang=js&");
  /* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_babel_loader_lib_index_js_ref_2_0_vue_loader_lib_index_js_vue_loader_options_vue_particles_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
  
  /***/ }),
  
  /***/ "./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=template&id=beb6e31c&":
  /*!*******************************************************************************************************!*\
    !*** ./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=template&id=beb6e31c& ***!
    \*******************************************************************************************************/
  /*! exports provided: render, staticRenderFns */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony import */ var _vue_loader_lib_loaders_templateLoader_js_vue_loader_options_vue_loader_lib_index_js_vue_loader_options_vue_particles_vue_vue_type_template_id_beb6e31c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../vue-loader/lib??vue-loader-options!./vue-particles.vue?vue&type=template&id=beb6e31c& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-particles/src/vue-particles/vue-particles.vue?vue&type=template&id=beb6e31c&");
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _vue_loader_lib_loaders_templateLoader_js_vue_loader_options_vue_loader_lib_index_js_vue_loader_options_vue_particles_vue_vue_type_template_id_beb6e31c___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _vue_loader_lib_loaders_templateLoader_js_vue_loader_options_vue_loader_lib_index_js_vue_loader_options_vue_particles_vue_vue_type_template_id_beb6e31c___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-style-loader/lib/addStylesClient.js":
  /*!**************************************************************!*\
    !*** ./node_modules/vue-style-loader/lib/addStylesClient.js ***!
    \**************************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addStylesClient; });
  /* harmony import */ var _listToStyles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./listToStyles */ "./node_modules/vue-style-loader/lib/listToStyles.js");
  /*
    MIT License http://www.opensource.org/licenses/mit-license.php
    Author Tobias Koppers @sokra
    Modified by Evan You @yyx990803
  */
  
  
  
  var hasDocument = typeof document !== 'undefined'
  
  if (typeof DEBUG !== 'undefined' && DEBUG) {
    if (!hasDocument) {
      throw new Error(
      'vue-style-loader cannot be used in a non-browser environment. ' +
      "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
    ) }
  }
  
  /*
  type StyleObject = {
    id: number;
    parts: Array<StyleObjectPart>
  }
  
  type StyleObjectPart = {
    css: string;
    media: string;
    sourceMap: ?string
  }
  */
  
  var stylesInDom = {/*
    [id: number]: {
      id: number,
      refs: number,
      parts: Array<(obj?: StyleObjectPart) => void>
    }
  */}
  
  var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
  var singletonElement = null
  var singletonCounter = 0
  var isProduction = false
  var noop = function () {}
  var options = null
  var ssrIdKey = 'data-vue-ssr-id'
  
  // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
  // tags it will allow on a page
  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
  
  function addStylesClient (parentId, list, _isProduction, _options) {
    isProduction = _isProduction
  
    options = _options || {}
  
    var styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__["default"])(parentId, list)
    addStylesToDom(styles)
  
    return function update (newList) {
      var mayRemove = []
      for (var i = 0; i < styles.length; i++) {
        var item = styles[i]
        var domStyle = stylesInDom[item.id]
        domStyle.refs--
        mayRemove.push(domStyle)
      }
      if (newList) {
        styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__["default"])(parentId, newList)
        addStylesToDom(styles)
      } else {
        styles = []
      }
      for (var i = 0; i < mayRemove.length; i++) {
        var domStyle = mayRemove[i]
        if (domStyle.refs === 0) {
          for (var j = 0; j < domStyle.parts.length; j++) {
            domStyle.parts[j]()
          }
          delete stylesInDom[domStyle.id]
        }
      }
    }
  }
  
  function addStylesToDom (styles /* Array<StyleObject> */) {
    for (var i = 0; i < styles.length; i++) {
      var item = styles[i]
      var domStyle = stylesInDom[item.id]
      if (domStyle) {
        domStyle.refs++
        for (var j = 0; j < domStyle.parts.length; j++) {
          domStyle.parts[j](item.parts[j])
        }
        for (; j < item.parts.length; j++) {
          domStyle.parts.push(addStyle(item.parts[j]))
        }
        if (domStyle.parts.length > item.parts.length) {
          domStyle.parts.length = item.parts.length
        }
      } else {
        var parts = []
        for (var j = 0; j < item.parts.length; j++) {
          parts.push(addStyle(item.parts[j]))
        }
        stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
      }
    }
  }
  
  function createStyleElement () {
    var styleElement = document.createElement('style')
    styleElement.type = 'text/css'
    head.appendChild(styleElement)
    return styleElement
  }
  
  function addStyle (obj /* StyleObjectPart */) {
    var update, remove
    var styleElement = document.querySelector('style[' + ssrIdKey + '~="' + obj.id + '"]')
  
    if (styleElement) {
      if (isProduction) {
        // has SSR styles and in production mode.
        // simply do nothing.
        return noop
      } else {
        // has SSR styles but in dev mode.
        // for some reason Chrome can't handle source map in server-rendered
        // style tags - source maps in <style> only works if the style tag is
        // created and inserted dynamically. So we remove the server rendered
        // styles and inject new ones.
        styleElement.parentNode.removeChild(styleElement)
      }
    }
  
    if (isOldIE) {
      // use singleton mode for IE9.
      var styleIndex = singletonCounter++
      styleElement = singletonElement || (singletonElement = createStyleElement())
      update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
      remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
    } else {
      // use multi-style-tag mode in all other cases
      styleElement = createStyleElement()
      update = applyToTag.bind(null, styleElement)
      remove = function () {
        styleElement.parentNode.removeChild(styleElement)
      }
    }
  
    update(obj)
  
    return function updateStyle (newObj /* StyleObjectPart */) {
      if (newObj) {
        if (newObj.css === obj.css &&
            newObj.media === obj.media &&
            newObj.sourceMap === obj.sourceMap) {
          return
        }
        update(obj = newObj)
      } else {
        remove()
      }
    }
  }
  
  var replaceText = (function () {
    var textStore = []
  
    return function (index, replacement) {
      textStore[index] = replacement
      return textStore.filter(Boolean).join('\n')
    }
  })()
  
  function applyToSingletonTag (styleElement, index, remove, obj) {
    var css = remove ? '' : obj.css
  
    if (styleElement.styleSheet) {
      styleElement.styleSheet.cssText = replaceText(index, css)
    } else {
      var cssNode = document.createTextNode(css)
      var childNodes = styleElement.childNodes
      if (childNodes[index]) styleElement.removeChild(childNodes[index])
      if (childNodes.length) {
        styleElement.insertBefore(cssNode, childNodes[index])
      } else {
        styleElement.appendChild(cssNode)
      }
    }
  }
  
  function applyToTag (styleElement, obj) {
    var css = obj.css
    var media = obj.media
    var sourceMap = obj.sourceMap
  
    if (media) {
      styleElement.setAttribute('media', media)
    }
    if (options.ssrId) {
      styleElement.setAttribute(ssrIdKey, obj.id)
    }
  
    if (sourceMap) {
      // https://developer.chrome.com/devtools/docs/javascript-debugging
      // this makes source maps inside style tags work properly in Chrome
      css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
      // http://stackoverflow.com/a/26603875
      css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
    }
  
    if (styleElement.styleSheet) {
      styleElement.styleSheet.cssText = css
    } else {
      while (styleElement.firstChild) {
        styleElement.removeChild(styleElement.firstChild)
      }
      styleElement.appendChild(document.createTextNode(css))
    }
  }
  
  
  /***/ }),
  
  /***/ "./node_modules/vue-style-loader/lib/listToStyles.js":
  /*!***********************************************************!*\
    !*** ./node_modules/vue-style-loader/lib/listToStyles.js ***!
    \***********************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  __webpack_require__.r(__webpack_exports__);
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return listToStyles; });
  /**
   * Translates the list format produced by css-loader into something
   * easier to manipulate.
   */
  function listToStyles (parentId, list) {
    var styles = []
    var newStyles = {}
    for (var i = 0; i < list.length; i++) {
      var item = list[i]
      var id = item[0]
      var css = item[1]
      var media = item[2]
      var sourceMap = item[3]
      var part = {
        id: parentId + ':' + i,
        css: css,
        media: media,
        sourceMap: sourceMap
      }
      if (!newStyles[id]) {
        styles.push(newStyles[id] = { id: id, parts: [part] })
      } else {
        newStyles[id].parts.push(part)
      }
    }
    return styles
  }
  
  
  /***/ }),
  
  /***/ "./node_modules/webpack-hot-middleware/client-overlay.js":
  /*!**************************************************!*\
    !*** (webpack)-hot-middleware/client-overlay.js ***!
    \**************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  /*eslint-env browser*/
  
  var clientOverlay = document.createElement('div');
  clientOverlay.id = 'webpack-hot-middleware-clientOverlay';
  var styles = {
    background: 'rgba(0,0,0,0.85)',
    color: '#e8e8e8',
    lineHeight: '1.6',
    whiteSpace: 'pre',
    fontFamily: 'Menlo, Consolas, monospace',
    fontSize: '13px',
    position: 'fixed',
    zIndex: 9999,
    padding: '10px',
    left: 0,
    right: 0,
    top: 0,
    bottom: 0,
    overflow: 'auto',
    dir: 'ltr',
    textAlign: 'left',
  };
  
  var ansiHTML = __webpack_require__(/*! ansi-html */ "./node_modules/ansi-html/index.js");
  var colors = {
    reset: ['transparent', 'transparent'],
    black: '181818',
    red: 'ff3348',
    green: '3fff4f',
    yellow: 'ffd30e',
    blue: '169be0',
    magenta: 'f840b7',
    cyan: '0ad8e9',
    lightgrey: 'ebe7e3',
    darkgrey: '6d7891',
  };
  
  var Entities = __webpack_require__(/*! html-entities */ "./node_modules/html-entities/index.js").AllHtmlEntities;
  var entities = new Entities();
  
  function showProblems(type, lines) {
    clientOverlay.innerHTML = '';
    lines.forEach(function(msg) {
      msg = ansiHTML(entities.encode(msg));
      var div = document.createElement('div');
      div.style.marginBottom = '26px';
      div.innerHTML = problemType(type) + ' in ' + msg;
      clientOverlay.appendChild(div);
    });
    if (document.body) {
      document.body.appendChild(clientOverlay);
    }
  }
  
  function clear() {
    if (document.body && clientOverlay.parentNode) {
      document.body.removeChild(clientOverlay);
    }
  }
  
  function problemType(type) {
    var problemColors = {
      errors: colors.red,
      warnings: colors.yellow,
    };
    var color = problemColors[type] || colors.red;
    return (
      '<span style="background-color:#' +
      color +
      '; color:#000000; padding:3px 6px; border-radius: 4px;">' +
      type.slice(0, -1).toUpperCase() +
      '</span>'
    );
  }
  
  module.exports = function(options) {
    for (var color in options.ansiColors) {
      if (color in colors) {
        colors[color] = options.ansiColors[color];
      }
      ansiHTML.setColors(colors);
    }
  
    for (var style in options.overlayStyles) {
      styles[style] = options.overlayStyles[style];
    }
  
    for (var key in styles) {
      clientOverlay.style[key] = styles[key];
    }
  
    return {
      showProblems: showProblems,
      clear: clear,
    };
  };
  
  module.exports.clear = clear;
  module.exports.showProblems = showProblems;
  
  
  /***/ }),
  
  /***/ "./node_modules/webpack-hot-middleware/client.js?reload=true&timeout=30000&ansiColors=&overlayStyles=&name=client&path=/__webpack_hmr/client":
  /*!**************************************************************************************************************************************!*\
    !*** (webpack)-hot-middleware/client.js?reload=true&timeout=30000&ansiColors=&overlayStyles=&name=client&path=/__webpack_hmr/client ***!
    \**************************************************************************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  /* WEBPACK VAR INJECTION */(function(__resourceQuery, module) {/*eslint-env browser*/
  /*global __resourceQuery __webpack_public_path__*/
  
  var options = {
    path: '/__webpack_hmr',
    timeout: 20 * 1000,
    overlay: true,
    reload: false,
    log: true,
    warn: true,
    name: '',
    autoConnect: true,
    overlayStyles: {},
    overlayWarnings: false,
    ansiColors: {},
  };
  if (true) {
    var querystring = __webpack_require__(/*! querystring */ "./node_modules/querystring-es3/index.js");
    var overrides = querystring.parse(__resourceQuery.slice(1));
    setOverrides(overrides);
  }
  
  if (typeof window === 'undefined') {
    // do nothing
  } else if (typeof window.EventSource === 'undefined') {
    console.warn(
      "webpack-hot-middleware's client requires EventSource to work. " +
        'You should include a polyfill if you want to support this browser: ' +
        'https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events#Tools'
    );
  } else {
    if (options.autoConnect) {
      connect();
    }
  }
  
  /* istanbul ignore next */
  function setOptionsAndConnect(overrides) {
    setOverrides(overrides);
    connect();
  }
  
  function setOverrides(overrides) {
    if (overrides.autoConnect)
      options.autoConnect = overrides.autoConnect == 'true';
    if (overrides.path) options.path = overrides.path;
    if (overrides.timeout) options.timeout = overrides.timeout;
    if (overrides.overlay) options.overlay = overrides.overlay !== 'false';
    if (overrides.reload) options.reload = overrides.reload !== 'false';
    if (overrides.noInfo && overrides.noInfo !== 'false') {
      options.log = false;
    }
    if (overrides.name) {
      options.name = overrides.name;
    }
    if (overrides.quiet && overrides.quiet !== 'false') {
      options.log = false;
      options.warn = false;
    }
  
    if (overrides.dynamicPublicPath) {
      options.path = __webpack_require__.p + options.path;
    }
  
    if (overrides.ansiColors)
      options.ansiColors = JSON.parse(overrides.ansiColors);
    if (overrides.overlayStyles)
      options.overlayStyles = JSON.parse(overrides.overlayStyles);
  
    if (overrides.overlayWarnings) {
      options.overlayWarnings = overrides.overlayWarnings == 'true';
    }
  }
  
  function EventSourceWrapper() {
    var source;
    var lastActivity = new Date();
    var listeners = [];
  
    init();
    var timer = setInterval(function() {
      if (new Date() - lastActivity > options.timeout) {
        handleDisconnect();
      }
    }, options.timeout / 2);
  
    function init() {
      source = new window.EventSource(options.path);
      source.onopen = handleOnline;
      source.onerror = handleDisconnect;
      source.onmessage = handleMessage;
    }
  
    function handleOnline() {
      if (options.log) console.log('[HMR] connected');
      lastActivity = new Date();
    }
  
    function handleMessage(event) {
      lastActivity = new Date();
      for (var i = 0; i < listeners.length; i++) {
        listeners[i](event);
      }
    }
  
    function handleDisconnect() {
      clearInterval(timer);
      source.close();
      setTimeout(init, options.timeout);
    }
  
    return {
      addMessageListener: function(fn) {
        listeners.push(fn);
      },
    };
  }
  
  function getEventSourceWrapper() {
    if (!window.__whmEventSourceWrapper) {
      window.__whmEventSourceWrapper = {};
    }
    if (!window.__whmEventSourceWrapper[options.path]) {
      // cache the wrapper for other entries loaded on
      // the same page with the same options.path
      window.__whmEventSourceWrapper[options.path] = EventSourceWrapper();
    }
    return window.__whmEventSourceWrapper[options.path];
  }
  
  function connect() {
    getEventSourceWrapper().addMessageListener(handleMessage);
  
    function handleMessage(event) {
      if (event.data == '\uD83D\uDC93') {
        return;
      }
      try {
        processMessage(JSON.parse(event.data));
      } catch (ex) {
        if (options.warn) {
          console.warn('Invalid HMR message: ' + event.data + '\n' + ex);
        }
      }
    }
  }
  
  // the reporter needs to be a singleton on the page
  // in case the client is being used by multiple bundles
  // we only want to report once.
  // all the errors will go to all clients
  var singletonKey = '__webpack_hot_middleware_reporter__';
  var reporter;
  if (typeof window !== 'undefined') {
    if (!window[singletonKey]) {
      window[singletonKey] = createReporter();
    }
    reporter = window[singletonKey];
  }
  
  function createReporter() {
    var strip = __webpack_require__(/*! strip-ansi */ "./node_modules/strip-ansi/index.js");
  
    var overlay;
    if (typeof document !== 'undefined' && options.overlay) {
      overlay = __webpack_require__(/*! ./client-overlay */ "./node_modules/webpack-hot-middleware/client-overlay.js")({
        ansiColors: options.ansiColors,
        overlayStyles: options.overlayStyles,
      });
    }
  
    var styles = {
      errors: 'color: #ff0000;',
      warnings: 'color: #999933;',
    };
    var previousProblems = null;
    function log(type, obj) {
      var newProblems = obj[type]
        .map(function(msg) {
          return strip(msg);
        })
        .join('\n');
      if (previousProblems == newProblems) {
        return;
      } else {
        previousProblems = newProblems;
      }
  
      var style = styles[type];
      var name = obj.name ? "'" + obj.name + "' " : '';
      var title = '[HMR] bundle ' + name + 'has ' + obj[type].length + ' ' + type;
      // NOTE: console.warn or console.error will print the stack trace
      // which isn't helpful here, so using console.log to escape it.
      if (console.group && console.groupEnd) {
        console.group('%c' + title, style);
        console.log('%c' + newProblems, style);
        console.groupEnd();
      } else {
        console.log(
          '%c' + title + '\n\t%c' + newProblems.replace(/\n/g, '\n\t'),
          style + 'font-weight: bold;',
          style + 'font-weight: normal;'
        );
      }
    }
  
    return {
      cleanProblemsCache: function() {
        previousProblems = null;
      },
      problems: function(type, obj) {
        if (options.warn) {
          log(type, obj);
        }
        if (overlay) {
          if (options.overlayWarnings || type === 'errors') {
            overlay.showProblems(type, obj[type]);
            return false;
          }
          overlay.clear();
        }
        return true;
      },
      success: function() {
        if (overlay) overlay.clear();
      },
      useCustomOverlay: function(customOverlay) {
        overlay = customOverlay;
      },
    };
  }
  
  var processUpdate = __webpack_require__(/*! ./process-update */ "./node_modules/webpack-hot-middleware/process-update.js");
  
  var customHandler;
  var subscribeAllHandler;
  function processMessage(obj) {
    switch (obj.action) {
      case 'building':
        if (options.log) {
          console.log(
            '[HMR] bundle ' +
              (obj.name ? "'" + obj.name + "' " : '') +
              'rebuilding'
          );
        }
        break;
      case 'built':
        if (options.log) {
          console.log(
            '[HMR] bundle ' +
              (obj.name ? "'" + obj.name + "' " : '') +
              'rebuilt in ' +
              obj.time +
              'ms'
          );
        }
      // fall through
      case 'sync':
        if (obj.name && options.name && obj.name !== options.name) {
          return;
        }
        var applyUpdate = true;
        if (obj.errors.length > 0) {
          if (reporter) reporter.problems('errors', obj);
          applyUpdate = false;
        } else if (obj.warnings.length > 0) {
          if (reporter) {
            var overlayShown = reporter.problems('warnings', obj);
            applyUpdate = overlayShown;
          }
        } else {
          if (reporter) {
            reporter.cleanProblemsCache();
            reporter.success();
          }
        }
        if (applyUpdate) {
          processUpdate(obj.hash, obj.modules, options);
        }
        break;
      default:
        if (customHandler) {
          customHandler(obj);
        }
    }
  
    if (subscribeAllHandler) {
      subscribeAllHandler(obj);
    }
  }
  
  if (module) {
    module.exports = {
      subscribeAll: function subscribeAll(handler) {
        subscribeAllHandler = handler;
      },
      subscribe: function subscribe(handler) {
        customHandler = handler;
      },
      useCustomOverlay: function useCustomOverlay(customOverlay) {
        if (reporter) reporter.useCustomOverlay(customOverlay);
      },
      setOptionsAndConnect: setOptionsAndConnect,
    };
  }
  
  /* WEBPACK VAR INJECTION */}.call(this, "?reload=true&timeout=30000&ansiColors=&overlayStyles=&name=client&path=/__webpack_hmr/client", __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
  
  /***/ }),
  
  /***/ "./node_modules/webpack-hot-middleware/process-update.js":
  /*!**************************************************!*\
    !*** (webpack)-hot-middleware/process-update.js ***!
    \**************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  /**
   * Based heavily on https://github.com/webpack/webpack/blob/
   *  c0afdf9c6abc1dd70707c594e473802a566f7b6e/hot/only-dev-server.js
   * Original copyright Tobias Koppers @sokra (MIT license)
   */
  
  /* global window __webpack_hash__ */
  
  if (false) {}
  
  var hmrDocsUrl = 'https://webpack.js.org/concepts/hot-module-replacement/'; // eslint-disable-line max-len
  
  var lastHash;
  var failureStatuses = { abort: 1, fail: 1 };
  var applyOptions = {
    ignoreUnaccepted: true,
    ignoreDeclined: true,
    ignoreErrored: true,
    onUnaccepted: function(data) {
      console.warn(
        'Ignored an update to unaccepted module ' + data.chain.join(' -> ')
      );
    },
    onDeclined: function(data) {
      console.warn(
        'Ignored an update to declined module ' + data.chain.join(' -> ')
      );
    },
    onErrored: function(data) {
      console.error(data.error);
      console.warn(
        'Ignored an error while updating module ' +
          data.moduleId +
          ' (' +
          data.type +
          ')'
      );
    },
  };
  
  function upToDate(hash) {
    if (hash) lastHash = hash;
    return lastHash == __webpack_require__.h();
  }
  
  module.exports = function(hash, moduleMap, options) {
    var reload = options.reload;
    if (!upToDate(hash) && module.hot.status() == 'idle') {
      if (options.log) console.log('[HMR] Checking for updates on the server...');
      check();
    }
  
    function check() {
      var cb = function(err, updatedModules) {
        if (err) return handleError(err);
  
        if (!updatedModules) {
          if (options.warn) {
            console.warn('[HMR] Cannot find update (Full reload needed)');
            console.warn('[HMR] (Probably because of restarting the server)');
          }
          performReload();
          return null;
        }
  
        var applyCallback = function(applyErr, renewedModules) {
          if (applyErr) return handleError(applyErr);
  
          if (!upToDate()) check();
  
          logUpdates(updatedModules, renewedModules);
        };
  
        var applyResult = module.hot.apply(applyOptions, applyCallback);
        // webpack 2 promise
        if (applyResult && applyResult.then) {
          // HotModuleReplacement.runtime.js refers to the result as `outdatedModules`
          applyResult.then(function(outdatedModules) {
            applyCallback(null, outdatedModules);
          });
          applyResult.catch(applyCallback);
        }
      };
  
      var result = module.hot.check(false, cb);
      // webpack 2 promise
      if (result && result.then) {
        result.then(function(updatedModules) {
          cb(null, updatedModules);
        });
        result.catch(cb);
      }
    }
  
    function logUpdates(updatedModules, renewedModules) {
      var unacceptedModules = updatedModules.filter(function(moduleId) {
        return renewedModules && renewedModules.indexOf(moduleId) < 0;
      });
  
      if (unacceptedModules.length > 0) {
        if (options.warn) {
          console.warn(
            "[HMR] The following modules couldn't be hot updated: " +
              '(Full reload needed)\n' +
              'This is usually because the modules which have changed ' +
              '(and their parents) do not know how to hot reload themselves. ' +
              'See ' +
              hmrDocsUrl +
              ' for more details.'
          );
          unacceptedModules.forEach(function(moduleId) {
            console.warn('[HMR]  - ' + (moduleMap[moduleId] || moduleId));
          });
        }
        performReload();
        return;
      }
  
      if (options.log) {
        if (!renewedModules || renewedModules.length === 0) {
          console.log('[HMR] Nothing hot updated.');
        } else {
          console.log('[HMR] Updated modules:');
          renewedModules.forEach(function(moduleId) {
            console.log('[HMR]  - ' + (moduleMap[moduleId] || moduleId));
          });
        }
  
        if (upToDate()) {
          console.log('[HMR] App is up to date.');
        }
      }
    }
  
    function handleError(err) {
      if (module.hot.status() in failureStatuses) {
        if (options.warn) {
          console.warn('[HMR] Cannot check for update (Full reload needed)');
          console.warn('[HMR] ' + (err.stack || err.message));
        }
        performReload();
        return;
      }
      if (options.warn) {
        console.warn('[HMR] Update check failed: ' + (err.stack || err.message));
      }
    }
  
    function performReload() {
      if (reload) {
        if (options.warn) console.warn('[HMR] Reloading page');
        window.location.reload();
      }
    }
  };
  
  
  /***/ })
  
  }]);