PageSourceSearch

https://constellationschools.com/wp-content/themes/accel-school-child/dist/js/main.js

js constellationschools.com collected 2026-09-29 16:20:48 UTC 369,634 bytes, 356 lines download raw bytes

vendor: 3,594 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap
2/******/ 	// The module cache
3/******/ 	var installedModules = {};
4/******/
5/******/ 	// The require function
6/******/ 	function __webpack_require__(moduleId) {
7/******/
8/******/ 		// Check if module is in cache
9/******/ 		if(installedModules[moduleId]) {
10/******/ 			return installedModules[moduleId].exports;
11/******/ 		}
12/******/ 		// Create a new module (and put it into the cache)
13/******/ 		var module = installedModules[moduleId] = {
14/******/ 			i: moduleId,
15/******/ 			l: false,
16/******/ 			exports: {}
17/******/ 		};
18/******/
19/******/ 		// Execute the module function
20/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ 		// Flag the module as loaded
23/******/ 		module.l = true;
24/******/
25/******/ 		// Return the exports of the module
26/******/ 		return module.exports;
27/******/ 	}
28/******/
29/******/
30/******/ 	// expose the modules object (__webpack_modules__)
31/******/ 	__webpack_require__.m = modules;
32/******/
33/******/ 	// expose the module cache
34/******/ 	__webpack_require__.c = installedModules;
35/******/
36/******/ 	// define getter function for harmony exports
37/******/ 	__webpack_require__.d = function(exports, name, getter) {
38/******/ 		if(!__webpack_require__.o(exports, name)) {
39/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
40/******/ 		}
41/******/ 	};
42/******/
43/******/ 	// define __esModule on exports
44/******/ 	__webpack_require__.r = function(exports) {
45/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47/******/ 		}
48/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
49/******/ 	};
50/******/
51/******/ 	// create a fake namespace object
52/******/ 	// mode & 1: value is a module id, require it
53/******/ 	// mode & 2: merge all properties of value into the ns
54/******/ 	// mode & 4: return value when already ns object
55/******/ 	// mode & 8|1: behave like require
56/******/ 	__webpack_require__.t = function(value, mode) {
57/******/ 		if(mode & 1) value = __webpack_require__(value);
58/******/ 		if(mode & 8) return value;
59/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60/******/ 		var ns = Object.create(null);
61/******/ 		__webpack_require__.r(ns);
62/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64/******/ 		return ns;
65/******/ 	};
66/******/
67/******/ 	// getDefaultExport function for compatibility with non-harmony modules
68/******/ 	__webpack_require__.n = function(module) {
69/******/ 		var getter = module && module.__esModule ?
70/******/ 			function getDefault() { return module['default']; } :
71/******/ 			function getModuleExports() { return module; };
72/******/ 		__webpack_require__.d(getter, 'a', getter);
73/******/ 		return getter;
74/******/ 	};
75/******/
76/******/ 	// Object.prototype.hasOwnProperty.call
77/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78/******/
79/******/ 	// __webpack_public_path__
80/******/ 	__webpack_require__.p = "";
81/******/
82/******/
83/******/ 	// Load entry module and return exports
84/******/ 	return __webpack_require__(__webpack_require__.s = 0);
85/******/ })
86/************************************************************************/
87/******/ ({
88
vendor: 95,331 bytes, lines 89-100
89/***/ "./node_modules/@glidejs/glide/dist/glide.esm.js":
90/*!*******************************************************!*\
91  !*** ./node_modules/@glidejs/glide/dist/glide.esm.js ***!
92  \*******************************************************/
93/*! exports provided: default */
94/***/ (function(module, __webpack_exports__, __webpack_require__) {
95
96"use strict";
97eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Glide; });\n/*!\n * Glide.js v3.7.1\n * (c) 2013-2024 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */\n\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n\n    if (enumerableOnly) {\n      symbols = symbols.filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n      });\n    }\n\n    keys.push.apply(keys, symbols);\n  }\n\n  return keys;\n}\n\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n\n    if (i % 2) {\n      ownKeys(Object(source), true).forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    } else if (Object.getOwnPropertyDescriptors) {\n      Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n    } else {\n      ownKeys(Object(source)).forEach(function (key) {\n        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n      });\n    }\n  }\n\n  return target;\n}\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n  var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n  return function _createSuperInternal() {\n    var Super = _getPrototypeOf(Derived),\n        result;\n\n    if (hasNativeReflectConstruct) {\n      var NewTarget = _getPrototypeOf(this).constructor;\n\n      result = Reflect.construct(Super, arguments, NewTarget);\n    } else {\n      result = Super.apply(this, arguments);\n    }\n\n    return _possibleConstructorReturn(this, result);\n  };\n}\n\nfunction _superPropBase(object, property) {\n  while (!Object.prototype.hasOwnProperty.call(object, property)) {\n    object = _getPrototypeOf(object);\n    if (object === null) break;\n  }\n\n  return object;\n}\n\nfunction _get() {\n  if (typeof Reflect !== \"undefined\" && Reflect.get) {\n    _get = Reflect.get;\n  } else {\n    _get = function _get(target, property, receiver) {\n      var base = _superPropBase(target, property);\n\n      if (!base) return;\n      var desc = Object.getOwnPropertyDescriptor(base, property);\n\n      if (desc.get) {\n        return desc.get.call(arguments.length < 3 ? target : receiver);\n      }\n\n      return desc.value;\n    };\n  }\n\n  return _get.apply(this, arguments);\n}\n\nvar defaults = {\n  /**\n   * Type of the movement.\n   *\n   * Available types:\n   * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n   * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n   *\n   * @type {String}\n   */\n  type: 'slider',\n\n  /**\n   * Start at specific slide number defined with zero-based index.\n   *\n   * @type {Number}\n   */\n  startAt: 0,\n\n  /**\n   * A number of slides visible on the single viewport.\n   *\n   * @type {Number}\n   */\n  perView: 1,\n\n  /**\n   * Focus currently active slide at a specified position in the track.\n   *\n   * Available inputs:\n   * `center` - Current slide will be always focused at the center of a track.\n   * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n   *\n   * @type {String|Number}\n   */\n  focusAt: 0,\n\n  /**\n   * A size of the gap added between slides.\n   *\n   * @type {Number}\n   */\n  gap: 10,\n\n  /**\n   * Change slides after a specified interval. Use `false` for turning off autoplay.\n   *\n   * @type {Number|Boolean}\n   */\n  autoplay: false,\n\n  /**\n   * Stop autoplay on mouseover event.\n   *\n   * @type {Boolean}\n   */\n  hoverpause: true,\n\n  /**\n   * Allow for changing slides with left and right keyboard arrows.\n   *\n   * @type {Boolean}\n   */\n  keyboard: true,\n\n  /**\n   * Stop running `perView` number of slides from the end. Use this\n   * option if you don't want to have an empty space after\n   * a slider. Works only with `slider` type and a\n   * non-centered `focusAt` setting.\n   *\n   * @type {Boolean}\n   */\n  bound: false,\n\n  /**\n   * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n   *\n   * @type {Number|Boolean}\n   */\n  swipeThreshold: 80,\n\n  /**\n   * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n   *\n   * @type {Number|Boolean}\n   */\n  dragThreshold: 120,\n\n  /**\n   * A number of slides moved on single swipe.\n   *\n   * Available types:\n   * `` - Moves slider by one slide per swipe\n   * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n   *\n   * @type {String}\n   */\n  perSwipe: '',\n\n  /**\n   * Moving distance ratio of the slides on a swiping and dragging.\n   *\n   * @type {Number}\n   */\n  touchRatio: 0.5,\n\n  /**\n   * Angle required to activate slides moving on swiping or dragging.\n   *\n   * @type {Number}\n   */\n  touchAngle: 45,\n\n  /**\n   * Duration of the animation in milliseconds.\n   *\n   * @type {Number}\n   */\n  animationDuration: 400,\n\n  /**\n   * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n   *\n   * @type {Boolean}\n   */\n  rewind: true,\n\n  /**\n   * Duration of the rewinding animation of the `slider` type in milliseconds.\n   *\n   * @type {Number}\n   */\n  rewindDuration: 800,\n\n  /**\n   * Easing function for the animation.\n   *\n   * @type {String}\n   */\n  animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n  /**\n   * Wait for the animation to finish until the next user input can be processed\n   *\n   * @type {boolean}\n   */\n  waitForTransition: true,\n\n  /**\n   * Throttle costly events at most once per every wait milliseconds.\n   *\n   * @type {Number}\n   */\n  throttle: 10,\n\n  /**\n   * Moving direction mode.\n   *\n   * Available inputs:\n   * - 'ltr' - left to right movement,\n   * - 'rtl' - right to left movement.\n   *\n   * @type {String}\n   */\n  direction: 'ltr',\n\n  /**\n   * The distance value of the next and previous viewports which\n   * have to peek in the current view. Accepts number and\n   * pixels as a string. Left and right peeking can be\n   * set up separately with a directions object.\n   *\n   * For example:\n   * `100` - Peek 100px on the both sides.\n   * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n   *\n   * @type {Number|String|Object}\n   */\n  peek: 0,\n\n  /**\n   * Defines how many clones of current viewport will be generated.\n   *\n   * @type {Number}\n   */\n  cloningRatio: 1,\n\n  /**\n   * Collection of options applied at specified media breakpoints.\n   * For example: display two slides per view under 800px.\n   * `{\n   *   '800px': {\n   *     perView: 2\n   *   }\n   * }`\n   */\n  breakpoints: {},\n\n  /**\n   * Collection of internally used HTML classes.\n   *\n   * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n   * @type {Object}\n   */\n  classes: {\n    swipeable: 'glide--swipeable',\n    dragging: 'glide--dragging',\n    direction: {\n      ltr: 'glide--ltr',\n      rtl: 'glide--rtl'\n    },\n    type: {\n      slider: 'glide--slider',\n      carousel: 'glide--carousel'\n    },\n    slide: {\n      clone: 'glide__slide--clone',\n      active: 'glide__slide--active'\n    },\n    arrow: {\n      disabled: 'glide__arrow--disabled'\n    },\n    nav: {\n      active: 'glide__bullet--active'\n    }\n  }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param  {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n  console.error(\"[Glide warn]: \".concat(msg));\n}\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n  return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\nfunction toFloat(value) {\n  return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param  {*}   value\n * @return {Boolean}\n */\n\nfunction isString(value) {\n  return typeof value === 'string';\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param  {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction isObject(value) {\n  var type = _typeof(value);\n\n  return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param  {*} value\n * @return {Boolean}\n */\n\nfunction isFunction(value) {\n  return typeof value === 'function';\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param  {*} value\n * @return {Boolean}\n */\n\nfunction isUndefined(value) {\n  return typeof value === 'undefined';\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param  {*} value\n * @return {Boolean}\n */\n\nfunction isArray(value) {\n  return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\nfunction mount(glide, extensions, events) {\n  var components = {};\n\n  for (var name in extensions) {\n    if (isFunction(extensions[name])) {\n      components[name] = extensions[name](glide, components, events);\n    } else {\n      warn('Extension must be a function');\n    }\n  }\n\n  for (var _name in components) {\n    if (isFunction(components[_name].mount)) {\n      components[_name].mount();\n    }\n  }\n\n  return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param  {Object} obj         Object where property has to be defined.\n * @param  {String} prop        Name of the defined property.\n * @param  {Object} definition  Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n  Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param  {Object} obj\n * @return {Object}\n */\n\nfunction sortKeys(obj) {\n  return Object.keys(obj).sort().reduce(function (r, k) {\n    r[k] = obj[k];\n    return r[k], r;\n  }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param  {Object} defaults\n * @param  {Object} settings\n * @return {Object}\n */\n\nfunction mergeOptions(defaults, settings) {\n  var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n  // have to do it manually for every nested object\n  // in options. Although it does not look smart,\n  // it's smaller and faster than some fancy\n  // merging deep-merge algorithm script.\n\n  if (settings.hasOwnProperty('classes')) {\n    options.classes = Object.assign({}, defaults.classes, settings.classes);\n    var properties = ['direction', 'type', 'slide', 'arrow', 'nav'];\n    properties.forEach(function (property) {\n      if (settings.classes.hasOwnProperty(property)) {\n        options.classes[property] = _objectSpread2(_objectSpread2({}, defaults.classes[property]), settings.classes[property]);\n      }\n    });\n  }\n\n  if (settings.hasOwnProperty('breakpoints')) {\n    options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n  }\n\n  return options;\n}\n\nvar EventsBus = /*#__PURE__*/function () {\n  /**\n   * Construct a EventBus instance.\n   *\n   * @param {Object} events\n   */\n  function EventsBus() {\n    var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, EventsBus);\n\n    this.events = events;\n    this.hop = events.hasOwnProperty;\n  }\n  /**\n   * Adds listener to the specifed event.\n   *\n   * @param {String|Array} event\n   * @param {Function} handler\n   */\n\n\n  _createClass(EventsBus, [{\n    key: \"on\",\n    value: function on(event, handler) {\n      if (isArray(event)) {\n        for (var i = 0; i < event.length; i++) {\n          this.on(event[i], handler);\n        }\n\n        return;\n      } // Create the event's object if not yet created\n\n\n      if (!this.hop.call(this.events, event)) {\n        this.events[event] = [];\n      } // Add the handler to queue\n\n\n      var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n      return {\n        remove: function remove() {\n          delete this.events[event][index];\n        }\n      };\n    }\n    /**\n     * Runs registered handlers for specified event.\n     *\n     * @param {String|Array} event\n     * @param {Object=} context\n     */\n\n  }, {\n    key: \"emit\",\n    value: function emit(event, context) {\n      if (isArray(event)) {\n        for (var i = 0; i < event.length; i++) {\n          this.emit(event[i], context);\n        }\n\n        return;\n      } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n      if (!this.hop.call(this.events, event)) {\n        return;\n      } // Cycle through events queue, fire!\n\n\n      this.events[event].forEach(function (item) {\n        item(context || {});\n      });\n    }\n  }]);\n\n  return EventsBus;\n}();\n\nvar Glide$1 = /*#__PURE__*/function () {\n  /**\r\n   * Construct glide.\r\n   *\r\n   * @param  {String} selector\r\n   * @param  {Object} options\r\n   */\n  function Glide(selector) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n    _classCallCheck(this, Glide);\n\n    this._c = {};\n    this._t = [];\n    this._e = new EventsBus();\n    this.disabled = false;\n    this.selector = selector;\n    this.settings = mergeOptions(defaults, options);\n    this.index = this.settings.startAt;\n  }\n  /**\r\n   * Initializes glide.\r\n   *\r\n   * @param {Object} extensions Collection of extensions to initialize.\r\n   * @return {Glide}\r\n   */\n\n\n  _createClass(Glide, [{\n    key: \"mount\",\n    value: function mount$1() {\n      var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      this._e.emit('mount.before');\n\n      if (isObject(extensions)) {\n        this._c = mount(this, extensions, this._e);\n      } else {\n        warn('You need to provide a object on `mount()`');\n      }\n\n      this._e.emit('mount.after');\n\n      return this;\n    }\n    /**\r\n     * Collects an instance `translate` transformers.\r\n     *\r\n     * @param  {Array} transformers Collection of transformers.\r\n     * @return {Void}\r\n     */\n\n  }, {\n    key: \"mutate\",\n    value: function mutate() {\n      var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n      if (isArray(transformers)) {\n        this._t = transformers;\n      } else {\n        warn('You need to provide a array on `mutate()`');\n      }\n\n      return this;\n    }\n    /**\r\n     * Updates glide with specified settings.\r\n     *\r\n     * @param {Object} settings\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: \"update\",\n    value: function update() {\n      var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      this.settings = mergeOptions(this.settings, settings);\n\n      if (settings.hasOwnProperty('startAt')) {\n        this.index = settings.startAt;\n      }\n\n      this._e.emit('update');\n\n      return this;\n    }\n    /**\r\n     * Change slide with specified pattern. A pattern must be in the special format:\r\n     * `>` - Move one forward\r\n     * `<` - Move one backward\r\n     * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n     * `>>` - Rewinds to end (last slide)\r\n     * `<<` - Rewinds to start (first slide)\r\n     * `|>` - Move one viewport forward\r\n     * `|<` - Move one viewport backward\r\n     *\r\n     * @param {String} pattern\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: \"go\",\n    value: function go(pattern) {\n      this._c.Run.make(pattern);\n\n      return this;\n    }\n    /**\r\n     * Move track by specified distance.\r\n     *\r\n     * @param {String} distance\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: \"move\",\n    value: function move(distance) {\n      this._c.Transition.disable();\n\n      this._c.Move.make(distance);\n\n      return this;\n    }\n    /**\r\n     * Destroy instance and revert all changes done by this._c.\r\n     *\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._e.emit('destroy');\n\n      return this;\n    }\n    /**\r\n     * Start instance autoplaying.\r\n     *\r\n     * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: \"play\",\n    value: function play() {\n      var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n      if (interval) {\n        this.settings.autoplay = interval;\n      }\n\n      this._e.emit('play');\n\n      return this;\n    }\n    /**\r\n     * Stop instance autoplaying.\r\n     *\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: \"pause\",\n    value: function pause() {\n      this._e.emit('pause');\n\n      return this;\n    }\n    /**\r\n     * Sets glide into a idle status.\r\n     *\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: \"disable\",\n    value: function disable() {\n      this.disabled = true;\n      return this;\n    }\n    /**\r\n     * Sets glide into a active status.\r\n     *\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: \"enable\",\n    value: function enable() {\n      this.disabled = false;\n      return this;\n    }\n    /**\r\n     * Adds cuutom event listener with handler.\r\n     *\r\n     * @param  {String|Array} event\r\n     * @param  {Function} handler\r\n     * @return {Glide}\r\n     */\n\n  }, {\n    key: \"on\",\n    value: function on(event, handler) {\n      this._e.on(event, handler);\n\n      return this;\n    }\n    /**\r\n     * Checks if glide is a precised type.\r\n     *\r\n     * @param  {String} name\r\n     * @return {Boolean}\r\n     */\n\n  }, {\n    key: \"isType\",\n    value: function isType(name) {\n      return this.settings.type === name;\n    }\n    /**\r\n     * Gets value of the core options.\r\n     *\r\n     * @return {Object}\r\n     */\n\n  }, {\n    key: \"settings\",\n    get: function get() {\n      return this._o;\n    }\n    /**\r\n     * Sets value of the core options.\r\n     *\r\n     * @param  {Object} o\r\n     * @return {Void}\r\n     */\n    ,\n    set: function set(o) {\n      if (isObject(o)) {\n        this._o = o;\n      } else {\n        warn('Options must be an `object` instance.');\n      }\n    }\n    /**\r\n     * Gets current index of the slider.\r\n     *\r\n     * @return {Object}\r\n     */\n\n  }, {\n    key: \"index\",\n    get: function get() {\n      return this._i;\n    }\n    /**\r\n     * Sets current index a slider.\r\n     *\r\n     * @return {Object}\r\n     */\n    ,\n    set: function set(i) {\n      this._i = toInt(i);\n    }\n    /**\r\n     * Gets type name of the slider.\r\n     *\r\n     * @return {String}\r\n     */\n\n  }, {\n    key: \"type\",\n    get: function get() {\n      return this.settings.type;\n    }\n    /**\r\n     * Gets value of the idle status.\r\n     *\r\n     * @return {Boolean}\r\n     */\n\n  }, {\n    key: \"disabled\",\n    get: function get() {\n      return this._d;\n    }\n    /**\r\n     * Sets value of the idle status.\r\n     *\r\n     * @return {Boolean}\r\n     */\n    ,\n    set: function set(status) {\n      this._d = !!status;\n    }\n  }]);\n\n  return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n  var Run = {\n    /**\n     * Initializes autorunning of the glide.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this._o = false;\n    },\n\n    /**\n     * Makes glides running based on the passed moving schema.\n     *\n     * @param {String} move\n     */\n    make: function make(move) {\n      var _this = this;\n\n      if (!Glide.disabled) {\n        !Glide.settings.waitForTransition || Glide.disable();\n        this.move = move;\n        Events.emit('run.before', this.move);\n        this.calculate();\n        Events.emit('run', this.move);\n        Components.Transition.after(function () {\n          if (_this.isStart()) {\n            Events.emit('run.start', _this.move);\n          }\n\n          if (_this.isEnd()) {\n            Events.emit('run.end', _this.move);\n          }\n\n          if (_this.isOffset()) {\n            _this._o = false;\n            Events.emit('run.offset', _this.move);\n          }\n\n          Events.emit('run.after', _this.move);\n          Glide.enable();\n        });\n      }\n    },\n\n    /**\n     * Calculates current index based on defined move.\n     *\n     * @return {Number|Undefined}\n     */\n    calculate: function calculate() {\n      var move = this.move,\n          length = this.length;\n      var steps = move.steps,\n          direction = move.direction; // By default assume that size of view is equal to one slide\n\n      var viewSize = 1; // While direction is `=` we want jump to\n      // a specified index described in steps.\n\n      if (direction === '=') {\n        // Check if bound is true, \n        // as we want to avoid whitespaces.\n        if (Glide.settings.bound && toInt(steps) > length) {\n          Glide.index = length;\n          return;\n        }\n\n        Glide.index = steps;\n        return;\n      } // When pattern is equal to `>>` we want\n      // fast forward to the last slide.\n\n\n      if (direction === '>' && steps === '>') {\n        Glide.index = length;\n        return;\n      } // When pattern is equal to `<<` we want\n      // fast forward to the first slide.\n\n\n      if (direction === '<' && steps === '<') {\n        Glide.index = 0;\n        return;\n      } // pagination movement\n\n\n      if (direction === '|') {\n        viewSize = Glide.settings.perView || 1;\n      } // we are moving forward\n\n\n      if (direction === '>' || direction === '|' && steps === '>') {\n        var index = calculateForwardIndex(viewSize);\n\n        if (index > length) {\n          this._o = true;\n        }\n\n        Glide.index = normalizeForwardIndex(index, viewSize);\n        return;\n      } // we are moving backward\n\n\n      if (direction === '<' || direction === '|' && steps === '<') {\n        var _index = calculateBackwardIndex(viewSize);\n\n        if (_index < 0) {\n          this._o = true;\n        }\n\n        Glide.index = normalizeBackwardIndex(_index, viewSize);\n        return;\n      }\n\n      warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n    },\n\n    /**\n     * Checks if we are on the first slide.\n     *\n     * @return {Boolean}\n     */\n    isStart: function isStart() {\n      return Glide.index <= 0;\n    },\n\n    /**\n     * Checks if we are on the last slide.\n     *\n     * @return {Boolean}\n     */\n    isEnd: function isEnd() {\n      return Glide.index >= this.length;\n    },\n\n    /**\n     * Checks if we are making a offset run.\n     *\n     * @param {String} direction\n     * @return {Boolean}\n     */\n    isOffset: function isOffset() {\n      var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n      if (!direction) {\n        return this._o;\n      }\n\n      if (!this._o) {\n        return false;\n      } // did we view to the right?\n\n\n      if (direction === '|>') {\n        return this.move.direction === '|' && this.move.steps === '>';\n      } // did we view to the left?\n\n\n      if (direction === '|<') {\n        return this.move.direction === '|' && this.move.steps === '<';\n      }\n\n      return this.move.direction === direction;\n    },\n\n    /**\n     * Checks if bound mode is active\n     *\n     * @return {Boolean}\n     */\n    isBound: function isBound() {\n      return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n    }\n  };\n  /**\n   * Returns index value to move forward/to the right\n   *\n   * @param viewSize\n   * @returns {Number}\n   */\n\n  function calculateForwardIndex(viewSize) {\n    var index = Glide.index;\n\n    if (Glide.isType('carousel')) {\n      return index + viewSize;\n    }\n\n    return index + (viewSize - index % viewSize);\n  }\n  /**\n   * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n   *\n   * @param index\n   * @param length\n   * @param viewSize\n   * @returns {Number}\n   */\n\n\n  function normalizeForwardIndex(index, viewSize) {\n    var length = Run.length;\n\n    if (index <= length) {\n      return index;\n    }\n\n    if (Glide.isType('carousel')) {\n      return index - (length + 1);\n    }\n\n    if (Glide.settings.rewind) {\n      // bound does funny things with the length, therefor we have to be certain\n      // that we are on the last possible index value given by bound\n      if (Run.isBound() && !Run.isEnd()) {\n        return length;\n      }\n\n      return 0;\n    }\n\n    if (Run.isBound()) {\n      return length;\n    }\n\n    return Math.floor(length / viewSize) * viewSize;\n  }\n  /**\n   * Calculates index value to move backward/to the left\n   *\n   * @param viewSize\n   * @returns {Number}\n   */\n\n\n  function calculateBackwardIndex(viewSize) {\n    var index = Glide.index;\n\n    if (Glide.isType('carousel')) {\n      return index - viewSize;\n    } // ensure our back navigation results in the same index as a forward navigation\n    // to experience a homogeneous paging\n\n\n    var view = Math.ceil(index / viewSize);\n    return (view - 1) * viewSize;\n  }\n  /**\n   * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n   *\n   * @param index\n   * @param length\n   * @param viewSize\n   * @returns {*}\n   */\n\n\n  function normalizeBackwardIndex(index, viewSize) {\n    var length = Run.length;\n\n    if (index >= 0) {\n      return index;\n    }\n\n    if (Glide.isType('carousel')) {\n      return index + (length + 1);\n    }\n\n    if (Glide.settings.rewind) {\n      // bound does funny things with the length, therefor we have to be certain\n      // that we are on first possible index value before we to rewind to the length given by bound\n      if (Run.isBound() && Run.isStart()) {\n        return length;\n      }\n\n      return Math.floor(length / viewSize) * viewSize;\n    }\n\n    return 0;\n  }\n\n  define(Run, 'move', {\n    /**\n     * Gets value of the move schema.\n     *\n     * @returns {Object}\n     */\n    get: function get() {\n      return this._m;\n    },\n\n    /**\n     * Sets value of the move schema.\n     *\n     * @returns {Object}\n     */\n    set: function set(value) {\n      var step = value.substr(1);\n      this._m = {\n        direction: value.substr(0, 1),\n        steps: step ? toInt(step) ? toInt(step) : step : 0\n      };\n    }\n  });\n  define(Run, 'length', {\n    /**\n     * Gets value of the running distance based\n     * on zero-indexing number of slides.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      var settings = Glide.settings;\n      var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n      // reduced by `perView` and `focusAt` settings. Running distance\n      // should end before creating an empty space after instance.\n\n      if (this.isBound()) {\n        return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n      }\n\n      return length - 1;\n    }\n  });\n  define(Run, 'offset', {\n    /**\n     * Gets status of the offsetting flag.\n     *\n     * @return {Boolean}\n     */\n    get: function get() {\n      return this._o;\n    }\n  });\n  return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n  return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction throttle(func, wait) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var timeout, context, args, result;\n  var previous = 0;\n\n  var later = function later() {\n    previous = options.leading === false ? 0 : now();\n    timeout = null;\n    result = func.apply(context, args);\n    if (!timeout) context = args = null;\n  };\n\n  var throttled = function throttled() {\n    var at = now();\n    if (!previous && options.leading === false) previous = at;\n    var remaining = wait - (at - previous);\n    context = this;\n    args = arguments;\n\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n\n      previous = at;\n      result = func.apply(context, args);\n      if (!timeout) context = args = null;\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(later, remaining);\n    }\n\n    return result;\n  };\n\n  throttled.cancel = function () {\n    clearTimeout(timeout);\n    previous = 0;\n    timeout = context = args = null;\n  };\n\n  return throttled;\n}\n\nvar MARGIN_TYPE = {\n  ltr: ['marginLeft', 'marginRight'],\n  rtl: ['marginRight', 'marginLeft']\n};\nfunction Gaps (Glide, Components, Events) {\n  var Gaps = {\n    /**\n     * Applies gaps between slides. First and last\n     * slides do not receive it's edge margins.\n     *\n     * @param {HTMLCollection} slides\n     * @return {Void}\n     */\n    apply: function apply(slides) {\n      for (var i = 0, len = slides.length; i < len; i++) {\n        var style = slides[i].style;\n        var direction = Components.Direction.value;\n\n        if (i !== 0) {\n          style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n        } else {\n          style[MARGIN_TYPE[direction][0]] = '';\n        }\n\n        if (i !== slides.length - 1) {\n          style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n        } else {\n          style[MARGIN_TYPE[direction][1]] = '';\n        }\n      }\n    },\n\n    /**\n     * Removes gaps from the slides.\n     *\n     * @param {HTMLCollection} slides\n     * @returns {Void}\n    */\n    remove: function remove(slides) {\n      for (var i = 0, len = slides.length; i < len; i++) {\n        var style = slides[i].style;\n        style.marginLeft = '';\n        style.marginRight = '';\n      }\n    }\n  };\n  define(Gaps, 'value', {\n    /**\n     * Gets value of the gap.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      return toInt(Glide.settings.gap);\n    }\n  });\n  define(Gaps, 'grow', {\n    /**\n     * Gets additional dimensions value caused by gaps.\n     * Used to increase width of the slides wrapper.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      return Gaps.value * Components.Sizes.length;\n    }\n  });\n  define(Gaps, 'reductor', {\n    /**\n     * Gets reduction value caused by gaps.\n     * Used to subtract width of the slides.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      var perView = Glide.settings.perView;\n      return Gaps.value * (perView - 1) / perView;\n    }\n  });\n  /**\n   * Apply calculated gaps:\n   * - after building, so slides (including clones) will receive proper margins\n   * - on updating via API, to recalculate gaps with new options\n   */\n\n  Events.on(['build.after', 'update'], throttle(function () {\n    Gaps.apply(Components.Html.wrapper.children);\n  }, 30));\n  /**\n   * Remove gaps:\n   * - on destroying to bring markup to its inital state\n   */\n\n  Events.on('destroy', function () {\n    Gaps.remove(Components.Html.wrapper.children);\n  });\n  return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param  {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n  if (node && node.parentNode) {\n    var n = node.parentNode.firstChild;\n    var matched = [];\n\n    for (; n; n = n.nextSibling) {\n      if (n.nodeType === 1 && n !== node) {\n        matched.push(n);\n      }\n    }\n\n    return matched;\n  }\n\n  return [];\n}\n/**\n * Coerces a NodeList to an Array.\n *\n * @param  {NodeList} nodeList\n * @return {Array}\n */\n\nfunction toArray(nodeList) {\n  return Array.prototype.slice.call(nodeList);\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\nfunction Html (Glide, Components, Events) {\n  var Html = {\n    /**\n     * Setup slider HTML nodes.\n     *\n     * @param {Glide} glide\n     */\n    mount: function mount() {\n      this.root = Glide.selector;\n      this.track = this.root.querySelector(TRACK_SELECTOR);\n      this.collectSlides();\n    },\n\n    /**\n     * Collect slides\n     */\n    collectSlides: function collectSlides() {\n      this.slides = toArray(this.wrapper.children).filter(function (slide) {\n        return !slide.classList.contains(Glide.settings.classes.slide.clone);\n      });\n    }\n  };\n  define(Html, 'root', {\n    /**\n     * Gets node of the glide main element.\n     *\n     * @return {Object}\n     */\n    get: function get() {\n      return Html._r;\n    },\n\n    /**\n     * Sets node of the glide main element.\n     *\n     * @return {Object}\n     */\n    set: function set(r) {\n      if (isString(r)) {\n        r = document.querySelector(r);\n      }\n\n      if (r !== null) {\n        Html._r = r;\n      } else {\n        warn('Root element must be a existing Html node');\n      }\n    }\n  });\n  define(Html, 'track', {\n    /**\n     * Gets node of the glide track with slides.\n     *\n     * @return {Object}\n     */\n    get: function get() {\n      return Html._t;\n    },\n\n    /**\n     * Sets node of the glide track with slides.\n     *\n     * @return {Object}\n     */\n    set: function set(t) {\n      Html._t = t;\n    }\n  });\n  define(Html, 'wrapper', {\n    /**\n     * Gets node of the slides wrapper.\n     *\n     * @return {Object}\n     */\n    get: function get() {\n      return Html.track.children[0];\n    }\n  });\n  /**\n   * Add/remove/reorder dynamic slides\n   */\n\n  Events.on('update', function () {\n    Html.collectSlides();\n  });\n  return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n  var Peek = {\n    /**\n     * Setups how much to peek based on settings.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.value = Glide.settings.peek;\n    }\n  };\n  define(Peek, 'value', {\n    /**\n     * Gets value of the peek.\n     *\n     * @returns {Number|Object}\n     */\n    get: function get() {\n      return Peek._v;\n    },\n\n    /**\n     * Sets value of the peek.\n     *\n     * @param {Number|Object} value\n     * @return {Void}\n     */\n    set: function set(value) {\n      if (isObject(value)) {\n        value.before = toInt(value.before);\n        value.after = toInt(value.after);\n      } else {\n        value = toInt(value);\n      }\n\n      Peek._v = value;\n    }\n  });\n  define(Peek, 'reductor', {\n    /**\n     * Gets reduction value caused by peek.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      var value = Peek.value;\n      var perView = Glide.settings.perView;\n\n      if (isObject(value)) {\n        return value.before / perView + value.after / perView;\n      }\n\n      return value * 2 / perView;\n    }\n  });\n  /**\n   * Recalculate peeking sizes on:\n   * - when resizing window to update to proper percents\n   */\n\n  Events.on(['resize', 'update'], function () {\n    Peek.mount();\n  });\n  return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n  var Move = {\n    /**\n     * Constructs move component.\n     *\n     * @returns {Void}\n     */\n    mount: function mount() {\n      this._o = 0;\n    },\n\n    /**\n     * Calculates a movement value based on passed offset and currently active index.\n     *\n     * @param  {Number} offset\n     * @return {Void}\n     */\n    make: function make() {\n      var _this = this;\n\n      var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n      this.offset = offset;\n      Events.emit('move', {\n        movement: this.value\n      });\n      Components.Transition.after(function () {\n        Events.emit('move.after', {\n          movement: _this.value\n        });\n      });\n    }\n  };\n  define(Move, 'offset', {\n    /**\n     * Gets an offset value used to modify current translate.\n     *\n     * @return {Object}\n     */\n    get: function get() {\n      return Move._o;\n    },\n\n    /**\n     * Sets an offset value used to modify current translate.\n     *\n     * @return {Object}\n     */\n    set: function set(value) {\n      Move._o = !isUndefined(value) ? toInt(value) : 0;\n    }\n  });\n  define(Move, 'translate', {\n    /**\n     * Gets a raw movement value.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Components.Sizes.slideWidth * Glide.index;\n    }\n  });\n  define(Move, 'value', {\n    /**\n     * Gets an actual movement value corrected by offset.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      var offset = this.offset;\n      var translate = this.translate;\n\n      if (Components.Direction.is('rtl')) {\n        return translate + offset;\n      }\n\n      return translate - offset;\n    }\n  });\n  /**\n   * Make movement to proper slide on:\n   * - before build, so glide will start at `startAt` index\n   * - on each standard run to move to newly calculated index\n   */\n\n  Events.on(['build.before', 'run'], function () {\n    Move.make();\n  });\n  return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n  var Sizes = {\n    /**\n     * Setups dimensions of slides.\n     *\n     * @return {Void}\n     */\n    setupSlides: function setupSlides() {\n      var width = \"\".concat(this.slideWidth, \"px\");\n      var slides = Components.Html.slides;\n\n      for (var i = 0; i < slides.length; i++) {\n        slides[i].style.width = width;\n      }\n    },\n\n    /**\n     * Setups dimensions of slides wrapper.\n     *\n     * @return {Void}\n     */\n    setupWrapper: function setupWrapper() {\n      Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n    },\n\n    /**\n     * Removes applied styles from HTML elements.\n     *\n     * @returns {Void}\n     */\n    remove: function remove() {\n      var slides = Components.Html.slides;\n\n      for (var i = 0; i < slides.length; i++) {\n        slides[i].style.width = '';\n      }\n\n      Components.Html.wrapper.style.width = '';\n    }\n  };\n  define(Sizes, 'length', {\n    /**\n     * Gets count number of the slides.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Components.Html.slides.length;\n    }\n  });\n  define(Sizes, 'width', {\n    /**\n     * Gets width value of the slider (visible area).\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Components.Html.track.offsetWidth;\n    }\n  });\n  define(Sizes, 'wrapperSize', {\n    /**\n     * Gets size of the slides wrapper.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n    }\n  });\n  define(Sizes, 'slideWidth', {\n    /**\n     * Gets width value of a single slide.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n    }\n  });\n  /**\n   * Apply calculated glide's dimensions:\n   * - before building, so other dimensions (e.g. translate) will be calculated propertly\n   * - when resizing window to recalculate sildes dimensions\n   * - on updating via API, to calculate dimensions based on new options\n   */\n\n  Events.on(['build.before', 'resize', 'update'], function () {\n    Sizes.setupSlides();\n    Sizes.setupWrapper();\n  });\n  /**\n   * Remove calculated glide's dimensions:\n   * - on destoting to bring markup to its inital state\n   */\n\n  Events.on('destroy', function () {\n    Sizes.remove();\n  });\n  return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n  var Build = {\n    /**\n     * Init glide building. Adds classes, sets\n     * dimensions and setups initial state.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      Events.emit('build.before');\n      this.typeClass();\n      this.activeClass();\n      Events.emit('build.after');\n    },\n\n    /**\n     * Adds `type` class to the glide element.\n     *\n     * @return {Void}\n     */\n    typeClass: function typeClass() {\n      Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n    },\n\n    /**\n     * Sets active class to current slide.\n     *\n     * @return {Void}\n     */\n    activeClass: function activeClass() {\n      var classes = Glide.settings.classes;\n      var slide = Components.Html.slides[Glide.index];\n\n      if (slide) {\n        slide.classList.add(classes.slide.active);\n        siblings(slide).forEach(function (sibling) {\n          sibling.classList.remove(classes.slide.active);\n        });\n      }\n    },\n\n    /**\n     * Removes HTML classes applied at building.\n     *\n     * @return {Void}\n     */\n    removeClasses: function removeClasses() {\n      var _Glide$settings$class = Glide.settings.classes,\n          type = _Glide$settings$class.type,\n          slide = _Glide$settings$class.slide;\n      Components.Html.root.classList.remove(type[Glide.settings.type]);\n      Components.Html.slides.forEach(function (sibling) {\n        sibling.classList.remove(slide.active);\n      });\n    }\n  };\n  /**\n   * Clear building classes:\n   * - on destroying to bring HTML to its initial state\n   * - on updating to remove classes before remounting component\n   */\n\n  Events.on(['destroy', 'update'], function () {\n    Build.removeClasses();\n  });\n  /**\n   * Remount component:\n   * - on resizing of the window to calculate new dimensions\n   * - on updating settings via API\n   */\n\n  Events.on(['resize', 'update'], function () {\n    Build.mount();\n  });\n  /**\n   * Swap active class of current slide:\n   * - after each move to the new index\n   */\n\n  Events.on('move.after', function () {\n    Build.activeClass();\n  });\n  return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n  var Clones = {\n    /**\n     * Create pattern map and collect slides to be cloned.\n     */\n    mount: function mount() {\n      this.items = [];\n\n      if (Glide.isType('carousel')) {\n        this.items = this.collect();\n      }\n    },\n\n    /**\n     * Collect clones with pattern.\n     *\n     * @return {[]}\n     */\n    collect: function collect() {\n      var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n      var slides = Components.Html.slides;\n      var _Glide$settings = Glide.settings,\n          perView = _Glide$settings.perView,\n          classes = _Glide$settings.classes,\n          cloningRatio = _Glide$settings.cloningRatio;\n\n      if (slides.length > 0) {\n        var peekIncrementer = +!!Glide.settings.peek;\n        var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n        var append = slides.slice(0, cloneCount).reverse();\n        var prepend = slides.slice(cloneCount * -1);\n\n        for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n          for (var i = 0; i < append.length; i++) {\n            var clone = append[i].cloneNode(true);\n            clone.classList.add(classes.slide.clone);\n            items.push(clone);\n          }\n\n          for (var _i = 0; _i < prepend.length; _i++) {\n            var _clone = prepend[_i].cloneNode(true);\n\n            _clone.classList.add(classes.slide.clone);\n\n            items.unshift(_clone);\n          }\n        }\n      }\n\n      return items;\n    },\n\n    /**\n     * Append cloned slides with generated pattern.\n     *\n     * @return {Void}\n     */\n    append: function append() {\n      var items = this.items;\n      var _Components$Html = Components.Html,\n          wrapper = _Components$Html.wrapper,\n          slides = _Components$Html.slides;\n      var half = Math.floor(items.length / 2);\n      var prepend = items.slice(0, half).reverse();\n      var append = items.slice(half * -1).reverse();\n      var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n      for (var i = 0; i < append.length; i++) {\n        wrapper.appendChild(append[i]);\n      }\n\n      for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n        wrapper.insertBefore(prepend[_i2], slides[0]);\n      }\n\n      for (var _i3 = 0; _i3 < items.length; _i3++) {\n        items[_i3].style.width = width;\n      }\n    },\n\n    /**\n     * Remove all cloned slides.\n     *\n     * @return {Void}\n     */\n    remove: function remove() {\n      var items = this.items;\n\n      for (var i = 0; i < items.length; i++) {\n        Components.Html.wrapper.removeChild(items[i]);\n      }\n    }\n  };\n  define(Clones, 'grow', {\n    /**\n     * Gets additional dimensions value caused by clones.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n    }\n  });\n  /**\n   * Append additional slide's clones:\n   * - while glide's type is `carousel`\n   */\n\n  Events.on('update', function () {\n    Clones.remove();\n    Clones.mount();\n    Clones.append();\n  });\n  /**\n   * Append additional slide's clones:\n   * - while glide's type is `carousel`\n   */\n\n  Events.on('build.before', function () {\n    if (Glide.isType('carousel')) {\n      Clones.append();\n    }\n  });\n  /**\n   * Remove clones HTMLElements:\n   * - on destroying, to bring HTML to its initial state\n   */\n\n  Events.on('destroy', function () {\n    Clones.remove();\n  });\n  return Clones;\n}\n\nvar EventsBinder = /*#__PURE__*/function () {\n  /**\n   * Construct a EventsBinder instance.\n   */\n  function EventsBinder() {\n    var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    _classCallCheck(this, EventsBinder);\n\n    this.listeners = listeners;\n  }\n  /**\n   * Adds events listeners to arrows HTML elements.\n   *\n   * @param  {String|Array} events\n   * @param  {Element|Window|Document} el\n   * @param  {Function} closure\n   * @param  {Boolean|Object} capture\n   * @return {Void}\n   */\n\n\n  _createClass(EventsBinder, [{\n    key: \"on\",\n    value: function on(events, el, closure) {\n      var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n      if (isString(events)) {\n        events = [events];\n      }\n\n      for (var i = 0; i < events.length; i++) {\n        this.listeners[events[i]] = closure;\n        el.addEventListener(events[i], this.listeners[events[i]], capture);\n      }\n    }\n    /**\n     * Removes event listeners from arrows HTML elements.\n     *\n     * @param  {String|Array} events\n     * @param  {Element|Window|Document} el\n     * @param  {Boolean|Object} capture\n     * @return {Void}\n     */\n\n  }, {\n    key: \"off\",\n    value: function off(events, el) {\n      var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n      if (isString(events)) {\n        events = [events];\n      }\n\n      for (var i = 0; i < events.length; i++) {\n        el.removeEventListener(events[i], this.listeners[events[i]], capture);\n      }\n    }\n    /**\n     * Destroy collected listeners.\n     *\n     * @returns {Void}\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      delete this.listeners;\n    }\n  }]);\n\n  return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n  var Resize = {\n    /**\n     * Initializes window bindings.\n     */\n    mount: function mount() {\n      this.bind();\n    },\n\n    /**\n     * Binds `rezsize` listener to the window.\n     * It's a costly event, so we are debouncing it.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      Binder.on('resize', window, throttle(function () {\n        Events.emit('resize');\n      }, Glide.settings.throttle));\n    },\n\n    /**\n     * Unbinds listeners from the window.\n     *\n     * @return {Void}\n     */\n    unbind: function unbind() {\n      Binder.off('resize', window);\n    }\n  };\n  /**\n   * Remove bindings from window:\n   * - on destroying, to remove added EventListener\n   */\n\n  Events.on('destroy', function () {\n    Resize.unbind();\n    Binder.destroy();\n  });\n  return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n  '>': '<',\n  '<': '>',\n  '=': '='\n};\nfunction Direction (Glide, Components, Events) {\n  var Direction = {\n    /**\n     * Setups gap value based on settings.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.value = Glide.settings.direction;\n    },\n\n    /**\n     * Resolves pattern based on direction value\n     *\n     * @param {String} pattern\n     * @returns {String}\n     */\n    resolve: function resolve(pattern) {\n      var token = pattern.slice(0, 1);\n\n      if (this.is('rtl')) {\n        return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n      }\n\n      return pattern;\n    },\n\n    /**\n     * Checks value of direction mode.\n     *\n     * @param {String} direction\n     * @returns {Boolean}\n     */\n    is: function is(direction) {\n      return this.value === direction;\n    },\n\n    /**\n     * Applies direction class to the root HTML element.\n     *\n     * @return {Void}\n     */\n    addClass: function addClass() {\n      Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n    },\n\n    /**\n     * Removes direction class from the root HTML element.\n     *\n     * @return {Void}\n     */\n    removeClass: function removeClass() {\n      Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n    }\n  };\n  define(Direction, 'value', {\n    /**\n     * Gets value of the direction.\n     *\n     * @returns {Number}\n     */\n    get: function get() {\n      return Direction._v;\n    },\n\n    /**\n     * Sets value of the direction.\n     *\n     * @param {String} value\n     * @return {Void}\n     */\n    set: function set(value) {\n      if (VALID_DIRECTIONS.indexOf(value) > -1) {\n        Direction._v = value;\n      } else {\n        warn('Direction value must be `ltr` or `rtl`');\n      }\n    }\n  });\n  /**\n   * Clear direction class:\n   * - on destroy to bring HTML to its initial state\n   * - on update to remove class before reappling bellow\n   */\n\n  Events.on(['destroy', 'update'], function () {\n    Direction.removeClass();\n  });\n  /**\n   * Remount component:\n   * - on update to reflect changes in direction value\n   */\n\n  Events.on('update', function () {\n    Direction.mount();\n  });\n  /**\n   * Apply direction class:\n   * - before building to apply class for the first time\n   * - on updating to reapply direction class that may changed\n   */\n\n  Events.on(['build.before', 'update'], function () {\n    Direction.addClass();\n  });\n  return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n  return {\n    /**\n     * Negates the passed translate if glide is in RTL option.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      if (Components.Direction.is('rtl')) {\n        return -translate;\n      }\n\n      return translate;\n    }\n  };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n  return {\n    /**\n     * Modifies passed translate value with number in the `gap` settings.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n      return translate + Components.Gaps.value * multiplier;\n    }\n  };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n  return {\n    /**\n     * Adds to the passed translate width of the half of clones.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      return translate + Components.Clones.grow / 2;\n    }\n  };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\n\nfunction Peeking (Glide, Components) {\n  return {\n    /**\n     * Modifies passed translate value with a `peek` setting.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      if (Glide.settings.focusAt >= 0) {\n        var peek = Components.Peek.value;\n\n        if (isObject(peek)) {\n          return translate - peek.before;\n        }\n\n        return translate - peek;\n      }\n\n      return translate;\n    }\n  };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n  return {\n    /**\n     * Modifies passed translate value with index in the `focusAt` setting.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    modify: function modify(translate) {\n      var gap = Components.Gaps.value;\n      var width = Components.Sizes.width;\n      var focusAt = Glide.settings.focusAt;\n      var slideWidth = Components.Sizes.slideWidth;\n\n      if (focusAt === 'center') {\n        return translate - (width / 2 - slideWidth / 2);\n      }\n\n      return translate - slideWidth * focusAt - gap * focusAt;\n    }\n  };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param  {Object} Glide\n * @param  {Object} Components\n * @return {Object}\n */\n\nfunction mutator (Glide, Components, Events) {\n  /**\n   * Merge instance transformers with collection of default transformers.\n   * It's important that the Rtl component be last on the list,\n   * so it reflects all previous transformations.\n   *\n   * @type {Array}\n   */\n  var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n  return {\n    /**\n     * Piplines translate value with registered transformers.\n     *\n     * @param  {Number} translate\n     * @return {Number}\n     */\n    mutate: function mutate(translate) {\n      for (var i = 0; i < TRANSFORMERS.length; i++) {\n        var transformer = TRANSFORMERS[i];\n\n        if (isFunction(transformer) && isFunction(transformer().modify)) {\n          translate = transformer(Glide, Components, Events).modify(translate);\n        } else {\n          warn('Transformer should be a function that returns an object with `modify()` method');\n        }\n      }\n\n      return translate;\n    }\n  };\n}\n\nfunction Translate (Glide, Components, Events) {\n  var Translate = {\n    /**\n     * Sets value of translate on HTML element.\n     *\n     * @param {Number} value\n     * @return {Void}\n     */\n    set: function set(value) {\n      var transform = mutator(Glide, Components).mutate(value);\n      var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n      Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n      Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n      Components.Html.wrapper.style.transform = translate3d;\n    },\n\n    /**\n     * Removes value of translate from HTML element.\n     *\n     * @return {Void}\n     */\n    remove: function remove() {\n      Components.Html.wrapper.style.transform = '';\n    },\n\n    /**\n     * @return {number}\n     */\n    getStartIndex: function getStartIndex() {\n      var length = Components.Sizes.length;\n      var index = Glide.index;\n      var perView = Glide.settings.perView;\n\n      if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n        return length + (index - perView);\n      } // \"modulo length\" converts an index that equals length to zero\n\n\n      return (index + perView) % length;\n    },\n\n    /**\n     * @return {number}\n     */\n    getTravelDistance: function getTravelDistance() {\n      var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n      if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n        // reverse travel distance so that we don't have to change subtract operations\n        return travelDistance * -1;\n      }\n\n      return travelDistance;\n    }\n  };\n  /**\n   * Set new translate value:\n   * - on move to reflect index change\n   * - on updating via API to reflect possible changes in options\n   */\n\n  Events.on('move', function (context) {\n    if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n      return Translate.set(context.movement);\n    }\n\n    Components.Transition.after(function () {\n      Events.emit('translate.jump');\n      Translate.set(Components.Sizes.slideWidth * Glide.index);\n    });\n    var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n    return Translate.set(startWidth - Components.Translate.getTravelDistance());\n  });\n  /**\n   * Remove translate:\n   * - on destroying to bring markup to its inital state\n   */\n\n  Events.on('destroy', function () {\n    Translate.remove();\n  });\n  return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n  /**\n   * Holds inactivity status of transition.\n   * When true transition is not applied.\n   *\n   * @type {Boolean}\n   */\n  var disabled = false;\n  var Transition = {\n    /**\n     * Composes string of the CSS transition.\n     *\n     * @param {String} property\n     * @return {String}\n     */\n    compose: function compose(property) {\n      var settings = Glide.settings;\n\n      if (disabled) {\n        return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n      }\n\n      return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n    },\n\n    /**\n     * Sets value of transition on HTML element.\n     *\n     * @param {String=} property\n     * @return {Void}\n     */\n    set: function set() {\n      var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n      Components.Html.wrapper.style.transition = this.compose(property);\n    },\n\n    /**\n     * Removes value of transition from HTML element.\n     *\n     * @return {Void}\n     */\n    remove: function remove() {\n      Components.Html.wrapper.style.transition = '';\n    },\n\n    /**\n     * Runs callback after animation.\n     *\n     * @param  {Function} callback\n     * @return {Void}\n     */\n    after: function after(callback) {\n      setTimeout(function () {\n        callback();\n      }, this.duration);\n    },\n\n    /**\n     * Enable transition.\n     *\n     * @return {Void}\n     */\n    enable: function enable() {\n      disabled = false;\n      this.set();\n    },\n\n    /**\n     * Disable transition.\n     *\n     * @return {Void}\n     */\n    disable: function disable() {\n      disabled = true;\n      this.set();\n    }\n  };\n  define(Transition, 'duration', {\n    /**\n     * Gets duration of the transition based\n     * on currently running animation type.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      var settings = Glide.settings;\n\n      if (Glide.isType('slider') && Components.Run.offset) {\n        return settings.rewindDuration;\n      }\n\n      return settings.animationDuration;\n    }\n  });\n  /**\n   * Set transition `style` value:\n   * - on each moving, because it may be cleared by offset move\n   */\n\n  Events.on('move', function () {\n    Transition.set();\n  });\n  /**\n   * Disable transition:\n   * - before initial build to avoid transitioning from `0` to `startAt` index\n   * - while resizing window and recalculating dimensions\n   * - on jumping from offset transition at start and end edges in `carousel` type\n   */\n\n  Events.on(['build.before', 'resize', 'translate.jump'], function () {\n    Transition.disable();\n  });\n  /**\n   * Enable transition:\n   * - on each running, because it may be disabled by offset move\n   */\n\n  Events.on('run', function () {\n    Transition.enable();\n  });\n  /**\n   * Remove transition:\n   * - on destroying to bring markup to its inital state\n   */\n\n  Events.on('destroy', function () {\n    Transition.remove();\n  });\n  return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\nvar supportsPassive = false;\n\ntry {\n  var opts = Object.defineProperty({}, 'passive', {\n    get: function get() {\n      supportsPassive = true;\n    }\n  });\n  window.addEventListener('testPassive', null, opts);\n  window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\nfunction Swipe (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n  var swipeSin = 0;\n  var swipeStartX = 0;\n  var swipeStartY = 0;\n  var disabled = false;\n  var capture = supportsPassive$1 ? {\n    passive: true\n  } : false;\n  var Swipe = {\n    /**\n     * Initializes swipe bindings.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.bindSwipeStart();\n    },\n\n    /**\n     * Handler for `swipestart` event. Calculates entry points of the user's tap.\n     *\n     * @param {Object} event\n     * @return {Void}\n     */\n    start: function start(event) {\n      if (!disabled && !Glide.disabled) {\n        this.disable();\n        var swipe = this.touches(event);\n        swipeSin = null;\n        swipeStartX = toInt(swipe.pageX);\n        swipeStartY = toInt(swipe.pageY);\n        this.bindSwipeMove();\n        this.bindSwipeEnd();\n        Events.emit('swipe.start');\n      }\n    },\n\n    /**\n     * Handler for `swipemove` event. Calculates user's tap angle and distance.\n     *\n     * @param {Object} event\n     */\n    move: function move(event) {\n      if (!Glide.disabled) {\n        var _Glide$settings = Glide.settings,\n            touchAngle = _Glide$settings.touchAngle,\n            touchRatio = _Glide$settings.touchRatio,\n            classes = _Glide$settings.classes;\n        var swipe = this.touches(event);\n        var subExSx = toInt(swipe.pageX) - swipeStartX;\n        var subEySy = toInt(swipe.pageY) - swipeStartY;\n        var powEX = Math.abs(subExSx << 2);\n        var powEY = Math.abs(subEySy << 2);\n        var swipeHypotenuse = Math.sqrt(powEX + powEY);\n        var swipeCathetus = Math.sqrt(powEY);\n        swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n        if (swipeSin * 180 / Math.PI < touchAngle) {\n          event.stopPropagation();\n          Components.Move.make(subExSx * toFloat(touchRatio));\n          Components.Html.root.classList.add(classes.dragging);\n          Events.emit('swipe.move');\n        } else {\n          return false;\n        }\n      }\n    },\n\n    /**\n     * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n     *\n     * @param {Object} event\n     * @return {Void}\n     */\n    end: function end(event) {\n      if (!Glide.disabled) {\n        var _Glide$settings2 = Glide.settings,\n            perSwipe = _Glide$settings2.perSwipe,\n            touchAngle = _Glide$settings2.touchAngle,\n            classes = _Glide$settings2.classes;\n        var swipe = this.touches(event);\n        var threshold = this.threshold(event);\n        var swipeDistance = swipe.pageX - swipeStartX;\n        var swipeDeg = swipeSin * 180 / Math.PI;\n        this.enable();\n\n        if (swipeDistance > threshold && swipeDeg < touchAngle) {\n          Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n        } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n          Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n        } else {\n          // While swipe don't reach distance apply previous transform.\n          Components.Move.make();\n        }\n\n        Components.Html.root.classList.remove(classes.dragging);\n        this.unbindSwipeMove();\n        this.unbindSwipeEnd();\n        Events.emit('swipe.end');\n      }\n    },\n\n    /**\n     * Binds swipe's starting event.\n     *\n     * @return {Void}\n     */\n    bindSwipeStart: function bindSwipeStart() {\n      var _this = this;\n\n      var _Glide$settings3 = Glide.settings,\n          swipeThreshold = _Glide$settings3.swipeThreshold,\n          dragThreshold = _Glide$settings3.dragThreshold;\n\n      if (swipeThreshold) {\n        Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n          _this.start(event);\n        }, capture);\n      }\n\n      if (dragThreshold) {\n        Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n          _this.start(event);\n        }, capture);\n      }\n    },\n\n    /**\n     * Unbinds swipe's starting event.\n     *\n     * @return {Void}\n     */\n    unbindSwipeStart: function unbindSwipeStart() {\n      Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n      Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n    },\n\n    /**\n     * Binds swipe's moving event.\n     *\n     * @return {Void}\n     */\n    bindSwipeMove: function bindSwipeMove() {\n      var _this2 = this;\n\n      Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n        _this2.move(event);\n      }, Glide.settings.throttle), capture);\n    },\n\n    /**\n     * Unbinds swipe's moving event.\n     *\n     * @return {Void}\n     */\n    unbindSwipeMove: function unbindSwipeMove() {\n      Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n    },\n\n    /**\n     * Binds swipe's ending event.\n     *\n     * @return {Void}\n     */\n    bindSwipeEnd: function bindSwipeEnd() {\n      var _this3 = this;\n\n      Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n        _this3.end(event);\n      });\n    },\n\n    /**\n     * Unbinds swipe's ending event.\n     *\n     * @return {Void}\n     */\n    unbindSwipeEnd: function unbindSwipeEnd() {\n      Binder.off(END_EVENTS, Components.Html.wrapper);\n    },\n\n    /**\n     * Normalizes event touches points accorting to different types.\n     *\n     * @param {Object} event\n     */\n    touches: function touches(event) {\n      if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n        return event;\n      }\n\n      return event.touches[0] || event.changedTouches[0];\n    },\n\n    /**\n     * Gets value of minimum swipe distance settings based on event type.\n     *\n     * @return {Number}\n     */\n    threshold: function threshold(event) {\n      var settings = Glide.settings;\n\n      if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n        return settings.dragThreshold;\n      }\n\n      return settings.swipeThreshold;\n    },\n\n    /**\n     * Enables swipe event.\n     *\n     * @return {self}\n     */\n    enable: function enable() {\n      disabled = false;\n      Components.Transition.enable();\n      return this;\n    },\n\n    /**\n     * Disables swipe event.\n     *\n     * @return {self}\n     */\n    disable: function disable() {\n      disabled = true;\n      Components.Transition.disable();\n      return this;\n    }\n  };\n  /**\n   * Add component class:\n   * - after initial building\n   */\n\n  Events.on('build.after', function () {\n    Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n  });\n  /**\n   * Remove swiping bindings:\n   * - on destroying, to remove added EventListeners\n   */\n\n  Events.on('destroy', function () {\n    Swipe.unbindSwipeStart();\n    Swipe.unbindSwipeMove();\n    Swipe.unbindSwipeEnd();\n    Binder.destroy();\n  });\n  return Swipe;\n}\n\nfunction Images (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n  var Images = {\n    /**\n     * Binds listener to glide wrapper.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.bind();\n    },\n\n    /**\n     * Binds `dragstart` event on wrapper to prevent dragging images.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n    },\n\n    /**\n     * Unbinds `dragstart` event on wrapper.\n     *\n     * @return {Void}\n     */\n    unbind: function unbind() {\n      Binder.off('dragstart', Components.Html.wrapper);\n    },\n\n    /**\n     * Event handler. Prevents dragging.\n     *\n     * @return {Void}\n     */\n    dragstart: function dragstart(event) {\n      event.preventDefault();\n    }\n  };\n  /**\n   * Remove bindings from images:\n   * - on destroying, to remove added EventListeners\n   */\n\n  Events.on('destroy', function () {\n    Images.unbind();\n    Binder.destroy();\n  });\n  return Images;\n}\n\nfunction Anchors (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n  /**\n   * Holds detaching status of anchors.\n   * Prevents detaching of already detached anchors.\n   *\n   * @private\n   * @type {Boolean}\n   */\n\n  var detached = false;\n  /**\n   * Holds preventing status of anchors.\n   * If `true` redirection after click will be disabled.\n   *\n   * @private\n   * @type {Boolean}\n   */\n\n  var prevented = false;\n  var Anchors = {\n    /**\n     * Setups a initial state of anchors component.\n     *\n     * @returns {Void}\n     */\n    mount: function mount() {\n      /**\n       * Holds collection of anchors elements.\n       *\n       * @private\n       * @type {HTMLCollection}\n       */\n      this._a = Components.Html.wrapper.querySelectorAll('a');\n      this.bind();\n    },\n\n    /**\n     * Binds events to anchors inside a track.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      Binder.on('click', Components.Html.wrapper, this.click);\n    },\n\n    /**\n     * Unbinds events attached to anchors inside a track.\n     *\n     * @return {Void}\n     */\n    unbind: function unbind() {\n      Binder.off('click', Components.Html.wrapper);\n    },\n\n    /**\n     * Handler for click event. Prevents clicks when glide is in `prevent` status.\n     *\n     * @param  {Object} event\n     * @return {Void}\n     */\n    click: function click(event) {\n      if (prevented) {\n        event.stopPropagation();\n        event.preventDefault();\n      }\n    },\n\n    /**\n     * Detaches anchors click event inside glide.\n     *\n     * @return {self}\n     */\n    detach: function detach() {\n      prevented = true;\n\n      if (!detached) {\n        for (var i = 0; i < this.items.length; i++) {\n          this.items[i].draggable = false;\n        }\n\n        detached = true;\n      }\n\n      return this;\n    },\n\n    /**\n     * Attaches anchors click events inside glide.\n     *\n     * @return {self}\n     */\n    attach: function attach() {\n      prevented = false;\n\n      if (detached) {\n        for (var i = 0; i < this.items.length; i++) {\n          this.items[i].draggable = true;\n        }\n\n        detached = false;\n      }\n\n      return this;\n    }\n  };\n  define(Anchors, 'items', {\n    /**\n     * Gets collection of the arrows HTML elements.\n     *\n     * @return {HTMLElement[]}\n     */\n    get: function get() {\n      return Anchors._a;\n    }\n  });\n  /**\n   * Detach anchors inside slides:\n   * - on swiping, so they won't redirect to its `href` attributes\n   */\n\n  Events.on('swipe.move', function () {\n    Anchors.detach();\n  });\n  /**\n   * Attach anchors inside slides:\n   * - after swiping and transitions ends, so they can redirect after click again\n   */\n\n  Events.on('swipe.end', function () {\n    Components.Transition.after(function () {\n      Anchors.attach();\n    });\n  });\n  /**\n   * Unbind anchors inside slides:\n   * - on destroying, to bring anchors to its initial state\n   */\n\n  Events.on('destroy', function () {\n    Anchors.attach();\n    Anchors.unbind();\n    Binder.destroy();\n  });\n  return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\nvar PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\nvar NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\nfunction Controls (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n  var capture = supportsPassive$1 ? {\n    passive: true\n  } : false;\n  var Controls = {\n    /**\n     * Inits arrows. Binds events listeners\n     * to the arrows HTML elements.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      /**\n       * Collection of navigation HTML elements.\n       *\n       * @private\n       * @type {HTMLCollection}\n       */\n      this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n      /**\n       * Collection of controls HTML elements.\n       *\n       * @private\n       * @type {HTMLCollection}\n       */\n\n      this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n      /**\n       * Collection of arrow control HTML elements.\n       *\n       * @private\n       * @type {Object}\n       */\n\n      this._arrowControls = {\n        previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n        next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n      };\n      this.addBindings();\n    },\n\n    /**\n     * Sets active class to current slide.\n     *\n     * @return {Void}\n     */\n    setActive: function setActive() {\n      for (var i = 0; i < this._n.length; i++) {\n        this.addClass(this._n[i].children);\n      }\n    },\n\n    /**\n     * Removes active class to current slide.\n     *\n     * @return {Void}\n     */\n    removeActive: function removeActive() {\n      for (var i = 0; i < this._n.length; i++) {\n        this.removeClass(this._n[i].children);\n      }\n    },\n\n    /**\n     * Toggles active class on items inside navigation.\n     *\n     * @param  {HTMLElement} controls\n     * @return {Void}\n     */\n    addClass: function addClass(controls) {\n      var settings = Glide.settings;\n      var item = controls[Glide.index];\n\n      if (!item) {\n        return;\n      }\n\n      item.classList.add(settings.classes.nav.active);\n      siblings(item).forEach(function (sibling) {\n        sibling.classList.remove(settings.classes.nav.active);\n      });\n    },\n\n    /**\n     * Removes active class from active control.\n     *\n     * @param  {HTMLElement} controls\n     * @return {Void}\n     */\n    removeClass: function removeClass(controls) {\n      var item = controls[Glide.index];\n      item === null || item === void 0 ? void 0 : item.classList.remove(Glide.settings.classes.nav.active);\n    },\n\n    /**\n     * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n     */\n    setArrowState: function setArrowState() {\n      if (Glide.settings.rewind) {\n        return;\n      }\n\n      var next = Controls._arrowControls.next;\n      var previous = Controls._arrowControls.previous;\n      this.resetArrowState(next, previous);\n\n      if (Glide.index === 0) {\n        this.disableArrow(previous);\n      }\n\n      if (Glide.index === Components.Run.length) {\n        this.disableArrow(next);\n      }\n    },\n\n    /**\n     * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n     *\n     * @param {NodeList[]} lists\n     */\n    resetArrowState: function resetArrowState() {\n      var settings = Glide.settings;\n\n      for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n        lists[_key] = arguments[_key];\n      }\n\n      lists.forEach(function (list) {\n        toArray(list).forEach(function (element) {\n          element.classList.remove(settings.classes.arrow.disabled);\n        });\n      });\n    },\n\n    /**\n     * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n     *\n     * @param {NodeList[]} lists\n     */\n    disableArrow: function disableArrow() {\n      var settings = Glide.settings;\n\n      for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        lists[_key2] = arguments[_key2];\n      }\n\n      lists.forEach(function (list) {\n        toArray(list).forEach(function (element) {\n          element.classList.add(settings.classes.arrow.disabled);\n        });\n      });\n    },\n\n    /**\n     * Adds handles to the each group of controls.\n     *\n     * @return {Void}\n     */\n    addBindings: function addBindings() {\n      for (var i = 0; i < this._c.length; i++) {\n        this.bind(this._c[i].children);\n      }\n    },\n\n    /**\n     * Removes handles from the each group of controls.\n     *\n     * @return {Void}\n     */\n    removeBindings: function removeBindings() {\n      for (var i = 0; i < this._c.length; i++) {\n        this.unbind(this._c[i].children);\n      }\n    },\n\n    /**\n     * Binds events to arrows HTML elements.\n     *\n     * @param {HTMLCollection} elements\n     * @return {Void}\n     */\n    bind: function bind(elements) {\n      for (var i = 0; i < elements.length; i++) {\n        Binder.on('click', elements[i], this.click);\n        Binder.on('touchstart', elements[i], this.click, capture);\n      }\n    },\n\n    /**\n     * Unbinds events binded to the arrows HTML elements.\n     *\n     * @param {HTMLCollection} elements\n     * @return {Void}\n     */\n    unbind: function unbind(elements) {\n      for (var i = 0; i < elements.length; i++) {\n        Binder.off(['click', 'touchstart'], elements[i]);\n      }\n    },\n\n    /**\n     * Handles `click` event on the arrows HTML elements.\n     * Moves slider in direction given via the\n     * `data-glide-dir` attribute.\n     *\n     * @param {Object} event\n     * @return {void}\n     */\n    click: function click(event) {\n      if (!supportsPassive$1 && event.type === 'touchstart') {\n        event.preventDefault();\n      }\n\n      var direction = event.currentTarget.getAttribute('data-glide-dir');\n      Components.Run.make(Components.Direction.resolve(direction));\n    }\n  };\n  define(Controls, 'items', {\n    /**\n     * Gets collection of the controls HTML elements.\n     *\n     * @return {HTMLElement[]}\n     */\n    get: function get() {\n      return Controls._c;\n    }\n  });\n  /**\n   * Swap active class of current navigation item:\n   * - after mounting to set it to initial index\n   * - after each move to the new index\n   */\n\n  Events.on(['mount.after', 'move.after'], function () {\n    Controls.setActive();\n  });\n  /**\n   * Add or remove disabled class of arrow elements\n   */\n\n  Events.on(['mount.after', 'run'], function () {\n    Controls.setArrowState();\n  });\n  /**\n   * Remove bindings and HTML Classes:\n   * - on destroying, to bring markup to its initial state\n   */\n\n  Events.on('destroy', function () {\n    Controls.removeBindings();\n    Controls.removeActive();\n    Binder.destroy();\n  });\n  return Controls;\n}\n\nfunction Keyboard (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n  var Keyboard = {\n    /**\n     * Binds keyboard events on component mount.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      if (Glide.settings.keyboard) {\n        this.bind();\n      }\n    },\n\n    /**\n     * Adds keyboard press events.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      Binder.on('keyup', document, this.press);\n    },\n\n    /**\n     * Removes keyboard press events.\n     *\n     * @return {Void}\n     */\n    unbind: function unbind() {\n      Binder.off('keyup', document);\n    },\n\n    /**\n     * Handles keyboard's arrows press and moving glide foward and backward.\n     *\n     * @param  {Object} event\n     * @return {Void}\n     */\n    press: function press(event) {\n      var perSwipe = Glide.settings.perSwipe;\n      var arrowSymbols = {\n        ArrowRight: '>',\n        ArrowLeft: '<'\n      };\n\n      if (['ArrowRight', 'ArrowLeft'].includes(event.code)) {\n        Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe).concat(arrowSymbols[event.code])));\n      }\n    }\n  };\n  /**\n   * Remove bindings from keyboard:\n   * - on destroying to remove added events\n   * - on updating to remove events before remounting\n   */\n\n  Events.on(['destroy', 'update'], function () {\n    Keyboard.unbind();\n  });\n  /**\n   * Remount component\n   * - on updating to reflect potential changes in settings\n   */\n\n  Events.on('update', function () {\n    Keyboard.mount();\n  });\n  /**\n   * Destroy binder:\n   * - on destroying to remove listeners\n   */\n\n  Events.on('destroy', function () {\n    Binder.destroy();\n  });\n  return Keyboard;\n}\n\nfunction Autoplay (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n  var Autoplay = {\n    /**\n     * Initializes autoplaying and events.\n     *\n     * @return {Void}\n     */\n    mount: function mount() {\n      this.enable();\n      this.start();\n\n      if (Glide.settings.hoverpause) {\n        this.bind();\n      }\n    },\n\n    /**\n     * Enables autoplaying\n     *\n     * @returns {Void}\n     */\n    enable: function enable() {\n      this._e = true;\n    },\n\n    /**\n     * Disables autoplaying.\n     *\n     * @returns {Void}\n     */\n    disable: function disable() {\n      this._e = false;\n    },\n\n    /**\n     * Starts autoplaying in configured interval.\n     *\n     * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n     * @return {Void}\n     */\n    start: function start() {\n      var _this = this;\n\n      if (!this._e) {\n        return;\n      }\n\n      this.enable();\n\n      if (Glide.settings.autoplay) {\n        if (isUndefined(this._i)) {\n          this._i = setInterval(function () {\n            _this.stop();\n\n            Components.Run.make('>');\n\n            _this.start();\n\n            Events.emit('autoplay');\n          }, this.time);\n        }\n      }\n    },\n\n    /**\n     * Stops autorunning of the glide.\n     *\n     * @return {Void}\n     */\n    stop: function stop() {\n      this._i = clearInterval(this._i);\n    },\n\n    /**\n     * Stops autoplaying while mouse is over glide's area.\n     *\n     * @return {Void}\n     */\n    bind: function bind() {\n      var _this2 = this;\n\n      Binder.on('mouseover', Components.Html.root, function () {\n        if (_this2._e) {\n          _this2.stop();\n        }\n      });\n      Binder.on('mouseout', Components.Html.root, function () {\n        if (_this2._e) {\n          _this2.start();\n        }\n      });\n    },\n\n    /**\n     * Unbind mouseover events.\n     *\n     * @returns {Void}\n     */\n    unbind: function unbind() {\n      Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n    }\n  };\n  define(Autoplay, 'time', {\n    /**\n     * Gets time period value for the autoplay interval. Prioritizes\n     * times in `data-glide-autoplay` attrubutes over options.\n     *\n     * @return {Number}\n     */\n    get: function get() {\n      var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n      if (autoplay) {\n        return toInt(autoplay);\n      }\n\n      return toInt(Glide.settings.autoplay);\n    }\n  });\n  /**\n   * Stop autoplaying and unbind events:\n   * - on destroying, to clear defined interval\n   * - on updating via API to reset interval that may changed\n   */\n\n  Events.on(['destroy', 'update'], function () {\n    Autoplay.unbind();\n  });\n  /**\n   * Stop autoplaying:\n   * - before each run, to restart autoplaying\n   * - on pausing via API\n   * - on destroying, to clear defined interval\n   * - while starting a swipe\n   * - on updating via API to reset interval that may changed\n   */\n\n  Events.on(['run.before', 'swipe.start', 'update'], function () {\n    Autoplay.stop();\n  });\n  Events.on(['pause', 'destroy'], function () {\n    Autoplay.disable();\n    Autoplay.stop();\n  });\n  /**\n   * Start autoplaying:\n   * - after each run, to restart autoplaying\n   * - on playing via API\n   * - while ending a swipe\n   */\n\n  Events.on(['run.after', 'swipe.end'], function () {\n    Autoplay.start();\n  });\n  /**\n   * Start autoplaying:\n   * - after each run, to restart autoplaying\n   * - on playing via API\n   * - while ending a swipe\n   */\n\n  Events.on(['play'], function () {\n    Autoplay.enable();\n    Autoplay.start();\n  });\n  /**\n   * Remount autoplaying:\n   * - on updating via API to reset interval that may changed\n   */\n\n  Events.on('update', function () {\n    Autoplay.mount();\n  });\n  /**\n   * Destroy a binder:\n   * - on destroying glide instance to clearup listeners\n   */\n\n  Events.on('destroy', function () {\n    Binder.destroy();\n  });\n  return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\nfunction sortBreakpoints(points) {\n  if (isObject(points)) {\n    return sortKeys(points);\n  } else {\n    warn(\"Breakpoints option must be an object\");\n  }\n\n  return {};\n}\n\nfunction Breakpoints (Glide, Components, Events) {\n  /**\n   * Instance of the binder for DOM Events.\n   *\n   * @type {EventsBinder}\n   */\n  var Binder = new EventsBinder();\n  /**\n   * Holds reference to settings.\n   *\n   * @type {Object}\n   */\n\n  var settings = Glide.settings;\n  /**\n   * Holds reference to breakpoints object in settings. Sorts breakpoints\n   * from smaller to larger. It is required in order to proper\n   * matching currently active breakpoint settings.\n   *\n   * @type {Object}\n   */\n\n  var points = sortBreakpoints(settings.breakpoints);\n  /**\n   * Cache initial settings before overwritting.\n   *\n   * @type {Object}\n   */\n\n  var defaults = Object.assign({}, settings);\n  var Breakpoints = {\n    /**\n     * Matches settings for currectly matching media breakpoint.\n     *\n     * @param {Object} points\n     * @returns {Object}\n     */\n    match: function match(points) {\n      if (typeof window.matchMedia !== 'undefined') {\n        for (var point in points) {\n          if (points.hasOwnProperty(point)) {\n            if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n              return points[point];\n            }\n          }\n        }\n      }\n\n      return defaults;\n    }\n  };\n  /**\n   * Overwrite instance settings with currently matching breakpoint settings.\n   * This happens right after component initialization.\n   */\n\n  Object.assign(settings, Breakpoints.match(points));\n  /**\n   * Update glide with settings of matched brekpoint:\n   * - window resize to update slider\n   */\n\n  Binder.on('resize', window, throttle(function () {\n    Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n  }, Glide.settings.throttle));\n  /**\n   * Resort and update default settings:\n   * - on reinit via API, so breakpoint matching will be performed with options\n   */\n\n  Events.on('update', function () {\n    points = sortBreakpoints(points);\n    defaults = Object.assign({}, settings);\n  });\n  /**\n   * Unbind resize listener:\n   * - on destroying, to bring markup to its initial state\n   */\n\n  Events.on('destroy', function () {\n    Binder.off('resize', window);\n  });\n  return Breakpoints;\n}\n\nvar COMPONENTS = {\n  // Required\n  Html: Html,\n  Translate: Translate,\n  Transition: Transition,\n  Direction: Direction,\n  Peek: Peek,\n  Sizes: Sizes,\n  Gaps: Gaps,\n  Move: Move,\n  Clones: Clones,\n  Resize: Resize,\n  Build: Build,\n  Run: Run,\n  // Optional\n  Swipe: Swipe,\n  Images: Images,\n  Anchors: Anchors,\n  Controls: Controls,\n  Keyboard: Keyboard,\n  Autoplay: Autoplay,\n  Breakpoints: Breakpoints\n};\n\nvar Glide = /*#__PURE__*/function (_Core) {\n  _inherits(Glide, _Core);\n\n  var _super = _createSuper(Glide);\n\n  function Glide() {\n    _classCallCheck(this, Glide);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Glide, [{\n    key: \"mount\",\n    value: function mount() {\n      var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n    }\n  }]);\n\n  return Glide;\n}(Glide$1);\n\n\n\n\n//# sourceURL=webpack:///./node_modules/@glidejs/glide/dist/glide.esm.js?");
98
99/***/ }),
100
vendor: 14,495 bytes, lines 101-111
101/***/ "./node_modules/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.js":
102/*!*****************************************************************************************!*\
103  !*** ./node_modules/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.js ***!
104  \*****************************************************************************************/
105/*! no static exports found */
106/***/ (function(module, exports, __webpack_require__) {
107
108eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n* dependencyLibs/inputmask.dependencyLib.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (true) {\n        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(/*! ../global/window */ \"./node_modules/inputmask/dist/inputmask/global/window.js\") ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n    } else {}\n})(function(window) {\n    var document = window.document;\n    function indexOf(list, elem) {\n        var i = 0, len = list.length;\n        for (;i < len; i++) {\n            if (list[i] === elem) {\n                return i;\n            }\n        }\n        return -1;\n    }\n    function isWindow(obj) {\n        return obj != null && obj === obj.window;\n    }\n    function isArraylike(obj) {\n        var length = \"length\" in obj && obj.length, ltype = typeof obj;\n        if (ltype === \"function\" || isWindow(obj)) {\n            return false;\n        }\n        if (obj.nodeType === 1 && length) {\n            return true;\n        }\n        return ltype === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n    }\n    function isValidElement(elem) {\n        return elem instanceof Element;\n    }\n    function DependencyLib(elem) {\n        if (elem instanceof DependencyLib) {\n            return elem;\n        }\n        if (!(this instanceof DependencyLib)) {\n            return new DependencyLib(elem);\n        }\n        if (elem !== undefined && elem !== null && elem !== window) {\n            this[0] = elem.nodeName ? elem : elem[0] !== undefined && elem[0].nodeName ? elem[0] : document.querySelector(elem);\n            if (this[0] !== undefined && this[0] !== null) {\n                this[0].eventRegistry = this[0].eventRegistry || {};\n            }\n        }\n    }\n    function getWindow(elem) {\n        return isWindow(elem) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false;\n    }\n    DependencyLib.prototype = {\n        on: function(events, handler) {\n            if (isValidElement(this[0])) {\n                var eventRegistry = this[0].eventRegistry, elem = this[0];\n                var addEvent = function(ev, namespace) {\n                    if (elem.addEventListener) {\n                        elem.addEventListener(ev, handler, false);\n                    } else if (elem.attachEvent) {\n                        elem.attachEvent(\"on\" + ev, handler);\n                    }\n                    eventRegistry[ev] = eventRegistry[ev] || {};\n                    eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [];\n                    eventRegistry[ev][namespace].push(handler);\n                };\n                var _events = events.split(\" \");\n                for (var endx = 0; endx < _events.length; endx++) {\n                    var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n                    addEvent(ev, namespace);\n                }\n            }\n            return this;\n        },\n        off: function(events, handler) {\n            if (isValidElement(this[0])) {\n                var eventRegistry = this[0].eventRegistry, elem = this[0];\n                var removeEvent = function(ev, namespace, handler) {\n                    if (ev in eventRegistry === true) {\n                        if (elem.removeEventListener) {\n                            elem.removeEventListener(ev, handler, false);\n                        } else if (elem.detachEvent) {\n                            elem.detachEvent(\"on\" + ev, handler);\n                        }\n                        if (namespace === \"global\") {\n                            for (var nmsp in eventRegistry[ev]) {\n                                eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1);\n                            }\n                        } else {\n                            eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);\n                        }\n                    }\n                };\n                var resolveNamespace = function(ev, namespace) {\n                    var evts = [], hndx, hndL;\n                    if (ev.length > 0) {\n                        if (handler === undefined) {\n                            for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) {\n                                evts.push({\n                                    ev: ev,\n                                    namespace: namespace && namespace.length > 0 ? namespace : \"global\",\n                                    handler: eventRegistry[ev][namespace][hndx]\n                                });\n                            }\n                        } else {\n                            evts.push({\n                                ev: ev,\n                                namespace: namespace && namespace.length > 0 ? namespace : \"global\",\n                                handler: handler\n                            });\n                        }\n                    } else if (namespace.length > 0) {\n                        for (var evNdx in eventRegistry) {\n                            for (var nmsp in eventRegistry[evNdx]) {\n                                if (nmsp === namespace) {\n                                    if (handler === undefined) {\n                                        for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) {\n                                            evts.push({\n                                                ev: evNdx,\n                                                namespace: nmsp,\n                                                handler: eventRegistry[evNdx][nmsp][hndx]\n                                            });\n                                        }\n                                    } else {\n                                        evts.push({\n                                            ev: evNdx,\n                                            namespace: nmsp,\n                                            handler: handler\n                                        });\n                                    }\n                                }\n                            }\n                        }\n                    }\n                    return evts;\n                };\n                var _events = events.split(\" \");\n                for (var endx = 0; endx < _events.length; endx++) {\n                    var nsEvent = _events[endx].split(\".\"), offEvents = resolveNamespace(nsEvent[0], nsEvent[1]);\n                    for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) {\n                        removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);\n                    }\n                }\n            }\n            return this;\n        },\n        trigger: function(events) {\n            if (isValidElement(this[0])) {\n                var eventRegistry = this[0].eventRegistry, elem = this[0];\n                var _events = typeof events === \"string\" ? events.split(\" \") : [ events.type ];\n                for (var endx = 0; endx < _events.length; endx++) {\n                    var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n                    if (document !== undefined && namespace === \"global\") {\n                        var evnt, i, params = {\n                            bubbles: true,\n                            cancelable: true,\n                            detail: arguments[1]\n                        };\n                        if (document.createEvent) {\n                            try {\n                                evnt = new CustomEvent(ev, params);\n                            } catch (e) {\n                                evnt = document.createEvent(\"CustomEvent\");\n                                evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail);\n                            }\n                            if (events.type) DependencyLib.extend(evnt, events);\n                            elem.dispatchEvent(evnt);\n                        } else {\n                            evnt = document.createEventObject();\n                            evnt.eventType = ev;\n                            evnt.detail = arguments[1];\n                            if (events.type) DependencyLib.extend(evnt, events);\n                            elem.fireEvent(\"on\" + evnt.eventType, evnt);\n                        }\n                    } else if (eventRegistry[ev] !== undefined) {\n                        arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]);\n                        if (namespace === \"global\") {\n                            for (var nmsp in eventRegistry[ev]) {\n                                for (i = 0; i < eventRegistry[ev][nmsp].length; i++) {\n                                    eventRegistry[ev][nmsp][i].apply(elem, arguments);\n                                }\n                            }\n                        } else {\n                            for (i = 0; i < eventRegistry[ev][namespace].length; i++) {\n                                eventRegistry[ev][namespace][i].apply(elem, arguments);\n                            }\n                        }\n                    }\n                }\n            }\n            return this;\n        }\n    };\n    DependencyLib.isFunction = function(obj) {\n        return typeof obj === \"function\";\n    };\n    DependencyLib.noop = function() {};\n    DependencyLib.isArray = Array.isArray;\n    DependencyLib.inArray = function(elem, arr, i) {\n        return arr == null ? -1 : indexOf(arr, elem, i);\n    };\n    DependencyLib.valHooks = undefined;\n    DependencyLib.isPlainObject = function(obj) {\n        if (typeof obj !== \"object\" || obj.nodeType || isWindow(obj)) {\n            return false;\n        }\n        if (obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\")) {\n            return false;\n        }\n        return true;\n    };\n    DependencyLib.extend = function() {\n        var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;\n        if (typeof target === \"boolean\") {\n            deep = target;\n            target = arguments[i] || {};\n            i++;\n        }\n        if (typeof target !== \"object\" && !DependencyLib.isFunction(target)) {\n            target = {};\n        }\n        if (i === length) {\n            target = this;\n            i--;\n        }\n        for (;i < length; i++) {\n            if ((options = arguments[i]) != null) {\n                for (name in options) {\n                    src = target[name];\n                    copy = options[name];\n                    if (target === copy) {\n                        continue;\n                    }\n                    if (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy)))) {\n                        if (copyIsArray) {\n                            copyIsArray = false;\n                            clone = src && DependencyLib.isArray(src) ? src : [];\n                        } else {\n                            clone = src && DependencyLib.isPlainObject(src) ? src : {};\n                        }\n                        target[name] = DependencyLib.extend(deep, clone, copy);\n                    } else if (copy !== undefined) {\n                        target[name] = copy;\n                    }\n                }\n            }\n        }\n        return target;\n    };\n    DependencyLib.each = function(obj, callback) {\n        var value, i = 0;\n        if (isArraylike(obj)) {\n            for (var length = obj.length; i < length; i++) {\n                value = callback.call(obj[i], i, obj[i]);\n                if (value === false) {\n                    break;\n                }\n            }\n        } else {\n            for (i in obj) {\n                value = callback.call(obj[i], i, obj[i]);\n                if (value === false) {\n                    break;\n                }\n            }\n        }\n        return obj;\n    };\n    DependencyLib.data = function(owner, key, value) {\n        if (value === undefined) {\n            return owner.__data ? owner.__data[key] : null;\n        } else {\n            owner.__data = owner.__data || {};\n            owner.__data[key] = value;\n        }\n    };\n    if (typeof window.CustomEvent === \"function\") {\n        DependencyLib.Event = window.CustomEvent;\n    } else {\n        DependencyLib.Event = function(event, params) {\n            params = params || {\n                bubbles: false,\n                cancelable: false,\n                detail: undefined\n            };\n            var evt = document.createEvent(\"CustomEvent\");\n            evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n            return evt;\n        };\n        DependencyLib.Event.prototype = window.Event.prototype;\n    }\n    return DependencyLib;\n});\n\n//# sourceURL=webpack:///./node_modules/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.js?");
109
110/***/ }),
111
vendor: 1,066 bytes, lines 112-122
112/***/ "./node_modules/inputmask/dist/inputmask/global/window.js":
113/*!****************************************************************!*\
114  !*** ./node_modules/inputmask/dist/inputmask/global/window.js ***!
115  \****************************************************************/
116/*! no static exports found */
117/***/ (function(module, exports, __webpack_require__) {
118
119eval("var __WEBPACK_AMD_DEFINE_RESULT__;/*!\n* global/window.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\nif (true) !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n    return typeof window !== \"undefined\" ? window : new (eval(\"require('jsdom').JSDOM\"))(\"\").window;\n}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); else {}\n\n//# sourceURL=webpack:///./node_modules/inputmask/dist/inputmask/global/window.js?");
120
121/***/ }),
122
vendor: 13,485 bytes, lines 123-133
123/***/ "./node_modules/inputmask/dist/inputmask/inputmask.date.extensions.js":
124/*!****************************************************************************!*\
125  !*** ./node_modules/inputmask/dist/inputmask/inputmask.date.extensions.js ***!
126  \****************************************************************************/
127/*! no static exports found */
128/***/ (function(module, exports, __webpack_require__) {
129
130eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n* inputmask.date.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (true) {\n        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(/*! ./inputmask */ \"./node_modules/inputmask/dist/inputmask/inputmask.js\") ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n    } else {}\n})(function(Inputmask) {\n    var $ = Inputmask.dependencyLib;\n    var formatCode = {\n        d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n        dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n            return pad(Date.prototype.getDate.call(this), 2);\n        } ],\n        ddd: [ \"\" ],\n        dddd: [ \"\" ],\n        m: [ \"[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n            return Date.prototype.getMonth.call(this) + 1;\n        } ],\n        mm: [ \"0[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n            return pad(Date.prototype.getMonth.call(this) + 1, 2);\n        } ],\n        mmm: [ \"\" ],\n        mmmm: [ \"\" ],\n        yy: [ \"[0-9]{2}\", Date.prototype.setFullYear, \"year\", function() {\n            return pad(Date.prototype.getFullYear.call(this), 2);\n        } ],\n        yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n            return pad(Date.prototype.getFullYear.call(this), 4);\n        } ],\n        h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n        hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n            return pad(Date.prototype.getHours.call(this), 2);\n        } ],\n        hhh: [ \"[0-9]+\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n        H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n        HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n            return pad(Date.prototype.getHours.call(this), 2);\n        } ],\n        HHH: [ \"[0-9]+\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n        M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n        MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n            return pad(Date.prototype.getMinutes.call(this), 2);\n        } ],\n        ss: [ \"[0-5][0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n            return pad(Date.prototype.getSeconds.call(this), 2);\n        } ],\n        l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n            return pad(Date.prototype.getMilliseconds.call(this), 3);\n        } ],\n        L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n            return pad(Date.prototype.getMilliseconds.call(this), 2);\n        } ],\n        t: [ \"[ap]\" ],\n        tt: [ \"[ap]m\" ],\n        T: [ \"[AP]\" ],\n        TT: [ \"[AP]M\" ],\n        Z: [ \"\" ],\n        o: [ \"\" ],\n        S: [ \"\" ]\n    }, formatAlias = {\n        isoDate: \"yyyy-mm-dd\",\n        isoTime: \"HH:MM:ss\",\n        isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n        isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n    };\n    function getTokenizer(opts) {\n        if (!opts.tokenizer) {\n            var tokens = [];\n            for (var ndx in formatCode) {\n                if (tokens.indexOf(ndx[0]) === -1) tokens.push(ndx[0]);\n            }\n            opts.tokenizer = \"(\" + tokens.join(\"+|\") + \")+?|.\";\n            opts.tokenizer = new RegExp(opts.tokenizer, \"g\");\n        }\n        return opts.tokenizer;\n    }\n    function isValidDate(dateParts, currentResult) {\n        return !isFinite(dateParts.rawday) || dateParts.day == \"29\" && !isFinite(dateParts.rawyear) || new Date(dateParts.date.getFullYear(), isFinite(dateParts.rawmonth) ? dateParts.month : dateParts.date.getMonth() + 1, 0).getDate() >= dateParts.day ? currentResult : false;\n    }\n    function isDateInRange(dateParts, opts) {\n        var result = true;\n        if (opts.min) {\n            if (dateParts[\"rawyear\"]) {\n                var rawYear = dateParts[\"rawyear\"].replace(/[^0-9]/g, \"\"), minYear = opts.min.year.substr(0, rawYear.length);\n                result = minYear <= rawYear;\n            }\n            if (dateParts[\"year\"] === dateParts[\"rawyear\"]) {\n                if (opts.min.date.getTime() === opts.min.date.getTime()) {\n                    result = opts.min.date.getTime() <= dateParts.date.getTime();\n                }\n            }\n        }\n        if (result && opts.max && opts.max.date.getTime() === opts.max.date.getTime()) {\n            result = opts.max.date.getTime() >= dateParts.date.getTime();\n        }\n        return result;\n    }\n    function parse(format, dateObjValue, opts, raw) {\n        var mask = \"\", match;\n        while (match = getTokenizer(opts).exec(format)) {\n            if (dateObjValue === undefined) {\n                if (formatCode[match[0]]) {\n                    mask += \"(\" + formatCode[match[0]][0] + \")\";\n                } else {\n                    switch (match[0]) {\n                      case \"[\":\n                        mask += \"(\";\n                        break;\n\n                      case \"]\":\n                        mask += \")?\";\n                        break;\n\n                      default:\n                        mask += Inputmask.escapeRegex(match[0]);\n                    }\n                }\n            } else {\n                if (formatCode[match[0]]) {\n                    if (raw !== true && formatCode[match[0]][3]) {\n                        var getFn = formatCode[match[0]][3];\n                        mask += getFn.call(dateObjValue.date);\n                    } else if (formatCode[match[0]][2]) mask += dateObjValue[\"raw\" + formatCode[match[0]][2]]; else mask += match[0];\n                } else mask += match[0];\n            }\n        }\n        return mask;\n    }\n    function pad(val, len) {\n        val = String(val);\n        len = len || 2;\n        while (val.length < len) val = \"0\" + val;\n        return val;\n    }\n    function analyseMask(maskString, format, opts) {\n        var dateObj = {\n            date: new Date(1, 0, 1)\n        }, targetProp, mask = maskString, match, dateOperation, targetValidator;\n        function extendProperty(value) {\n            var correctedValue = value.replace(/[^0-9]/g, \"0\");\n            if (correctedValue != value) {\n                var enteredPart = value.replace(/[^0-9]/g, \"\"), min = (opts.min && opts.min[targetProp] || value).toString(), max = (opts.max && opts.max[targetProp] || value).toString();\n                correctedValue = enteredPart + (enteredPart < min.slice(0, enteredPart.length) ? min.slice(enteredPart.length) : enteredPart > max.slice(0, enteredPart.length) ? max.slice(enteredPart.length) : correctedValue.toString().slice(enteredPart.length));\n            }\n            return correctedValue;\n        }\n        function setValue(dateObj, value, opts) {\n            dateObj[targetProp] = extendProperty(value);\n            dateObj[\"raw\" + targetProp] = value;\n            if (dateOperation !== undefined) dateOperation.call(dateObj.date, targetProp == \"month\" ? parseInt(dateObj[targetProp]) - 1 : dateObj[targetProp]);\n        }\n        if (typeof mask === \"string\") {\n            while (match = getTokenizer(opts).exec(format)) {\n                var value = mask.slice(0, match[0].length);\n                if (formatCode.hasOwnProperty(match[0])) {\n                    targetValidator = formatCode[match[0]][0];\n                    targetProp = formatCode[match[0]][2];\n                    dateOperation = formatCode[match[0]][1];\n                    setValue(dateObj, value, opts);\n                }\n                mask = mask.slice(value.length);\n            }\n            return dateObj;\n        } else if (mask && typeof mask === \"object\" && mask.hasOwnProperty(\"date\")) {\n            return mask;\n        }\n        return undefined;\n    }\n    Inputmask.extendAliases({\n        datetime: {\n            mask: function(opts) {\n                formatCode.S = opts.i18n.ordinalSuffix.join(\"|\");\n                opts.inputFormat = formatAlias[opts.inputFormat] || opts.inputFormat;\n                opts.displayFormat = formatAlias[opts.displayFormat] || opts.displayFormat || opts.inputFormat;\n                opts.outputFormat = formatAlias[opts.outputFormat] || opts.outputFormat || opts.inputFormat;\n                opts.placeholder = opts.placeholder !== \"\" ? opts.placeholder : opts.inputFormat.replace(/[\\[\\]]/, \"\");\n                opts.regex = parse(opts.inputFormat, undefined, opts);\n                return null;\n            },\n            placeholder: \"\",\n            inputFormat: \"isoDateTime\",\n            displayFormat: undefined,\n            outputFormat: undefined,\n            min: null,\n            max: null,\n            i18n: {\n                dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n                monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n                ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n            },\n            postValidation: function(buffer, pos, currentResult, opts) {\n                opts.min = analyseMask(opts.min, opts.inputFormat, opts);\n                opts.max = analyseMask(opts.max, opts.inputFormat, opts);\n                var result = currentResult, dateParts = analyseMask(buffer.join(\"\"), opts.inputFormat, opts);\n                if (result && dateParts.date.getTime() === dateParts.date.getTime()) {\n                    result = isValidDate(dateParts, result);\n                    result = result && isDateInRange(dateParts, opts);\n                }\n                if (pos && result && currentResult.pos !== pos) {\n                    return {\n                        buffer: parse(opts.inputFormat, dateParts, opts),\n                        refreshFromBuffer: {\n                            start: pos,\n                            end: currentResult.pos\n                        }\n                    };\n                }\n                return result;\n            },\n            onKeyDown: function(e, buffer, caretPos, opts) {\n                var input = this;\n                if (e.ctrlKey && e.keyCode === Inputmask.keyCode.RIGHT) {\n                    var today = new Date(), match, date = \"\";\n                    while (match = getTokenizer(opts).exec(opts.inputFormat)) {\n                        if (match[0].charAt(0) === \"d\") {\n                            date += pad(today.getDate(), match[0].length);\n                        } else if (match[0].charAt(0) === \"m\") {\n                            date += pad(today.getMonth() + 1, match[0].length);\n                        } else if (match[0] === \"yyyy\") {\n                            date += today.getFullYear().toString();\n                        } else if (match[0].charAt(0) === \"y\") {\n                            date += pad(today.getYear(), match[0].length);\n                        }\n                    }\n                    input.inputmask._valueSet(date);\n                    $(input).trigger(\"setvalue\");\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                return parse(opts.outputFormat, analyseMask(maskedValue, opts.inputFormat, opts), opts, true);\n            },\n            casing: function(elem, test, pos, validPositions) {\n                if (test.nativeDef.indexOf(\"[ap]\") == 0) return elem.toLowerCase();\n                if (test.nativeDef.indexOf(\"[AP]\") == 0) return elem.toUpperCase();\n                return elem;\n            },\n            insertMode: false,\n            shiftPositions: false\n        }\n    });\n    return Inputmask;\n});\n\n//# sourceURL=webpack:///./node_modules/inputmask/dist/inputmask/inputmask.date.extensions.js?");
131
132/***/ }),
133
vendor: 4,314 bytes, lines 134-144
134/***/ "./node_modules/inputmask/dist/inputmask/inputmask.extensions.js":
135/*!***********************************************************************!*\
136  !*** ./node_modules/inputmask/dist/inputmask/inputmask.extensions.js ***!
137  \***********************************************************************/
138/*! no static exports found */
139/***/ (function(module, exports, __webpack_require__) {
140
141eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n* inputmask.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (true) {\n        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(/*! ./inputmask */ \"./node_modules/inputmask/dist/inputmask/inputmask.js\") ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n    } else {}\n})(function(Inputmask) {\n    Inputmask.extendDefinitions({\n        A: {\n            validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n            casing: \"upper\"\n        },\n        \"&\": {\n            validator: \"[0-9A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n            casing: \"upper\"\n        },\n        \"#\": {\n            validator: \"[0-9A-Fa-f]\",\n            casing: \"upper\"\n        }\n    });\n    Inputmask.extendAliases({\n        cssunit: {\n            regex: \"[+-]?[0-9]+\\\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)\"\n        },\n        url: {\n            regex: \"(https?|ftp)//.*\",\n            autoUnmask: false\n        },\n        ip: {\n            mask: \"i[i[i]].i[i[i]].i[i[i]].i[i[i]]\",\n            definitions: {\n                i: {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        if (pos - 1 > -1 && maskset.buffer[pos - 1] !== \".\") {\n                            chrs = maskset.buffer[pos - 1] + chrs;\n                            if (pos - 2 > -1 && maskset.buffer[pos - 2] !== \".\") {\n                                chrs = maskset.buffer[pos - 2] + chrs;\n                            } else chrs = \"0\" + chrs;\n                        } else chrs = \"00\" + chrs;\n                        return new RegExp(\"25[0-5]|2[0-4][0-9]|[01][0-9][0-9]\").test(chrs);\n                    }\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                return maskedValue;\n            },\n            inputmode: \"numeric\"\n        },\n        email: {\n            mask: \"*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]\",\n            greedy: false,\n            casing: \"lower\",\n            onBeforePaste: function(pastedValue, opts) {\n                pastedValue = pastedValue.toLowerCase();\n                return pastedValue.replace(\"mailto:\", \"\");\n            },\n            definitions: {\n                \"*\": {\n                    validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5!#$%&'*+/=?^_`{|}~-]\"\n                },\n                \"-\": {\n                    validator: \"[0-9A-Za-z-]\"\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                return maskedValue;\n            },\n            inputmode: \"email\"\n        },\n        mac: {\n            mask: \"##:##:##:##:##:##\"\n        },\n        vin: {\n            mask: \"V{13}9{4}\",\n            definitions: {\n                V: {\n                    validator: \"[A-HJ-NPR-Za-hj-npr-z\\\\d]\",\n                    casing: \"upper\"\n                }\n            },\n            clearIncomplete: true,\n            autoUnmask: true\n        }\n    });\n    return Inputmask;\n});\n\n//# sourceURL=webpack:///./node_modules/inputmask/dist/inputmask/inputmask.extensions.js?");
142
143/***/ }),
144
vendor: 153,602 bytes, lines 145-155
145/***/ "./node_modules/inputmask/dist/inputmask/inputmask.js":
146/*!************************************************************!*\
147  !*** ./node_modules/inputmask/dist/inputmask/inputmask.js ***!
148  \************************************************************/
149/*! no static exports found */
150/***/ (function(module, exports, __webpack_require__) {
151
152eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n* inputmask.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (true) {\n        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(/*! ./dependencyLibs/inputmask.dependencyLib */ \"./node_modules/inputmask/dist/inputmask/dependencyLibs/inputmask.dependencyLib.js\"), __webpack_require__(/*! ./global/window */ \"./node_modules/inputmask/dist/inputmask/global/window.js\") ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n    } else {}\n})(function($, window, undefined) {\n    var document = window.document, ua = navigator.userAgent, ie = ua.indexOf(\"MSIE \") > 0 || ua.indexOf(\"Trident/\") > 0, mobile = isInputEventSupported(\"touchstart\"), iemobile = /iemobile/i.test(ua), iphone = /iphone/i.test(ua) && !iemobile;\n    function Inputmask(alias, options, internal) {\n        if (!(this instanceof Inputmask)) {\n            return new Inputmask(alias, options, internal);\n        }\n        this.el = undefined;\n        this.events = {};\n        this.maskset = undefined;\n        this.refreshValue = false;\n        if (internal !== true) {\n            if ($.isPlainObject(alias)) {\n                options = alias;\n            } else {\n                options = options || {};\n                if (alias) options.alias = alias;\n            }\n            this.opts = $.extend(true, {}, this.defaults, options);\n            this.noMasksCache = options && options.definitions !== undefined;\n            this.userOptions = options || {};\n            this.isRTL = this.opts.numericInput;\n            resolveAlias(this.opts.alias, options, this.opts);\n        }\n    }\n    Inputmask.prototype = {\n        dataAttribute: \"data-inputmask\",\n        defaults: {\n            placeholder: \"_\",\n            optionalmarker: [ \"[\", \"]\" ],\n            quantifiermarker: [ \"{\", \"}\" ],\n            groupmarker: [ \"(\", \")\" ],\n            alternatormarker: \"|\",\n            escapeChar: \"\\\\\",\n            mask: null,\n            regex: null,\n            oncomplete: $.noop,\n            onincomplete: $.noop,\n            oncleared: $.noop,\n            repeat: 0,\n            greedy: false,\n            autoUnmask: false,\n            removeMaskOnSubmit: false,\n            clearMaskOnLostFocus: true,\n            insertMode: true,\n            clearIncomplete: false,\n            alias: null,\n            onKeyDown: $.noop,\n            onBeforeMask: null,\n            onBeforePaste: function(pastedValue, opts) {\n                return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue;\n            },\n            onBeforeWrite: null,\n            onUnMask: null,\n            showMaskOnFocus: true,\n            showMaskOnHover: true,\n            onKeyValidation: $.noop,\n            skipOptionalPartCharacter: \" \",\n            numericInput: false,\n            rightAlign: false,\n            undoOnEscape: true,\n            radixPoint: \"\",\n            _radixDance: false,\n            groupSeparator: \"\",\n            keepStatic: null,\n            positionCaretOnTab: true,\n            tabThrough: false,\n            supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n            ignorables: [ 8, 9, 13, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ],\n            isComplete: null,\n            preValidation: null,\n            postValidation: null,\n            staticDefinitionSymbol: undefined,\n            jitMasking: false,\n            nullable: true,\n            inputEventOnly: false,\n            noValuePatching: false,\n            positionCaretOnClick: \"lvp\",\n            casing: null,\n            inputmode: \"verbatim\",\n            colorMask: false,\n            disablePredictiveText: false,\n            importDataAttributes: true,\n            shiftPositions: true\n        },\n        definitions: {\n            9: {\n                validator: \"[0-9\\uff11-\\uff19]\",\n                definitionSymbol: \"*\"\n            },\n            a: {\n                validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n                definitionSymbol: \"*\"\n            },\n            \"*\": {\n                validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n            }\n        },\n        aliases: {},\n        masksCache: {},\n        mask: function(elems) {\n            var that = this;\n            function importAttributeOptions(npt, opts, userOptions, dataAttribute) {\n                if (opts.importDataAttributes === true) {\n                    var attrOptions = npt.getAttribute(dataAttribute), option, dataoptions, optionData, p;\n                    var importOption = function(option, optionData) {\n                        optionData = optionData !== undefined ? optionData : npt.getAttribute(dataAttribute + \"-\" + option);\n                        if (optionData !== null) {\n                            if (typeof optionData === \"string\") {\n                                if (option.indexOf(\"on\") === 0) optionData = window[optionData]; else if (optionData === \"false\") optionData = false; else if (optionData === \"true\") optionData = true;\n                            }\n                            userOptions[option] = optionData;\n                        }\n                    };\n                    if (attrOptions && attrOptions !== \"\") {\n                        attrOptions = attrOptions.replace(/'/g, '\"');\n                        dataoptions = JSON.parse(\"{\" + attrOptions + \"}\");\n                    }\n                    if (dataoptions) {\n                        optionData = undefined;\n                        for (p in dataoptions) {\n                            if (p.toLowerCase() === \"alias\") {\n                                optionData = dataoptions[p];\n                                break;\n                            }\n                        }\n                    }\n                    importOption(\"alias\", optionData);\n                    if (userOptions.alias) {\n                        resolveAlias(userOptions.alias, userOptions, opts);\n                    }\n                    for (option in opts) {\n                        if (dataoptions) {\n                            optionData = undefined;\n                            for (p in dataoptions) {\n                                if (p.toLowerCase() === option.toLowerCase()) {\n                                    optionData = dataoptions[p];\n                                    break;\n                                }\n                            }\n                        }\n                        importOption(option, optionData);\n                    }\n                }\n                $.extend(true, opts, userOptions);\n                if (npt.dir === \"rtl\" || opts.rightAlign) {\n                    npt.style.textAlign = \"right\";\n                }\n                if (npt.dir === \"rtl\" || opts.numericInput) {\n                    npt.dir = \"ltr\";\n                    npt.removeAttribute(\"dir\");\n                    opts.isRTL = true;\n                }\n                return Object.keys(userOptions).length;\n            }\n            if (typeof elems === \"string\") {\n                elems = document.getElementById(elems) || document.querySelectorAll(elems);\n            }\n            elems = elems.nodeName ? [ elems ] : elems;\n            $.each(elems, function(ndx, el) {\n                var scopedOpts = $.extend(true, {}, that.opts);\n                if (importAttributeOptions(el, scopedOpts, $.extend(true, {}, that.userOptions), that.dataAttribute)) {\n                    var maskset = generateMaskSet(scopedOpts, that.noMasksCache);\n                    if (maskset !== undefined) {\n                        if (el.inputmask !== undefined) {\n                            el.inputmask.opts.autoUnmask = true;\n                            el.inputmask.remove();\n                        }\n                        el.inputmask = new Inputmask(undefined, undefined, true);\n                        el.inputmask.opts = scopedOpts;\n                        el.inputmask.noMasksCache = that.noMasksCache;\n                        el.inputmask.userOptions = $.extend(true, {}, that.userOptions);\n                        el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput;\n                        el.inputmask.el = el;\n                        el.inputmask.maskset = maskset;\n                        $.data(el, \"_inputmask_opts\", scopedOpts);\n                        maskScope.call(el.inputmask, {\n                            action: \"mask\"\n                        });\n                    }\n                }\n            });\n            return elems && elems[0] ? elems[0].inputmask || this : this;\n        },\n        option: function(options, noremask) {\n            if (typeof options === \"string\") {\n                return this.opts[options];\n            } else if (typeof options === \"object\") {\n                $.extend(this.userOptions, options);\n                if (this.el && noremask !== true) {\n                    this.mask(this.el);\n                }\n                return this;\n            }\n        },\n        unmaskedvalue: function(value) {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"unmaskedvalue\",\n                value: value\n            });\n        },\n        remove: function() {\n            return maskScope.call(this, {\n                action: \"remove\"\n            });\n        },\n        getemptymask: function() {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"getemptymask\"\n            });\n        },\n        hasMaskedValue: function() {\n            return !this.opts.autoUnmask;\n        },\n        isComplete: function() {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"isComplete\"\n            });\n        },\n        getmetadata: function() {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"getmetadata\"\n            });\n        },\n        isValid: function(value) {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"isValid\",\n                value: value\n            });\n        },\n        format: function(value, metadata) {\n            this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache);\n            return maskScope.call(this, {\n                action: \"format\",\n                value: value,\n                metadata: metadata\n            });\n        },\n        setValue: function(value) {\n            if (this.el) {\n                $(this.el).trigger(\"setvalue\", [ value ]);\n            }\n        },\n        analyseMask: function(mask, regexMask, opts) {\n            var tokenizer = /(?:[?*+]|\\{[0-9\\+\\*]+(?:,[0-9\\+\\*]*)?(?:\\|[0-9\\+\\*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, regexTokenizer = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, escaped = false, currentToken = new MaskToken(), match, m, openenings = [], maskTokens = [], openingToken, currentOpeningToken, alternator, lastMatch, groupToken;\n            function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {\n                this.matches = [];\n                this.openGroup = isGroup || false;\n                this.alternatorGroup = false;\n                this.isGroup = isGroup || false;\n                this.isOptional = isOptional || false;\n                this.isQuantifier = isQuantifier || false;\n                this.isAlternator = isAlternator || false;\n                this.quantifier = {\n                    min: 1,\n                    max: 1\n                };\n            }\n            function insertTestDefinition(mtoken, element, position) {\n                position = position !== undefined ? position : mtoken.matches.length;\n                var prevMatch = mtoken.matches[position - 1];\n                if (regexMask) {\n                    if (element.indexOf(\"[\") === 0 || escaped && /\\\\d|\\\\s|\\\\w]/i.test(element) || element === \".\") {\n                        mtoken.matches.splice(position++, 0, {\n                            fn: new RegExp(element, opts.casing ? \"i\" : \"\"),\n                            optionality: false,\n                            newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== element,\n                            casing: null,\n                            def: element,\n                            placeholder: undefined,\n                            nativeDef: element\n                        });\n                    } else {\n                        if (escaped) element = element[element.length - 1];\n                        $.each(element.split(\"\"), function(ndx, lmnt) {\n                            prevMatch = mtoken.matches[position - 1];\n                            mtoken.matches.splice(position++, 0, {\n                                fn: null,\n                                optionality: false,\n                                newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== lmnt && prevMatch.fn !== null,\n                                casing: null,\n                                def: opts.staticDefinitionSymbol || lmnt,\n                                placeholder: opts.staticDefinitionSymbol !== undefined ? lmnt : undefined,\n                                nativeDef: (escaped ? \"'\" : \"\") + lmnt\n                            });\n                        });\n                    }\n                    escaped = false;\n                } else {\n                    var maskdef = (opts.definitions ? opts.definitions[element] : undefined) || Inputmask.prototype.definitions[element];\n                    if (maskdef && !escaped) {\n                        mtoken.matches.splice(position++, 0, {\n                            fn: maskdef.validator ? typeof maskdef.validator == \"string\" ? new RegExp(maskdef.validator, opts.casing ? \"i\" : \"\") : new function() {\n                                this.test = maskdef.validator;\n                            }() : new RegExp(\".\"),\n                            optionality: false,\n                            newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== (maskdef.definitionSymbol || element),\n                            casing: maskdef.casing,\n                            def: maskdef.definitionSymbol || element,\n                            placeholder: maskdef.placeholder,\n                            nativeDef: element\n                        });\n                    } else {\n                        mtoken.matches.splice(position++, 0, {\n                            fn: null,\n                            optionality: false,\n                            newBlockMarker: prevMatch === undefined ? \"master\" : prevMatch.def !== element && prevMatch.fn !== null,\n                            casing: null,\n                            def: opts.staticDefinitionSymbol || element,\n                            placeholder: opts.staticDefinitionSymbol !== undefined ? element : undefined,\n                            nativeDef: (escaped ? \"'\" : \"\") + element\n                        });\n                        escaped = false;\n                    }\n                }\n            }\n            function verifyGroupMarker(maskToken) {\n                if (maskToken && maskToken.matches) {\n                    $.each(maskToken.matches, function(ndx, token) {\n                        var nextToken = maskToken.matches[ndx + 1];\n                        if ((nextToken === undefined || (nextToken.matches === undefined || nextToken.isQuantifier === false)) && token && token.isGroup) {\n                            token.isGroup = false;\n                            if (!regexMask) {\n                                insertTestDefinition(token, opts.groupmarker[0], 0);\n                                if (token.openGroup !== true) {\n                                    insertTestDefinition(token, opts.groupmarker[1]);\n                                }\n                            }\n                        }\n                        verifyGroupMarker(token);\n                    });\n                }\n            }\n            function defaultCase() {\n                if (openenings.length > 0) {\n                    currentOpeningToken = openenings[openenings.length - 1];\n                    insertTestDefinition(currentOpeningToken, m);\n                    if (currentOpeningToken.isAlternator) {\n                        alternator = openenings.pop();\n                        for (var mndx = 0; mndx < alternator.matches.length; mndx++) {\n                            if (alternator.matches[mndx].isGroup) alternator.matches[mndx].isGroup = false;\n                        }\n                        if (openenings.length > 0) {\n                            currentOpeningToken = openenings[openenings.length - 1];\n                            currentOpeningToken.matches.push(alternator);\n                        } else {\n                            currentToken.matches.push(alternator);\n                        }\n                    }\n                } else {\n                    insertTestDefinition(currentToken, m);\n                }\n            }\n            function reverseTokens(maskToken) {\n                function reverseStatic(st) {\n                    if (st === opts.optionalmarker[0]) st = opts.optionalmarker[1]; else if (st === opts.optionalmarker[1]) st = opts.optionalmarker[0]; else if (st === opts.groupmarker[0]) st = opts.groupmarker[1]; else if (st === opts.groupmarker[1]) st = opts.groupmarker[0];\n                    return st;\n                }\n                maskToken.matches = maskToken.matches.reverse();\n                for (var match in maskToken.matches) {\n                    if (maskToken.matches.hasOwnProperty(match)) {\n                        var intMatch = parseInt(match);\n                        if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {\n                            var qt = maskToken.matches[match];\n                            maskToken.matches.splice(match, 1);\n                            maskToken.matches.splice(intMatch + 1, 0, qt);\n                        }\n                        if (maskToken.matches[match].matches !== undefined) {\n                            maskToken.matches[match] = reverseTokens(maskToken.matches[match]);\n                        } else {\n                            maskToken.matches[match] = reverseStatic(maskToken.matches[match]);\n                        }\n                    }\n                }\n                return maskToken;\n            }\n            function groupify(matches) {\n                var groupToken = new MaskToken(true);\n                groupToken.openGroup = false;\n                groupToken.matches = matches;\n                return groupToken;\n            }\n            if (regexMask) {\n                opts.optionalmarker[0] = undefined;\n                opts.optionalmarker[1] = undefined;\n            }\n            while (match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask)) {\n                m = match[0];\n                if (regexMask) {\n                    switch (m.charAt(0)) {\n                      case \"?\":\n                        m = \"{0,1}\";\n                        break;\n\n                      case \"+\":\n                      case \"*\":\n                        m = \"{\" + m + \"}\";\n                        break;\n                    }\n                }\n                if (escaped) {\n                    defaultCase();\n                    continue;\n                }\n                switch (m.charAt(0)) {\n                  case \"(?=\":\n                    break;\n\n                  case \"(?!\":\n                    break;\n\n                  case \"(?<=\":\n                    break;\n\n                  case \"(?<!\":\n                    break;\n\n                  case opts.escapeChar:\n                    escaped = true;\n                    if (regexMask) {\n                        defaultCase();\n                    }\n                    break;\n\n                  case opts.optionalmarker[1]:\n                  case opts.groupmarker[1]:\n                    openingToken = openenings.pop();\n                    openingToken.openGroup = false;\n                    if (openingToken !== undefined) {\n                        if (openenings.length > 0) {\n                            currentOpeningToken = openenings[openenings.length - 1];\n                            currentOpeningToken.matches.push(openingToken);\n                            if (currentOpeningToken.isAlternator) {\n                                alternator = openenings.pop();\n                                for (var mndx = 0; mndx < alternator.matches.length; mndx++) {\n                                    alternator.matches[mndx].isGroup = false;\n                                    alternator.matches[mndx].alternatorGroup = false;\n                                }\n                                if (openenings.length > 0) {\n                                    currentOpeningToken = openenings[openenings.length - 1];\n                                    currentOpeningToken.matches.push(alternator);\n                                } else {\n                                    currentToken.matches.push(alternator);\n                                }\n                            }\n                        } else {\n                            currentToken.matches.push(openingToken);\n                        }\n                    } else defaultCase();\n                    break;\n\n                  case opts.optionalmarker[0]:\n                    openenings.push(new MaskToken(false, true));\n                    break;\n\n                  case opts.groupmarker[0]:\n                    openenings.push(new MaskToken(true));\n                    break;\n\n                  case opts.quantifiermarker[0]:\n                    var quantifier = new MaskToken(false, false, true);\n                    m = m.replace(/[{}]/g, \"\");\n                    var mqj = m.split(\"|\"), mq = mqj[0].split(\",\"), mq0 = isNaN(mq[0]) ? mq[0] : parseInt(mq[0]), mq1 = mq.length === 1 ? mq0 : isNaN(mq[1]) ? mq[1] : parseInt(mq[1]);\n                    if (mq0 === \"*\" || mq0 === \"+\") {\n                        mq0 = mq1 === \"*\" ? 0 : 1;\n                    }\n                    quantifier.quantifier = {\n                        min: mq0,\n                        max: mq1,\n                        jit: mqj[1]\n                    };\n                    var matches = openenings.length > 0 ? openenings[openenings.length - 1].matches : currentToken.matches;\n                    match = matches.pop();\n                    if (match.isAlternator) {\n                        matches.push(match);\n                        matches = match.matches;\n                        var groupToken = new MaskToken(true);\n                        var tmpMatch = matches.pop();\n                        matches.push(groupToken);\n                        matches = groupToken.matches;\n                        match = tmpMatch;\n                    }\n                    if (!match.isGroup) {\n                        match = groupify([ match ]);\n                    }\n                    matches.push(match);\n                    matches.push(quantifier);\n                    break;\n\n                  case opts.alternatormarker:\n                    var groupQuantifier = function(matches) {\n                        var lastMatch = matches.pop();\n                        if (lastMatch.isQuantifier) {\n                            lastMatch = groupify([ matches.pop(), lastMatch ]);\n                        }\n                        return lastMatch;\n                    };\n                    if (openenings.length > 0) {\n                        currentOpeningToken = openenings[openenings.length - 1];\n                        var subToken = currentOpeningToken.matches[currentOpeningToken.matches.length - 1];\n                        if (currentOpeningToken.openGroup && (subToken.matches === undefined || subToken.isGroup === false && subToken.isAlternator === false)) {\n                            lastMatch = openenings.pop();\n                        } else {\n                            lastMatch = groupQuantifier(currentOpeningToken.matches);\n                        }\n                    } else {\n                        lastMatch = groupQuantifier(currentToken.matches);\n                    }\n                    if (lastMatch.isAlternator) {\n                        openenings.push(lastMatch);\n                    } else {\n                        if (lastMatch.alternatorGroup) {\n                            alternator = openenings.pop();\n                            lastMatch.alternatorGroup = false;\n                        } else {\n                            alternator = new MaskToken(false, false, false, true);\n                        }\n                        alternator.matches.push(lastMatch);\n                        openenings.push(alternator);\n                        if (lastMatch.openGroup) {\n                            lastMatch.openGroup = false;\n                            var alternatorGroup = new MaskToken(true);\n                            alternatorGroup.alternatorGroup = true;\n                            openenings.push(alternatorGroup);\n                        }\n                    }\n                    break;\n\n                  default:\n                    defaultCase();\n                }\n            }\n            while (openenings.length > 0) {\n                openingToken = openenings.pop();\n                currentToken.matches.push(openingToken);\n            }\n            if (currentToken.matches.length > 0) {\n                verifyGroupMarker(currentToken);\n                maskTokens.push(currentToken);\n            }\n            if (opts.numericInput || opts.isRTL) {\n                reverseTokens(maskTokens[0]);\n            }\n            return maskTokens;\n        },\n        positionColorMask: function(input, template) {\n            input.style.left = template.offsetLeft + \"px\";\n        }\n    };\n    Inputmask.extendDefaults = function(options) {\n        $.extend(true, Inputmask.prototype.defaults, options);\n    };\n    Inputmask.extendDefinitions = function(definition) {\n        $.extend(true, Inputmask.prototype.definitions, definition);\n    };\n    Inputmask.extendAliases = function(alias) {\n        $.extend(true, Inputmask.prototype.aliases, alias);\n    };\n    Inputmask.format = function(value, options, metadata) {\n        return Inputmask(options).format(value, metadata);\n    };\n    Inputmask.unmask = function(value, options) {\n        return Inputmask(options).unmaskedvalue(value);\n    };\n    Inputmask.isValid = function(value, options) {\n        return Inputmask(options).isValid(value);\n    };\n    Inputmask.remove = function(elems) {\n        if (typeof elems === \"string\") {\n            elems = document.getElementById(elems) || document.querySelectorAll(elems);\n        }\n        elems = elems.nodeName ? [ elems ] : elems;\n        $.each(elems, function(ndx, el) {\n            if (el.inputmask) el.inputmask.remove();\n        });\n    };\n    Inputmask.setValue = function(elems, value) {\n        if (typeof elems === \"string\") {\n            elems = document.getElementById(elems) || document.querySelectorAll(elems);\n        }\n        elems = elems.nodeName ? [ elems ] : elems;\n        $.each(elems, function(ndx, el) {\n            if (el.inputmask) el.inputmask.setValue(value); else $(el).trigger(\"setvalue\", [ value ]);\n        });\n    };\n    Inputmask.escapeRegex = function(str) {\n        var specials = [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ];\n        return str.replace(new RegExp(\"(\\\\\" + specials.join(\"|\\\\\") + \")\", \"gim\"), \"\\\\$1\");\n    };\n    Inputmask.keyCode = {\n        BACKSPACE: 8,\n        BACKSPACE_SAFARI: 127,\n        DELETE: 46,\n        DOWN: 40,\n        END: 35,\n        ENTER: 13,\n        ESCAPE: 27,\n        HOME: 36,\n        INSERT: 45,\n        LEFT: 37,\n        PAGE_DOWN: 34,\n        PAGE_UP: 33,\n        RIGHT: 39,\n        SPACE: 32,\n        TAB: 9,\n        UP: 38,\n        X: 88,\n        CONTROL: 17\n    };\n    Inputmask.dependencyLib = $;\n    function resolveAlias(aliasStr, options, opts) {\n        var aliasDefinition = Inputmask.prototype.aliases[aliasStr];\n        if (aliasDefinition) {\n            if (aliasDefinition.alias) resolveAlias(aliasDefinition.alias, undefined, opts);\n            $.extend(true, opts, aliasDefinition);\n            $.extend(true, opts, options);\n            return true;\n        } else if (opts.mask === null) {\n            opts.mask = aliasStr;\n        }\n        return false;\n    }\n    function generateMaskSet(opts, nocache) {\n        function generateMask(mask, metadata, opts) {\n            var regexMask = false;\n            if (mask === null || mask === \"\") {\n                regexMask = opts.regex !== null;\n                if (regexMask) {\n                    mask = opts.regex;\n                    mask = mask.replace(/^(\\^)(.*)(\\$)$/, \"$2\");\n                } else {\n                    regexMask = true;\n                    mask = \".*\";\n                }\n            }\n            if (mask.length === 1 && opts.greedy === false && opts.repeat !== 0) {\n                opts.placeholder = \"\";\n            }\n            if (opts.repeat > 0 || opts.repeat === \"*\" || opts.repeat === \"+\") {\n                var repeatStart = opts.repeat === \"*\" ? 0 : opts.repeat === \"+\" ? 1 : opts.repeat;\n                mask = opts.groupmarker[0] + mask + opts.groupmarker[1] + opts.quantifiermarker[0] + repeatStart + \",\" + opts.repeat + opts.quantifiermarker[1];\n            }\n            var masksetDefinition, maskdefKey = regexMask ? \"regex_\" + opts.regex : opts.numericInput ? mask.split(\"\").reverse().join(\"\") : mask;\n            if (Inputmask.prototype.masksCache[maskdefKey] === undefined || nocache === true) {\n                masksetDefinition = {\n                    mask: mask,\n                    maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),\n                    validPositions: {},\n                    _buffer: undefined,\n                    buffer: undefined,\n                    tests: {},\n                    excludes: {},\n                    metadata: metadata,\n                    maskLength: undefined,\n                    jitOffset: {}\n                };\n                if (nocache !== true) {\n                    Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition;\n                    masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]);\n                }\n            } else masksetDefinition = $.extend(true, {}, Inputmask.prototype.masksCache[maskdefKey]);\n            return masksetDefinition;\n        }\n        var ms;\n        if ($.isFunction(opts.mask)) {\n            opts.mask = opts.mask(opts);\n        }\n        if ($.isArray(opts.mask)) {\n            if (opts.mask.length > 1) {\n                if (opts.keepStatic === null) {\n                    opts.keepStatic = \"auto\";\n                    for (var i = 0; i < opts.mask.length; i++) {\n                        if (opts.mask[i].charAt(0) !== opts.mask[0].charAt(0)) {\n                            opts.keepStatic = true;\n                            break;\n                        }\n                    }\n                }\n                var altMask = opts.groupmarker[0];\n                $.each(opts.isRTL ? opts.mask.reverse() : opts.mask, function(ndx, msk) {\n                    if (altMask.length > 1) {\n                        altMask += opts.groupmarker[1] + opts.alternatormarker + opts.groupmarker[0];\n                    }\n                    if (msk.mask !== undefined && !$.isFunction(msk.mask)) {\n                        altMask += msk.mask;\n                    } else {\n                        altMask += msk;\n                    }\n                });\n                altMask += opts.groupmarker[1];\n                return generateMask(altMask, opts.mask, opts);\n            } else opts.mask = opts.mask.pop();\n        }\n        if (opts.mask && opts.mask.mask !== undefined && !$.isFunction(opts.mask.mask)) {\n            ms = generateMask(opts.mask.mask, opts.mask, opts);\n        } else {\n            ms = generateMask(opts.mask, opts.mask, opts);\n        }\n        return ms;\n    }\n    function isInputEventSupported(eventName) {\n        var el = document.createElement(\"input\"), evName = \"on\" + eventName, isSupported = evName in el;\n        if (!isSupported) {\n            el.setAttribute(evName, \"return;\");\n            isSupported = typeof el[evName] === \"function\";\n        }\n        el = null;\n        return isSupported;\n    }\n    function maskScope(actionObj, maskset, opts) {\n        maskset = maskset || this.maskset;\n        opts = opts || this.opts;\n        var inputmask = this, el = this.el, isRTL = this.isRTL, undoValue, $el, skipKeyPressEvent = false, skipInputEvent = false, ignorable = false, maxLength, mouseEnter = false, colorMask, originalPlaceholder;\n        var getMaskTemplate = function(baseOnInput, minimalPos, includeMode, noJit, clearOptionalTail) {\n            var greedy = opts.greedy;\n            if (clearOptionalTail) opts.greedy = false;\n            minimalPos = minimalPos || 0;\n            var maskTemplate = [], ndxIntlzr, pos = 0, test, testPos, lvp = getLastValidPosition();\n            do {\n                if (baseOnInput === true && getMaskSet().validPositions[pos]) {\n                    testPos = clearOptionalTail && getMaskSet().validPositions[pos].match.optionality === true && getMaskSet().validPositions[pos + 1] === undefined && (getMaskSet().validPositions[pos].generatedInput === true || getMaskSet().validPositions[pos].input == opts.skipOptionalPartCharacter && pos > 0) ? determineTestTemplate(pos, getTests(pos, ndxIntlzr, pos - 1)) : getMaskSet().validPositions[pos];\n                    test = testPos.match;\n                    ndxIntlzr = testPos.locator.slice();\n                    maskTemplate.push(includeMode === true ? testPos.input : includeMode === false ? test.nativeDef : getPlaceholder(pos, test));\n                } else {\n                    testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);\n                    test = testPos.match;\n                    ndxIntlzr = testPos.locator.slice();\n                    var jitMasking = noJit === true ? false : opts.jitMasking !== false ? opts.jitMasking : test.jit;\n                    if (jitMasking === false || jitMasking === undefined || typeof jitMasking === \"number\" && isFinite(jitMasking) && jitMasking > pos) {\n                        maskTemplate.push(includeMode === false ? test.nativeDef : getPlaceholder(pos, test));\n                    }\n                }\n                if (opts.keepStatic === \"auto\") {\n                    if (test.newBlockMarker && test.fn !== null) {\n                        opts.keepStatic = pos - 1;\n                    }\n                }\n                pos++;\n            } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== \"\") || minimalPos > pos);\n            if (maskTemplate[maskTemplate.length - 1] === \"\") {\n                maskTemplate.pop();\n            }\n            if (includeMode !== false || getMaskSet().maskLength === undefined) getMaskSet().maskLength = pos - 1;\n            opts.greedy = greedy;\n            return maskTemplate;\n        };\n        function getMaskSet() {\n            return maskset;\n        }\n        function resetMaskSet(soft) {\n            var maskset = getMaskSet();\n            maskset.buffer = undefined;\n            if (soft !== true) {\n                maskset.validPositions = {};\n                maskset.p = 0;\n            }\n        }\n        function getLastValidPosition(closestTo, strict, validPositions) {\n            var before = -1, after = -1, valids = validPositions || getMaskSet().validPositions;\n            if (closestTo === undefined) closestTo = -1;\n            for (var posNdx in valids) {\n                var psNdx = parseInt(posNdx);\n                if (valids[psNdx] && (strict || valids[psNdx].generatedInput !== true)) {\n                    if (psNdx <= closestTo) before = psNdx;\n                    if (psNdx >= closestTo) after = psNdx;\n                }\n            }\n            return before === -1 || before == closestTo ? after : after == -1 ? before : closestTo - before < after - closestTo ? before : after;\n        }\n        function getDecisionTaker(tst) {\n            var decisionTaker = tst.locator[tst.alternation];\n            if (typeof decisionTaker == \"string\" && decisionTaker.length > 0) {\n                decisionTaker = decisionTaker.split(\",\")[0];\n            }\n            return decisionTaker !== undefined ? decisionTaker.toString() : \"\";\n        }\n        function getLocator(tst, align) {\n            var locator = (tst.alternation != undefined ? tst.mloc[getDecisionTaker(tst)] : tst.locator).join(\"\");\n            if (locator !== \"\") while (locator.length < align) locator += \"0\";\n            return locator;\n        }\n        function determineTestTemplate(pos, tests) {\n            pos = pos > 0 ? pos - 1 : 0;\n            var altTest = getTest(pos), targetLocator = getLocator(altTest), tstLocator, closest, bestMatch;\n            for (var ndx = 0; ndx < tests.length; ndx++) {\n                var tst = tests[ndx];\n                tstLocator = getLocator(tst, targetLocator.length);\n                var distance = Math.abs(tstLocator - targetLocator);\n                if (closest === undefined || tstLocator !== \"\" && distance < closest || bestMatch && !opts.greedy && bestMatch.match.optionality && bestMatch.match.newBlockMarker === \"master\" && (!tst.match.optionality || !tst.match.newBlockMarker) || bestMatch && bestMatch.match.optionalQuantifier && !tst.match.optionalQuantifier) {\n                    closest = distance;\n                    bestMatch = tst;\n                }\n            }\n            return bestMatch;\n        }\n        function getTestTemplate(pos, ndxIntlzr, tstPs) {\n            return getMaskSet().validPositions[pos] || determineTestTemplate(pos, getTests(pos, ndxIntlzr ? ndxIntlzr.slice() : ndxIntlzr, tstPs));\n        }\n        function getTest(pos, tests) {\n            if (getMaskSet().validPositions[pos]) {\n                return getMaskSet().validPositions[pos];\n            }\n            return (tests || getTests(pos))[0];\n        }\n        function positionCanMatchDefinition(pos, def) {\n            var valid = false, tests = getTests(pos);\n            for (var tndx = 0; tndx < tests.length; tndx++) {\n                if (tests[tndx].match && tests[tndx].match.def === def) {\n                    valid = true;\n                    break;\n                }\n            }\n            return valid;\n        }\n        function getTests(pos, ndxIntlzr, tstPs) {\n            var maskTokens = getMaskSet().maskToken, testPos = ndxIntlzr ? tstPs : 0, ndxInitializer = ndxIntlzr ? ndxIntlzr.slice() : [ 0 ], matches = [], insertStop = false, latestMatch, cacheDependency = ndxIntlzr ? ndxIntlzr.join(\"\") : \"\";\n            function resolveTestFromToken(maskToken, ndxInitializer, loopNdx, quantifierRecurse) {\n                function handleMatch(match, loopNdx, quantifierRecurse) {\n                    function isFirstMatch(latestMatch, tokenGroup) {\n                        var firstMatch = $.inArray(latestMatch, tokenGroup.matches) === 0;\n                        if (!firstMatch) {\n                            $.each(tokenGroup.matches, function(ndx, match) {\n                                if (match.isQuantifier === true) firstMatch = isFirstMatch(latestMatch, tokenGroup.matches[ndx - 1]); else if (match.hasOwnProperty(\"matches\")) firstMatch = isFirstMatch(latestMatch, match);\n                                if (firstMatch) return false;\n                            });\n                        }\n                        return firstMatch;\n                    }\n                    function resolveNdxInitializer(pos, alternateNdx, targetAlternation) {\n                        var bestMatch, indexPos;\n                        if (getMaskSet().tests[pos] || getMaskSet().validPositions[pos]) {\n                            $.each(getMaskSet().tests[pos] || [ getMaskSet().validPositions[pos] ], function(ndx, lmnt) {\n                                if (lmnt.mloc[alternateNdx]) {\n                                    bestMatch = lmnt;\n                                    return false;\n                                }\n                                var alternation = targetAlternation !== undefined ? targetAlternation : lmnt.alternation, ndxPos = lmnt.locator[alternation] !== undefined ? lmnt.locator[alternation].toString().indexOf(alternateNdx) : -1;\n                                if ((indexPos === undefined || ndxPos < indexPos) && ndxPos !== -1) {\n                                    bestMatch = lmnt;\n                                    indexPos = ndxPos;\n                                }\n                            });\n                        }\n                        if (bestMatch) {\n                            var bestMatchAltIndex = bestMatch.locator[bestMatch.alternation];\n                            var locator = bestMatch.mloc[alternateNdx] || bestMatch.mloc[bestMatchAltIndex] || bestMatch.locator;\n                            return locator.slice((targetAlternation !== undefined ? targetAlternation : bestMatch.alternation) + 1);\n                        } else {\n                            return targetAlternation !== undefined ? resolveNdxInitializer(pos, alternateNdx) : undefined;\n                        }\n                    }\n                    function isSubsetOf(source, target) {\n                        function expand(pattern) {\n                            var expanded = [], start, end;\n                            for (var i = 0, l = pattern.length; i < l; i++) {\n                                if (pattern.charAt(i) === \"-\") {\n                                    end = pattern.charCodeAt(i + 1);\n                                    while (++start < end) expanded.push(String.fromCharCode(start));\n                                } else {\n                                    start = pattern.charCodeAt(i);\n                                    expanded.push(pattern.charAt(i));\n                                }\n                            }\n                            return expanded.join(\"\");\n                        }\n                        if (opts.regex && source.match.fn !== null && target.match.fn !== null) {\n                            return expand(target.match.def.replace(/[\\[\\]]/g, \"\")).indexOf(expand(source.match.def.replace(/[\\[\\]]/g, \"\"))) !== -1;\n                        }\n                        return source.match.def === target.match.nativeDef;\n                    }\n                    function staticCanMatchDefinition(source, target) {\n                        var sloc = source.locator.slice(source.alternation).join(\"\"), tloc = target.locator.slice(target.alternation).join(\"\"), canMatch = sloc == tloc;\n                        canMatch = canMatch && source.match.fn === null && target.match.fn !== null ? target.match.fn.test(source.match.def, getMaskSet(), pos, false, opts, false) : false;\n                        return canMatch;\n                    }\n                    function setMergeLocators(targetMatch, altMatch) {\n                        if (altMatch === undefined || targetMatch.alternation === altMatch.alternation && targetMatch.locator[targetMatch.alternation].toString().indexOf(altMatch.locator[altMatch.alternation]) === -1) {\n                            targetMatch.mloc = targetMatch.mloc || {};\n                            var locNdx = targetMatch.locator[targetMatch.alternation];\n                            if (locNdx === undefined) targetMatch.alternation = undefined; else {\n                                if (typeof locNdx === \"string\") locNdx = locNdx.split(\",\")[0];\n                                if (targetMatch.mloc[locNdx] === undefined) targetMatch.mloc[locNdx] = targetMatch.locator.slice();\n                                if (altMatch !== undefined) {\n                                    for (var ndx in altMatch.mloc) {\n                                        if (typeof ndx === \"string\") ndx = ndx.split(\",\")[0];\n                                        if (targetMatch.mloc[ndx] === undefined) targetMatch.mloc[ndx] = altMatch.mloc[ndx];\n                                    }\n                                    targetMatch.locator[targetMatch.alternation] = Object.keys(targetMatch.mloc).join(\",\");\n                                }\n                                return true;\n                            }\n                        }\n                        return false;\n                    }\n                    if (testPos > 500 && quantifierRecurse !== undefined) {\n                        throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + getMaskSet().mask;\n                    }\n                    if (testPos === pos && match.matches === undefined) {\n                        matches.push({\n                            match: match,\n                            locator: loopNdx.reverse(),\n                            cd: cacheDependency,\n                            mloc: {}\n                        });\n                        return true;\n                    } else if (match.matches !== undefined) {\n                        if (match.isGroup && quantifierRecurse !== match) {\n                            match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx, quantifierRecurse);\n                            if (match) return true;\n                        } else if (match.isOptional) {\n                            var optionalToken = match;\n                            match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse);\n                            if (match) {\n                                $.each(matches, function(ndx, mtch) {\n                                    mtch.match.optionality = true;\n                                });\n                                latestMatch = matches[matches.length - 1].match;\n                                if (quantifierRecurse === undefined && isFirstMatch(latestMatch, optionalToken)) {\n                                    insertStop = true;\n                                    testPos = pos;\n                                } else return true;\n                            }\n                        } else if (match.isAlternator) {\n                            var alternateToken = match, malternateMatches = [], maltMatches, currentMatches = matches.slice(), loopNdxCnt = loopNdx.length;\n                            var altIndex = ndxInitializer.length > 0 ? ndxInitializer.shift() : -1;\n                            if (altIndex === -1 || typeof altIndex === \"string\") {\n                                var currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [], amndx;\n                                if (typeof altIndex == \"string\") {\n                                    altIndexArr = altIndex.split(\",\");\n                                } else {\n                                    for (amndx = 0; amndx < alternateToken.matches.length; amndx++) {\n                                        altIndexArr.push(amndx.toString());\n                                    }\n                                }\n                                if (getMaskSet().excludes[pos]) {\n                                    var altIndexArrClone = altIndexArr.slice();\n                                    for (var i = 0, el = getMaskSet().excludes[pos].length; i < el; i++) {\n                                        altIndexArr.splice(altIndexArr.indexOf(getMaskSet().excludes[pos][i].toString()), 1);\n                                    }\n                                    if (altIndexArr.length === 0) {\n                                        getMaskSet().excludes[pos] = undefined;\n                                        altIndexArr = altIndexArrClone;\n                                    }\n                                }\n                                if (opts.keepStatic === true || isFinite(parseInt(opts.keepStatic)) && currentPos >= opts.keepStatic) altIndexArr = altIndexArr.slice(0, 1);\n                                var unMatchedAlternation = false;\n                                for (var ndx = 0; ndx < altIndexArr.length; ndx++) {\n                                    amndx = parseInt(altIndexArr[ndx]);\n                                    matches = [];\n                                    ndxInitializer = typeof altIndex === \"string\" ? resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice() : ndxInitializerClone.slice();\n                                    if (alternateToken.matches[amndx] && handleMatch(alternateToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse)) match = true; else if (ndx === 0) {\n                                        unMatchedAlternation = true;\n                                    }\n                                    maltMatches = matches.slice();\n                                    testPos = currentPos;\n                                    matches = [];\n                                    for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {\n                                        var altMatch = maltMatches[ndx1], dropMatch = false;\n                                        altMatch.match.jit = altMatch.match.jit || unMatchedAlternation;\n                                        altMatch.alternation = altMatch.alternation || loopNdxCnt;\n                                        setMergeLocators(altMatch);\n                                        for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {\n                                            var altMatch2 = malternateMatches[ndx2];\n                                            if (typeof altIndex !== \"string\" || altMatch.alternation !== undefined && $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr) !== -1) {\n                                                if (altMatch.match.nativeDef === altMatch2.match.nativeDef) {\n                                                    dropMatch = true;\n                                                    setMergeLocators(altMatch2, altMatch);\n                                                    break;\n                                                } else if (isSubsetOf(altMatch, altMatch2)) {\n                                                    if (setMergeLocators(altMatch, altMatch2)) {\n                                                        dropMatch = true;\n                                                        malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch);\n                                                    }\n                                                    break;\n                                                } else if (isSubsetOf(altMatch2, altMatch)) {\n                                                    setMergeLocators(altMatch2, altMatch);\n                                                    break;\n                                                } else if (staticCanMatchDefinition(altMatch, altMatch2)) {\n                                                    if (setMergeLocators(altMatch, altMatch2)) {\n                                                        dropMatch = true;\n                                                        malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch);\n                                                    }\n                                                    break;\n                                                }\n                                            }\n                                        }\n                                        if (!dropMatch) {\n                                            malternateMatches.push(altMatch);\n                                        }\n                                    }\n                                }\n                                matches = currentMatches.concat(malternateMatches);\n                                testPos = pos;\n                                insertStop = matches.length > 0;\n                                match = malternateMatches.length > 0;\n                                ndxInitializer = ndxInitializerClone.slice();\n                            } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);\n                            if (match) return true;\n                        } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) {\n                            var qt = match;\n                            for (var qndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) {\n                                var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];\n                                match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup);\n                                if (match) {\n                                    latestMatch = matches[matches.length - 1].match;\n                                    latestMatch.optionalQuantifier = qndx >= qt.quantifier.min;\n                                    latestMatch.jit = (qndx || 1) * tokenGroup.matches.indexOf(latestMatch) >= qt.quantifier.jit;\n                                    if (latestMatch.optionalQuantifier && isFirstMatch(latestMatch, tokenGroup)) {\n                                        insertStop = true;\n                                        testPos = pos;\n                                        break;\n                                    }\n                                    if (latestMatch.jit) {\n                                        getMaskSet().jitOffset[pos] = tokenGroup.matches.indexOf(latestMatch);\n                                    }\n                                    return true;\n                                }\n                            }\n                        } else {\n                            match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse);\n                            if (match) return true;\n                        }\n                    } else {\n                        testPos++;\n                    }\n                }\n                for (var tndx = ndxInitializer.length > 0 ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) {\n                    if (maskToken.matches[tndx].isQuantifier !== true) {\n                        var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);\n                        if (match && testPos === pos) {\n                            return match;\n                        } else if (testPos > pos) {\n                            break;\n                        }\n                    }\n                }\n            }\n            function mergeLocators(pos, tests) {\n                var locator = [];\n                if (!$.isArray(tests)) tests = [ tests ];\n                if (tests.length > 0) {\n                    if (tests[0].alternation === undefined) {\n                        locator = determineTestTemplate(pos, tests.slice()).locator.slice();\n                        if (locator.length === 0) locator = tests[0].locator.slice();\n                    } else {\n                        $.each(tests, function(ndx, tst) {\n                            if (tst.def !== \"\") {\n                                if (locator.length === 0) locator = tst.locator.slice(); else {\n                                    for (var i = 0; i < locator.length; i++) {\n                                        if (tst.locator[i] && locator[i].toString().indexOf(tst.locator[i]) === -1) {\n                                            locator[i] += \",\" + tst.locator[i];\n                                        }\n                                    }\n                                }\n                            }\n                        });\n                    }\n                }\n                return locator;\n            }\n            if (pos > -1) {\n                if (ndxIntlzr === undefined) {\n                    var previousPos = pos - 1, test;\n                    while ((test = getMaskSet().validPositions[previousPos] || getMaskSet().tests[previousPos]) === undefined && previousPos > -1) {\n                        previousPos--;\n                    }\n                    if (test !== undefined && previousPos > -1) {\n                        ndxInitializer = mergeLocators(previousPos, test);\n                        cacheDependency = ndxInitializer.join(\"\");\n                        testPos = previousPos;\n                    }\n                }\n                if (getMaskSet().tests[pos] && getMaskSet().tests[pos][0].cd === cacheDependency) {\n                    return getMaskSet().tests[pos];\n                }\n                for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) {\n                    var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]);\n                    if (match && testPos === pos || testPos > pos) {\n                        break;\n                    }\n                }\n            }\n            if (matches.length === 0 || insertStop) {\n                matches.push({\n                    match: {\n                        fn: null,\n                        optionality: false,\n                        casing: null,\n                        def: \"\",\n                        placeholder: \"\"\n                    },\n                    locator: [],\n                    mloc: {},\n                    cd: cacheDependency\n                });\n            }\n            if (ndxIntlzr !== undefined && getMaskSet().tests[pos]) {\n                return $.extend(true, [], matches);\n            }\n            getMaskSet().tests[pos] = $.extend(true, [], matches);\n            return getMaskSet().tests[pos];\n        }\n        function getBufferTemplate() {\n            if (getMaskSet()._buffer === undefined) {\n                getMaskSet()._buffer = getMaskTemplate(false, 1);\n                if (getMaskSet().buffer === undefined) getMaskSet().buffer = getMaskSet()._buffer.slice();\n            }\n            return getMaskSet()._buffer;\n        }\n        function getBuffer(noCache) {\n            if (getMaskSet().buffer === undefined || noCache === true) {\n                getMaskSet().buffer = getMaskTemplate(true, getLastValidPosition(), true);\n                if (getMaskSet()._buffer === undefined) getMaskSet()._buffer = getMaskSet().buffer.slice();\n            }\n            return getMaskSet().buffer;\n        }\n        function refreshFromBuffer(start, end, buffer) {\n            var i, p;\n            if (start === true) {\n                resetMaskSet();\n                start = 0;\n                end = buffer.length;\n            } else {\n                for (i = start; i < end; i++) {\n                    delete getMaskSet().validPositions[i];\n                }\n            }\n            p = start;\n            for (i = start; i < end; i++) {\n                resetMaskSet(true);\n                if (buffer[i] !== opts.skipOptionalPartCharacter) {\n                    var valResult = isValid(p, buffer[i], true, true);\n                    if (valResult !== false) {\n                        resetMaskSet(true);\n                        p = valResult.caret !== undefined ? valResult.caret : valResult.pos + 1;\n                    }\n                }\n            }\n        }\n        function casing(elem, test, pos) {\n            switch (opts.casing || test.casing) {\n              case \"upper\":\n                elem = elem.toUpperCase();\n                break;\n\n              case \"lower\":\n                elem = elem.toLowerCase();\n                break;\n\n              case \"title\":\n                var posBefore = getMaskSet().validPositions[pos - 1];\n                if (pos === 0 || posBefore && posBefore.input === String.fromCharCode(Inputmask.keyCode.SPACE)) {\n                    elem = elem.toUpperCase();\n                } else {\n                    elem = elem.toLowerCase();\n                }\n                break;\n\n              default:\n                if ($.isFunction(opts.casing)) {\n                    var args = Array.prototype.slice.call(arguments);\n                    args.push(getMaskSet().validPositions);\n                    elem = opts.casing.apply(this, args);\n                }\n            }\n            return elem;\n        }\n        function checkAlternationMatch(altArr1, altArr2, na) {\n            var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = false, naArr = na !== undefined ? na.split(\",\") : [], naNdx;\n            for (var i = 0; i < naArr.length; i++) {\n                if ((naNdx = altArr1.indexOf(naArr[i])) !== -1) {\n                    altArr1.splice(naNdx, 1);\n                }\n            }\n            for (var alndx = 0; alndx < altArr1.length; alndx++) {\n                if ($.inArray(altArr1[alndx], altArrC) !== -1) {\n                    isMatch = true;\n                    break;\n                }\n            }\n            return isMatch;\n        }\n        function alternate(pos, c, strict, fromSetValid, rAltPos) {\n            var validPsClone = $.extend(true, {}, getMaskSet().validPositions), lastAlt, alternation, isValidRslt = false, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = rAltPos !== undefined ? rAltPos : getLastValidPosition();\n            if (lAltPos === -1 && rAltPos === undefined) {\n                lastAlt = 0;\n                prevAltPos = getTest(lastAlt);\n                alternation = prevAltPos.alternation;\n            } else {\n                for (;lAltPos >= 0; lAltPos--) {\n                    altPos = getMaskSet().validPositions[lAltPos];\n                    if (altPos && altPos.alternation !== undefined) {\n                        if (prevAltPos && prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) {\n                            break;\n                        }\n                        lastAlt = lAltPos;\n                        alternation = getMaskSet().validPositions[lastAlt].alternation;\n                        prevAltPos = altPos;\n                    }\n                }\n            }\n            if (alternation !== undefined) {\n                decisionPos = parseInt(lastAlt);\n                getMaskSet().excludes[decisionPos] = getMaskSet().excludes[decisionPos] || [];\n                if (pos !== true) {\n                    getMaskSet().excludes[decisionPos].push(getDecisionTaker(prevAltPos));\n                }\n                var validInputsClone = [], staticInputsBeforePos = 0;\n                for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) {\n                    validPos = getMaskSet().validPositions[i];\n                    if (validPos && validPos.generatedInput !== true) {\n                        validInputsClone.push(validPos.input);\n                    } else if (i < pos) staticInputsBeforePos++;\n                    delete getMaskSet().validPositions[i];\n                }\n                while (getMaskSet().excludes[decisionPos] && getMaskSet().excludes[decisionPos].length < 10) {\n                    var posOffset = staticInputsBeforePos * -1, validInputs = validInputsClone.slice();\n                    getMaskSet().tests[decisionPos] = undefined;\n                    resetMaskSet(true);\n                    isValidRslt = true;\n                    while (validInputs.length > 0) {\n                        var input = validInputs.shift();\n                        if (!(isValidRslt = isValid(getLastValidPosition(undefined, true) + 1, input, false, fromSetValid, true))) {\n                            break;\n                        }\n                    }\n                    if (isValidRslt && c !== undefined) {\n                        var targetLvp = getLastValidPosition(pos) + 1;\n                        for (i = decisionPos; i < getLastValidPosition() + 1; i++) {\n                            validPos = getMaskSet().validPositions[i];\n                            if ((validPos === undefined || validPos.match.fn == null) && i < pos + posOffset) {\n                                posOffset++;\n                            }\n                        }\n                        pos = pos + posOffset;\n                        isValidRslt = isValid(pos > targetLvp ? targetLvp : pos, c, strict, fromSetValid, true);\n                    }\n                    if (!isValidRslt) {\n                        resetMaskSet();\n                        prevAltPos = getTest(decisionPos);\n                        getMaskSet().validPositions = $.extend(true, {}, validPsClone);\n                        if (getMaskSet().excludes[decisionPos]) {\n                            var decisionTaker = getDecisionTaker(prevAltPos);\n                            if (getMaskSet().excludes[decisionPos].indexOf(decisionTaker) !== -1) {\n                                isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1);\n                                break;\n                            }\n                            getMaskSet().excludes[decisionPos].push(decisionTaker);\n                            for (i = decisionPos; i < getLastValidPosition(undefined, true) + 1; i++) delete getMaskSet().validPositions[i];\n                        } else {\n                            isValidRslt = alternate(pos, c, strict, fromSetValid, decisionPos - 1);\n                            break;\n                        }\n                    } else break;\n                }\n            }\n            getMaskSet().excludes[decisionPos] = undefined;\n            return isValidRslt;\n        }\n        function isValid(pos, c, strict, fromSetValid, fromAlternate, validateOnly) {\n            function isSelection(posObj) {\n                return isRTL ? posObj.begin - posObj.end > 1 || posObj.begin - posObj.end === 1 : posObj.end - posObj.begin > 1 || posObj.end - posObj.begin === 1;\n            }\n            strict = strict === true;\n            var maskPos = pos;\n            if (pos.begin !== undefined) {\n                maskPos = isRTL ? pos.end : pos.begin;\n            }\n            function _isValid(position, c, strict) {\n                var rslt = false;\n                $.each(getTests(position), function(ndx, tst) {\n                    var test = tst.match;\n                    getBuffer(true);\n                    rslt = test.fn != null ? test.fn.test(c, getMaskSet(), position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && test.def !== \"\" ? {\n                        c: getPlaceholder(position, test, true) || test.def,\n                        pos: position\n                    } : false;\n                    if (rslt !== false) {\n                        var elem = rslt.c !== undefined ? rslt.c : c, validatedPos = position;\n                        elem = elem === opts.skipOptionalPartCharacter && test.fn === null ? getPlaceholder(position, test, true) || test.def : elem;\n                        if (rslt.remove !== undefined) {\n                            if (!$.isArray(rslt.remove)) rslt.remove = [ rslt.remove ];\n                            $.each(rslt.remove.sort(function(a, b) {\n                                return b - a;\n                            }), function(ndx, lmnt) {\n                                revalidateMask({\n                                    begin: lmnt,\n                                    end: lmnt + 1\n                                });\n                            });\n                        }\n                        if (rslt.insert !== undefined) {\n                            if (!$.isArray(rslt.insert)) rslt.insert = [ rslt.insert ];\n                            $.each(rslt.insert.sort(function(a, b) {\n                                return a - b;\n                            }), function(ndx, lmnt) {\n                                isValid(lmnt.pos, lmnt.c, true, fromSetValid);\n                            });\n                        }\n                        if (rslt !== true && rslt.pos !== undefined && rslt.pos !== position) {\n                            validatedPos = rslt.pos;\n                        }\n                        if (rslt !== true && rslt.pos === undefined && rslt.c === undefined) {\n                            return false;\n                        }\n                        if (!revalidateMask(pos, $.extend({}, tst, {\n                            input: casing(elem, test, validatedPos)\n                        }), fromSetValid, validatedPos)) {\n                            rslt = false;\n                        }\n                        return false;\n                    }\n                });\n                return rslt;\n            }\n            var result = true, positionsClone = $.extend(true, {}, getMaskSet().validPositions);\n            if ($.isFunction(opts.preValidation) && !strict && fromSetValid !== true && validateOnly !== true) {\n                result = opts.preValidation(getBuffer(), maskPos, c, isSelection(pos), opts, getMaskSet());\n            }\n            if (result === true) {\n                trackbackPositions(undefined, maskPos, true);\n                if (maxLength === undefined || maskPos < maxLength) {\n                    result = _isValid(maskPos, c, strict);\n                    if ((!strict || fromSetValid === true) && result === false && validateOnly !== true) {\n                        var currentPosValid = getMaskSet().validPositions[maskPos];\n                        if (currentPosValid && currentPosValid.match.fn === null && (currentPosValid.match.def === c || c === opts.skipOptionalPartCharacter)) {\n                            result = {\n                                caret: seekNext(maskPos)\n                            };\n                        } else {\n                            if ((opts.insertMode || getMaskSet().validPositions[seekNext(maskPos)] === undefined) && (!isMask(maskPos, true) || getMaskSet().jitOffset[maskPos])) {\n                                if (getMaskSet().jitOffset[maskPos] && getMaskSet().validPositions[seekNext(maskPos)] === undefined) {\n                                    result = isValid(maskPos + getMaskSet().jitOffset[maskPos], c, strict);\n                                    if (result !== false) result.caret = maskPos;\n                                } else for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) {\n                                    result = _isValid(nPos, c, strict);\n                                    if (result !== false) {\n                                        result = trackbackPositions(maskPos, result.pos !== undefined ? result.pos : nPos) || result;\n                                        maskPos = nPos;\n                                        break;\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n                if (result === false && opts.keepStatic !== false && (opts.regex == null || isComplete(getBuffer())) && !strict && fromAlternate !== true) {\n                    result = alternate(maskPos, c, strict, fromSetValid);\n                }\n                if (result === true) {\n                    result = {\n                        pos: maskPos\n                    };\n                }\n            }\n            if ($.isFunction(opts.postValidation) && result !== false && !strict && fromSetValid !== true && validateOnly !== true) {\n                var postResult = opts.postValidation(getBuffer(true), pos.begin !== undefined ? isRTL ? pos.end : pos.begin : pos, result, opts);\n                if (postResult !== undefined) {\n                    if (postResult.refreshFromBuffer && postResult.buffer) {\n                        var refresh = postResult.refreshFromBuffer;\n                        refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, postResult.buffer);\n                    }\n                    result = postResult === true ? result : postResult;\n                }\n            }\n            if (result && result.pos === undefined) {\n                result.pos = maskPos;\n            }\n            if (result === false || validateOnly === true) {\n                resetMaskSet(true);\n                getMaskSet().validPositions = $.extend(true, {}, positionsClone);\n            }\n            return result;\n        }\n        function trackbackPositions(originalPos, newPos, fillOnly) {\n            var result;\n            if (originalPos === undefined) {\n                for (originalPos = newPos - 1; originalPos > 0; originalPos--) {\n                    if (getMaskSet().validPositions[originalPos]) break;\n                }\n            }\n            for (var ps = originalPos; ps < newPos; ps++) {\n                if (getMaskSet().validPositions[ps] === undefined && !isMask(ps, true)) {\n                    var vp = ps == 0 ? getTest(ps) : getMaskSet().validPositions[ps - 1];\n                    if (vp) {\n                        var tests = getTests(ps).slice();\n                        if (tests[tests.length - 1].match.def === \"\") tests.pop();\n                        var bestMatch = determineTestTemplate(ps, tests);\n                        bestMatch = $.extend({}, bestMatch, {\n                            input: getPlaceholder(ps, bestMatch.match, true) || bestMatch.match.def\n                        });\n                        bestMatch.generatedInput = true;\n                        revalidateMask(ps, bestMatch, true);\n                        if (fillOnly !== true) {\n                            var cvpInput = getMaskSet().validPositions[newPos].input;\n                            getMaskSet().validPositions[newPos] = undefined;\n                            result = isValid(newPos, cvpInput, true, true);\n                        }\n                    }\n                }\n            }\n            return result;\n        }\n        function revalidateMask(pos, validTest, fromSetValid, validatedPos) {\n            function IsEnclosedStatic(pos, valids, selection) {\n                var posMatch = valids[pos];\n                if (posMatch !== undefined && (posMatch.match.fn === null && posMatch.match.optionality !== true || posMatch.input === opts.radixPoint)) {\n                    var prevMatch = selection.begin <= pos - 1 ? valids[pos - 1] && valids[pos - 1].match.fn === null && valids[pos - 1] : valids[pos - 1], nextMatch = selection.end > pos + 1 ? valids[pos + 1] && valids[pos + 1].match.fn === null && valids[pos + 1] : valids[pos + 1];\n                    return prevMatch && nextMatch;\n                }\n                return false;\n            }\n            var begin = pos.begin !== undefined ? pos.begin : pos, end = pos.end !== undefined ? pos.end : pos;\n            if (pos.begin > pos.end) {\n                begin = pos.end;\n                end = pos.begin;\n            }\n            validatedPos = validatedPos !== undefined ? validatedPos : begin;\n            if (begin !== end || opts.insertMode && getMaskSet().validPositions[validatedPos] !== undefined && fromSetValid === undefined) {\n                var positionsClone = $.extend(true, {}, getMaskSet().validPositions), lvp = getLastValidPosition(undefined, true), i;\n                getMaskSet().p = begin;\n                for (i = lvp; i >= begin; i--) {\n                    if (getMaskSet().validPositions[i] && getMaskSet().validPositions[i].match.nativeDef === \"+\") {\n                        opts.isNegative = false;\n                    }\n                    delete getMaskSet().validPositions[i];\n                }\n                var valid = true, j = validatedPos, vps = getMaskSet().validPositions, needsValidation = false, posMatch = j, i = j;\n                if (validTest) {\n                    getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest);\n                    posMatch++;\n                    j++;\n                    if (begin < end) i++;\n                }\n                for (;i <= lvp; i++) {\n                    var t = positionsClone[i];\n                    if (t !== undefined && (i >= end || i >= begin && t.generatedInput !== true && IsEnclosedStatic(i, positionsClone, {\n                        begin: begin,\n                        end: end\n                    }))) {\n                        while (getTest(posMatch).match.def !== \"\") {\n                            if (needsValidation === false && positionsClone[posMatch] && positionsClone[posMatch].match.nativeDef === t.match.nativeDef) {\n                                getMaskSet().validPositions[posMatch] = $.extend(true, {}, positionsClone[posMatch]);\n                                getMaskSet().validPositions[posMatch].input = t.input;\n                                trackbackPositions(undefined, posMatch, true);\n                                j = posMatch + 1;\n                                valid = true;\n                            } else if (opts.shiftPositions && positionCanMatchDefinition(posMatch, t.match.def)) {\n                                var result = isValid(posMatch, t.input, true, true);\n                                valid = result !== false;\n                                j = result.caret || result.insert ? getLastValidPosition() : posMatch + 1;\n                                needsValidation = true;\n                            } else {\n                                valid = t.generatedInput === true || t.input === opts.radixPoint && opts.numericInput === true;\n                            }\n                            if (valid) break;\n                            if (!valid && posMatch > end && isMask(posMatch, true) && (t.match.fn !== null || posMatch > getMaskSet().maskLength)) {\n                                break;\n                            }\n                            posMatch++;\n                        }\n                        if (getTest(posMatch).match.def == \"\") valid = false;\n                        posMatch = j;\n                    }\n                    if (!valid) break;\n                }\n                if (!valid) {\n                    getMaskSet().validPositions = $.extend(true, {}, positionsClone);\n                    resetMaskSet(true);\n                    return false;\n                }\n            } else if (validTest) {\n                getMaskSet().validPositions[validatedPos] = $.extend(true, {}, validTest);\n            }\n            resetMaskSet(true);\n            return true;\n        }\n        function isMask(pos, strict) {\n            var test = getTestTemplate(pos).match;\n            if (test.def === \"\") test = getTest(pos).match;\n            if (test.fn != null) {\n                return test.fn;\n            }\n            if (strict !== true && pos > -1) {\n                var tests = getTests(pos);\n                return tests.length > 1 + (tests[tests.length - 1].match.def === \"\" ? 1 : 0);\n            }\n            return false;\n        }\n        function seekNext(pos, newBlock) {\n            var position = pos + 1;\n            while (getTest(position).match.def !== \"\" && (newBlock === true && (getTest(position).match.newBlockMarker !== true || !isMask(position)) || newBlock !== true && !isMask(position))) {\n                position++;\n            }\n            return position;\n        }\n        function seekPrevious(pos, newBlock) {\n            var position = pos, tests;\n            if (position <= 0) return 0;\n            while (--position > 0 && (newBlock === true && getTest(position).match.newBlockMarker !== true || newBlock !== true && !isMask(position) && (tests = getTests(position), \n            tests.length < 2 || tests.length === 2 && tests[1].match.def === \"\"))) {}\n            return position;\n        }\n        function writeBuffer(input, buffer, caretPos, event, triggerEvents) {\n            if (event && $.isFunction(opts.onBeforeWrite)) {\n                var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts);\n                if (result) {\n                    if (result.refreshFromBuffer) {\n                        var refresh = result.refreshFromBuffer;\n                        refreshFromBuffer(refresh === true ? refresh : refresh.start, refresh.end, result.buffer || buffer);\n                        buffer = getBuffer(true);\n                    }\n                    if (caretPos !== undefined) caretPos = result.caret !== undefined ? result.caret : caretPos;\n                }\n            }\n            if (input !== undefined) {\n                input.inputmask._valueSet(buffer.join(\"\"));\n                if (caretPos !== undefined && (event === undefined || event.type !== \"blur\")) {\n                    caret(input, caretPos);\n                } else renderColorMask(input, caretPos, buffer.length === 0);\n                if (triggerEvents === true) {\n                    var $input = $(input), nptVal = input.inputmask._valueGet();\n                    skipInputEvent = true;\n                    $input.trigger(\"input\");\n                    setTimeout(function() {\n                        if (nptVal === getBufferTemplate().join(\"\")) {\n                            $input.trigger(\"cleared\");\n                        } else if (isComplete(buffer) === true) {\n                            $input.trigger(\"complete\");\n                        }\n                    }, 0);\n                }\n            }\n        }\n        function getPlaceholder(pos, test, returnPL) {\n            test = test || getTest(pos).match;\n            if (test.placeholder !== undefined || returnPL === true) {\n                return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder;\n            } else if (test.fn === null) {\n                if (pos > -1 && getMaskSet().validPositions[pos] === undefined) {\n                    var tests = getTests(pos), staticAlternations = [], prevTest;\n                    if (tests.length > 1 + (tests[tests.length - 1].match.def === \"\" ? 1 : 0)) {\n                        for (var i = 0; i < tests.length; i++) {\n                            if (tests[i].match.optionality !== true && tests[i].match.optionalQuantifier !== true && (tests[i].match.fn === null || (prevTest === undefined || tests[i].match.fn.test(prevTest.match.def, getMaskSet(), pos, true, opts) !== false))) {\n                                staticAlternations.push(tests[i]);\n                                if (tests[i].match.fn === null) prevTest = tests[i];\n                                if (staticAlternations.length > 1) {\n                                    if (/[0-9a-bA-Z]/.test(staticAlternations[0].match.def)) {\n                                        return opts.placeholder.charAt(pos % opts.placeholder.length);\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n                return test.def;\n            }\n            return opts.placeholder.charAt(pos % opts.placeholder.length);\n        }\n        function HandleNativePlaceholder(npt, value) {\n            if (ie) {\n                if (npt.inputmask._valueGet() !== value && (npt.placeholder !== value || npt.placeholder === \"\")) {\n                    var buffer = getBuffer().slice(), nptValue = npt.inputmask._valueGet();\n                    if (nptValue !== value) {\n                        var lvp = getLastValidPosition();\n                        if (lvp === -1 && nptValue === getBufferTemplate().join(\"\")) {\n                            buffer = [];\n                        } else if (lvp !== -1) {\n                            clearOptionalTail(buffer);\n                        }\n                        writeBuffer(npt, buffer);\n                    }\n                }\n            } else if (npt.placeholder !== value) {\n                npt.placeholder = value;\n                if (npt.placeholder === \"\") npt.removeAttribute(\"placeholder\");\n            }\n        }\n        var EventRuler = {\n            on: function(input, eventName, eventHandler) {\n                var ev = function(e) {\n                    var that = this;\n                    if (that.inputmask === undefined && this.nodeName !== \"FORM\") {\n                        var imOpts = $.data(that, \"_inputmask_opts\");\n                        if (imOpts) new Inputmask(imOpts).mask(that); else EventRuler.off(that);\n                    } else if (e.type !== \"setvalue\" && this.nodeName !== \"FORM\" && (that.disabled || that.readOnly && !(e.type === \"keydown\" && (e.ctrlKey && e.keyCode === 67) || opts.tabThrough === false && e.keyCode === Inputmask.keyCode.TAB))) {\n                        e.preventDefault();\n                    } else {\n                        switch (e.type) {\n                          case \"input\":\n                            if (skipInputEvent === true) {\n                                skipInputEvent = false;\n                                return e.preventDefault();\n                            }\n                            if (mobile) {\n                                var args = arguments;\n                                setTimeout(function() {\n                                    eventHandler.apply(that, args);\n                                    caret(that, that.inputmask.caretPos, undefined, true);\n                                }, 0);\n                                return false;\n                            }\n                            break;\n\n                          case \"keydown\":\n                            skipKeyPressEvent = false;\n                            skipInputEvent = false;\n                            break;\n\n                          case \"keypress\":\n                            if (skipKeyPressEvent === true) {\n                                return e.preventDefault();\n                            }\n                            skipKeyPressEvent = true;\n                            break;\n\n                          case \"click\":\n                            if (iemobile || iphone) {\n                                var args = arguments;\n                                setTimeout(function() {\n                                    eventHandler.apply(that, args);\n                                }, 0);\n                                return false;\n                            }\n                            break;\n                        }\n                        var returnVal = eventHandler.apply(that, arguments);\n                        if (returnVal === false) {\n                            e.preventDefault();\n                            e.stopPropagation();\n                        }\n                        return returnVal;\n                    }\n                };\n                input.inputmask.events[eventName] = input.inputmask.events[eventName] || [];\n                input.inputmask.events[eventName].push(ev);\n                if ($.inArray(eventName, [ \"submit\", \"reset\" ]) !== -1) {\n                    if (input.form !== null) $(input.form).on(eventName, ev);\n                } else {\n                    $(input).on(eventName, ev);\n                }\n            },\n            off: function(input, event) {\n                if (input.inputmask && input.inputmask.events) {\n                    var events;\n                    if (event) {\n                        events = [];\n                        events[event] = input.inputmask.events[event];\n                    } else {\n                        events = input.inputmask.events;\n                    }\n                    $.each(events, function(eventName, evArr) {\n                        while (evArr.length > 0) {\n                            var ev = evArr.pop();\n                            if ($.inArray(eventName, [ \"submit\", \"reset\" ]) !== -1) {\n                                if (input.form !== null) $(input.form).off(eventName, ev);\n                            } else {\n                                $(input).off(eventName, ev);\n                            }\n                        }\n                        delete input.inputmask.events[eventName];\n                    });\n                }\n            }\n        };\n        var EventHandlers = {\n            keydownEvent: function(e) {\n                var input = this, $input = $(input), k = e.keyCode, pos = caret(input);\n                if (k === Inputmask.keyCode.BACKSPACE || k === Inputmask.keyCode.DELETE || iphone && k === Inputmask.keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === Inputmask.keyCode.X && !isInputEventSupported(\"cut\")) {\n                    e.preventDefault();\n                    handleRemove(input, k, pos);\n                    writeBuffer(input, getBuffer(true), getMaskSet().p, e, input.inputmask._valueGet() !== getBuffer().join(\"\"));\n                } else if (k === Inputmask.keyCode.END || k === Inputmask.keyCode.PAGE_DOWN) {\n                    e.preventDefault();\n                    var caretPos = seekNext(getLastValidPosition());\n                    caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, true);\n                } else if (k === Inputmask.keyCode.HOME && !e.shiftKey || k === Inputmask.keyCode.PAGE_UP) {\n                    e.preventDefault();\n                    caret(input, 0, e.shiftKey ? pos.begin : 0, true);\n                } else if ((opts.undoOnEscape && k === Inputmask.keyCode.ESCAPE || k === 90 && e.ctrlKey) && e.altKey !== true) {\n                    checkVal(input, true, false, undoValue.split(\"\"));\n                    $input.trigger(\"click\");\n                } else if (k === Inputmask.keyCode.INSERT && !(e.shiftKey || e.ctrlKey)) {\n                    opts.insertMode = !opts.insertMode;\n                    input.setAttribute(\"im-insert\", opts.insertMode);\n                } else if (opts.tabThrough === true && k === Inputmask.keyCode.TAB) {\n                    if (e.shiftKey === true) {\n                        if (getTest(pos.begin).match.fn === null) {\n                            pos.begin = seekNext(pos.begin);\n                        }\n                        pos.end = seekPrevious(pos.begin, true);\n                        pos.begin = seekPrevious(pos.end, true);\n                    } else {\n                        pos.begin = seekNext(pos.begin, true);\n                        pos.end = seekNext(pos.begin, true);\n                        if (pos.end < getMaskSet().maskLength) pos.end--;\n                    }\n                    if (pos.begin < getMaskSet().maskLength) {\n                        e.preventDefault();\n                        caret(input, pos.begin, pos.end);\n                    }\n                }\n                opts.onKeyDown.call(this, e, getBuffer(), caret(input).begin, opts);\n                ignorable = $.inArray(k, opts.ignorables) !== -1;\n            },\n            keypressEvent: function(e, checkval, writeOut, strict, ndx) {\n                var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;\n                if (checkval !== true && (!(e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable))) {\n                    if (k === Inputmask.keyCode.ENTER && undoValue !== getBuffer().join(\"\")) {\n                        undoValue = getBuffer().join(\"\");\n                        setTimeout(function() {\n                            $input.trigger(\"change\");\n                        }, 0);\n                    }\n                    return true;\n                } else {\n                    if (k) {\n                        if (k === 46 && e.shiftKey === false && opts.radixPoint !== \"\") k = opts.radixPoint.charCodeAt(0);\n                        var pos = checkval ? {\n                            begin: ndx,\n                            end: ndx\n                        } : caret(input), forwardPosition, c = String.fromCharCode(k), offset = 0;\n                        if (opts._radixDance && opts.numericInput) {\n                            var caretPos = getBuffer().indexOf(opts.radixPoint.charAt(0)) + 1;\n                            if (pos.begin <= caretPos) {\n                                if (k === opts.radixPoint.charCodeAt(0)) offset = 1;\n                                pos.begin -= 1;\n                                pos.end -= 1;\n                            }\n                        }\n                        getMaskSet().writeOutBuffer = true;\n                        var valResult = isValid(pos, c, strict);\n                        if (valResult !== false) {\n                            resetMaskSet(true);\n                            forwardPosition = valResult.caret !== undefined ? valResult.caret : seekNext(valResult.pos.begin ? valResult.pos.begin : valResult.pos);\n                            getMaskSet().p = forwardPosition;\n                        }\n                        forwardPosition = (opts.numericInput && valResult.caret === undefined ? seekPrevious(forwardPosition) : forwardPosition) + offset;\n                        if (writeOut !== false) {\n                            setTimeout(function() {\n                                opts.onKeyValidation.call(input, k, valResult, opts);\n                            }, 0);\n                            if (getMaskSet().writeOutBuffer && valResult !== false) {\n                                var buffer = getBuffer();\n                                writeBuffer(input, buffer, forwardPosition, e, checkval !== true);\n                            }\n                        }\n                        e.preventDefault();\n                        if (checkval) {\n                            if (valResult !== false) valResult.forwardPosition = forwardPosition;\n                            return valResult;\n                        }\n                    }\n                }\n            },\n            pasteEvent: function(e) {\n                var input = this, ev = e.originalEvent || e, $input = $(input), inputValue = input.inputmask._valueGet(true), caretPos = caret(input), tempValue;\n                if (isRTL) {\n                    tempValue = caretPos.end;\n                    caretPos.end = caretPos.begin;\n                    caretPos.begin = tempValue;\n                }\n                var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);\n                if (valueBeforeCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join(\"\")) valueBeforeCaret = \"\";\n                if (valueAfterCaret === (isRTL ? getBufferTemplate().reverse() : getBufferTemplate()).slice(caretPos.end).join(\"\")) valueAfterCaret = \"\";\n                if (window.clipboardData && window.clipboardData.getData) {\n                    inputValue = valueBeforeCaret + window.clipboardData.getData(\"Text\") + valueAfterCaret;\n                } else if (ev.clipboardData && ev.clipboardData.getData) {\n                    inputValue = valueBeforeCaret + ev.clipboardData.getData(\"text/plain\") + valueAfterCaret;\n                } else return true;\n                var pasteValue = inputValue;\n                if ($.isFunction(opts.onBeforePaste)) {\n                    pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts);\n                    if (pasteValue === false) {\n                        return e.preventDefault();\n                    }\n                    if (!pasteValue) {\n                        pasteValue = inputValue;\n                    }\n                }\n                checkVal(input, false, false, pasteValue.toString().split(\"\"));\n                writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join(\"\"));\n                return e.preventDefault();\n            },\n            inputFallBackEvent: function(e) {\n                function radixPointHandler(input, inputValue, caretPos) {\n                    if (inputValue.charAt(caretPos.begin - 1) === \".\" && opts.radixPoint !== \"\") {\n                        inputValue = inputValue.split(\"\");\n                        inputValue[caretPos.begin - 1] = opts.radixPoint.charAt(0);\n                        inputValue = inputValue.join(\"\");\n                    }\n                    return inputValue;\n                }\n                function ieMobileHandler(input, inputValue, caretPos) {\n                    if (iemobile) {\n                        var inputChar = inputValue.replace(getBuffer().join(\"\"), \"\");\n                        if (inputChar.length === 1) {\n                            var iv = inputValue.split(\"\");\n                            iv.splice(caretPos.begin, 0, inputChar);\n                            inputValue = iv.join(\"\");\n                        }\n                    }\n                    return inputValue;\n                }\n                var input = this, inputValue = input.inputmask._valueGet();\n                if (getBuffer().join(\"\") !== inputValue) {\n                    var caretPos = caret(input);\n                    inputValue = radixPointHandler(input, inputValue, caretPos);\n                    inputValue = ieMobileHandler(input, inputValue, caretPos);\n                    if (getBuffer().join(\"\") !== inputValue) {\n                        var buffer = getBuffer().join(\"\"), offset = !opts.numericInput && inputValue.length > buffer.length ? -1 : 0, frontPart = inputValue.substr(0, caretPos.begin), backPart = inputValue.substr(caretPos.begin), frontBufferPart = buffer.substr(0, caretPos.begin + offset), backBufferPart = buffer.substr(caretPos.begin + offset);\n                        var selection = caretPos, entries = \"\", isEntry = false;\n                        if (frontPart !== frontBufferPart) {\n                            var fpl = (isEntry = frontPart.length >= frontBufferPart.length) ? frontPart.length : frontBufferPart.length, i;\n                            for (i = 0; frontPart.charAt(i) === frontBufferPart.charAt(i) && i < fpl; i++) ;\n                            if (isEntry) {\n                                selection.begin = i - offset;\n                                entries += frontPart.slice(i, selection.end);\n                            }\n                        }\n                        if (backPart !== backBufferPart) {\n                            if (backPart.length > backBufferPart.length) {\n                                entries += backPart.slice(0, 1);\n                            } else {\n                                if (backPart.length < backBufferPart.length) {\n                                    selection.end += backBufferPart.length - backPart.length;\n                                    if (!isEntry && opts.radixPoint !== \"\" && backPart === \"\" && frontPart.charAt(selection.begin + offset - 1) === opts.radixPoint) {\n                                        selection.begin--;\n                                        entries = opts.radixPoint;\n                                    }\n                                }\n                            }\n                        }\n                        writeBuffer(input, getBuffer(), {\n                            begin: selection.begin + offset,\n                            end: selection.end + offset\n                        });\n                        if (entries.length > 0) {\n                            $.each(entries.split(\"\"), function(ndx, entry) {\n                                var keypress = new $.Event(\"keypress\");\n                                keypress.which = entry.charCodeAt(0);\n                                ignorable = false;\n                                EventHandlers.keypressEvent.call(input, keypress);\n                            });\n                        } else {\n                            if (selection.begin === selection.end - 1) {\n                                selection.begin = seekPrevious(selection.begin + 1);\n                                if (selection.begin === selection.end - 1) {\n                                    caret(input, selection.begin);\n                                } else {\n                                    caret(input, selection.begin, selection.end);\n                                }\n                            }\n                            var keydown = new $.Event(\"keydown\");\n                            keydown.keyCode = opts.numericInput ? Inputmask.keyCode.BACKSPACE : Inputmask.keyCode.DELETE;\n                            EventHandlers.keydownEvent.call(input, keydown);\n                        }\n                        e.preventDefault();\n                    }\n                }\n            },\n            beforeInputEvent: function(e) {\n                if (e.cancelable) {\n                    var input = this;\n                    switch (e.inputType) {\n                      case \"insertText\":\n                        $.each(e.data.split(\"\"), function(ndx, entry) {\n                            var keypress = new $.Event(\"keypress\");\n                            keypress.which = entry.charCodeAt(0);\n                            ignorable = false;\n                            EventHandlers.keypressEvent.call(input, keypress);\n                        });\n                        return e.preventDefault();\n\n                      case \"deleteContentBackward\":\n                        var keydown = new $.Event(\"keydown\");\n                        keydown.keyCode = Inputmask.keyCode.BACKSPACE;\n                        EventHandlers.keydownEvent.call(input, keydown);\n                        return e.preventDefault();\n\n                      case \"deleteContentForward\":\n                        var keydown = new $.Event(\"keydown\");\n                        keydown.keyCode = Inputmask.keyCode.DELETE;\n                        EventHandlers.keydownEvent.call(input, keydown);\n                        return e.preventDefault();\n                    }\n                }\n            },\n            setValueEvent: function(e) {\n                this.inputmask.refreshValue = false;\n                var input = this, value = e && e.detail ? e.detail[0] : arguments[1], value = value || input.inputmask._valueGet(true);\n                if ($.isFunction(opts.onBeforeMask)) value = opts.onBeforeMask.call(inputmask, value, opts) || value;\n                value = value.toString().split(\"\");\n                checkVal(input, true, false, value);\n                undoValue = getBuffer().join(\"\");\n                if ((opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join(\"\")) {\n                    input.inputmask._valueSet(\"\");\n                }\n            },\n            focusEvent: function(e) {\n                var input = this, nptValue = input.inputmask._valueGet();\n                if (opts.showMaskOnFocus) {\n                    if (nptValue !== getBuffer().join(\"\")) {\n                        writeBuffer(input, getBuffer(), seekNext(getLastValidPosition()));\n                    } else if (mouseEnter === false) {\n                        caret(input, seekNext(getLastValidPosition()));\n                    }\n                }\n                if (opts.positionCaretOnTab === true && mouseEnter === false) {\n                    EventHandlers.clickEvent.apply(input, [ e, true ]);\n                }\n                undoValue = getBuffer().join(\"\");\n            },\n            mouseleaveEvent: function(e) {\n                var input = this;\n                mouseEnter = false;\n                if (opts.clearMaskOnLostFocus && document.activeElement !== input) {\n                    HandleNativePlaceholder(input, originalPlaceholder);\n                }\n            },\n            clickEvent: function(e, tabbed) {\n                function doRadixFocus(clickPos) {\n                    if (opts.radixPoint !== \"\") {\n                        var vps = getMaskSet().validPositions;\n                        if (vps[clickPos] === undefined || vps[clickPos].input === getPlaceholder(clickPos)) {\n                            if (clickPos < seekNext(-1)) return true;\n                            var radixPos = $.inArray(opts.radixPoint, getBuffer());\n                            if (radixPos !== -1) {\n                                for (var vp in vps) {\n                                    if (radixPos < vp && vps[vp].input !== getPlaceholder(vp)) {\n                                        return false;\n                                    }\n                                }\n                                return true;\n                            }\n                        }\n                    }\n                    return false;\n                }\n                var input = this;\n                setTimeout(function() {\n                    if (document.activeElement === input) {\n                        var selectedCaret = caret(input);\n                        if (tabbed) {\n                            if (isRTL) {\n                                selectedCaret.end = selectedCaret.begin;\n                            } else {\n                                selectedCaret.begin = selectedCaret.end;\n                            }\n                        }\n                        if (selectedCaret.begin === selectedCaret.end) {\n                            switch (opts.positionCaretOnClick) {\n                              case \"none\":\n                                break;\n\n                              case \"select\":\n                                caret(input, 0, getBuffer().length);\n                                break;\n\n                              case \"ignore\":\n                                caret(input, seekNext(getLastValidPosition()));\n                                break;\n\n                              case \"radixFocus\":\n                                if (doRadixFocus(selectedCaret.begin)) {\n                                    var radixPos = getBuffer().join(\"\").indexOf(opts.radixPoint);\n                                    caret(input, opts.numericInput ? seekNext(radixPos) : radixPos);\n                                    break;\n                                }\n\n                              default:\n                                var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, true), lastPosition = seekNext(lvclickPosition);\n                                if (clickPosition < lastPosition) {\n                                    caret(input, !isMask(clickPosition, true) && !isMask(clickPosition - 1, true) ? seekNext(clickPosition) : clickPosition);\n                                } else {\n                                    var lvp = getMaskSet().validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : undefined, lvp), placeholder = getPlaceholder(lastPosition, tt.match);\n                                    if (placeholder !== \"\" && getBuffer()[lastPosition] !== placeholder && tt.match.optionalQuantifier !== true && tt.match.newBlockMarker !== true || !isMask(lastPosition, opts.keepStatic) && tt.match.def === placeholder) {\n                                        var newPos = seekNext(lastPosition);\n                                        if (clickPosition >= newPos || clickPosition === lastPosition) {\n                                            lastPosition = newPos;\n                                        }\n                                    }\n                                    caret(input, lastPosition);\n                                }\n                                break;\n                            }\n                        }\n                    }\n                }, 0);\n            },\n            cutEvent: function(e) {\n                var input = this, $input = $(input), pos = caret(input), ev = e.originalEvent || e;\n                var clipboardData = window.clipboardData || ev.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);\n                clipboardData.setData(\"text\", isRTL ? clipData.reverse().join(\"\") : clipData.join(\"\"));\n                if (document.execCommand) document.execCommand(\"copy\");\n                handleRemove(input, Inputmask.keyCode.DELETE, pos);\n                writeBuffer(input, getBuffer(), getMaskSet().p, e, undoValue !== getBuffer().join(\"\"));\n            },\n            blurEvent: function(e) {\n                var $input = $(this), input = this;\n                if (input.inputmask) {\n                    HandleNativePlaceholder(input, originalPlaceholder);\n                    var nptValue = input.inputmask._valueGet(), buffer = getBuffer().slice();\n                    if (nptValue !== \"\" || colorMask !== undefined) {\n                        if (opts.clearMaskOnLostFocus) {\n                            if (getLastValidPosition() === -1 && nptValue === getBufferTemplate().join(\"\")) {\n                                buffer = [];\n                            } else {\n                                clearOptionalTail(buffer);\n                            }\n                        }\n                        if (isComplete(buffer) === false) {\n                            setTimeout(function() {\n                                $input.trigger(\"incomplete\");\n                            }, 0);\n                            if (opts.clearIncomplete) {\n                                resetMaskSet();\n                                if (opts.clearMaskOnLostFocus) {\n                                    buffer = [];\n                                } else {\n                                    buffer = getBufferTemplate().slice();\n                                }\n                            }\n                        }\n                        writeBuffer(input, buffer, undefined, e);\n                    }\n                    if (undoValue !== getBuffer().join(\"\")) {\n                        undoValue = buffer.join(\"\");\n                        $input.trigger(\"change\");\n                    }\n                }\n            },\n            mouseenterEvent: function(e) {\n                var input = this;\n                mouseEnter = true;\n                if (document.activeElement !== input && opts.showMaskOnHover) {\n                    HandleNativePlaceholder(input, (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\"));\n                }\n            },\n            submitEvent: function(e) {\n                if (undoValue !== getBuffer().join(\"\")) {\n                    $el.trigger(\"change\");\n                }\n                if (opts.clearMaskOnLostFocus && getLastValidPosition() === -1 && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join(\"\")) {\n                    el.inputmask._valueSet(\"\");\n                }\n                if (opts.clearIncomplete && isComplete(getBuffer()) === false) {\n                    el.inputmask._valueSet(\"\");\n                }\n                if (opts.removeMaskOnSubmit) {\n                    el.inputmask._valueSet(el.inputmask.unmaskedvalue(), true);\n                    setTimeout(function() {\n                        writeBuffer(el, getBuffer());\n                    }, 0);\n                }\n            },\n            resetEvent: function(e) {\n                el.inputmask.refreshValue = true;\n                setTimeout(function() {\n                    $el.trigger(\"setvalue\");\n                }, 0);\n            }\n        };\n        function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {\n            var inputmask = this || input.inputmask, inputValue = nptvl.slice(), charCodes = \"\", initialNdx = -1, result = undefined;\n            function isTemplateMatch(ndx, charCodes) {\n                var charCodeNdx = getMaskTemplate(true, 0, false).slice(ndx, seekNext(ndx)).join(\"\").replace(/'/g, \"\").indexOf(charCodes);\n                return charCodeNdx !== -1 && !isMask(ndx) && (getTest(ndx).match.nativeDef === charCodes.charAt(0) || getTest(ndx).match.fn === null && getTest(ndx).match.nativeDef === \"'\" + charCodes.charAt(0) || getTest(ndx).match.nativeDef === \" \" && (getTest(ndx + 1).match.nativeDef === charCodes.charAt(0) || getTest(ndx + 1).match.fn === null && getTest(ndx + 1).match.nativeDef === \"'\" + charCodes.charAt(0)));\n            }\n            resetMaskSet();\n            if (!strict && opts.autoUnmask !== true) {\n                var staticInput = getBufferTemplate().slice(0, seekNext(-1)).join(\"\"), matches = inputValue.join(\"\").match(new RegExp(\"^\" + Inputmask.escapeRegex(staticInput), \"g\"));\n                if (matches && matches.length > 0) {\n                    inputValue.splice(0, matches.length * staticInput.length);\n                    initialNdx = seekNext(initialNdx);\n                }\n            } else {\n                initialNdx = seekNext(initialNdx);\n            }\n            if (initialNdx === -1) {\n                getMaskSet().p = seekNext(initialNdx);\n                initialNdx = 0;\n            } else getMaskSet().p = initialNdx;\n            inputmask.caretPos = {\n                begin: initialNdx\n            };\n            $.each(inputValue, function(ndx, charCode) {\n                if (charCode !== undefined) {\n                    if (getMaskSet().validPositions[ndx] === undefined && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, true) && isValid(ndx, inputValue[ndx], true, undefined, undefined, true) === false) {\n                        getMaskSet().p++;\n                    } else {\n                        var keypress = new $.Event(\"_checkval\");\n                        keypress.which = charCode.charCodeAt(0);\n                        charCodes += charCode;\n                        var lvp = getLastValidPosition(undefined, true);\n                        if (!isTemplateMatch(initialNdx, charCodes)) {\n                            result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, inputmask.caretPos.begin);\n                            if (result) {\n                                initialNdx = inputmask.caretPos.begin + 1;\n                                charCodes = \"\";\n                            }\n                        } else {\n                            result = EventHandlers.keypressEvent.call(input, keypress, true, false, strict, lvp + 1);\n                        }\n                        if (result) {\n                            writeBuffer(undefined, getBuffer(), result.forwardPosition, keypress, false);\n                            inputmask.caretPos = {\n                                begin: result.forwardPosition,\n                                end: result.forwardPosition\n                            };\n                        }\n                    }\n                }\n            });\n            if (writeOut) writeBuffer(input, getBuffer(), result ? result.forwardPosition : undefined, initiatingEvent || new $.Event(\"checkval\"), initiatingEvent && initiatingEvent.type === \"input\");\n        }\n        function unmaskedvalue(input) {\n            if (input) {\n                if (input.inputmask === undefined) {\n                    return input.value;\n                }\n                if (input.inputmask && input.inputmask.refreshValue) {\n                    EventHandlers.setValueEvent.call(input);\n                }\n            }\n            var umValue = [], vps = getMaskSet().validPositions;\n            for (var pndx in vps) {\n                if (vps[pndx].match && vps[pndx].match.fn != null) {\n                    umValue.push(vps[pndx].input);\n                }\n            }\n            var unmaskedValue = umValue.length === 0 ? \"\" : (isRTL ? umValue.reverse() : umValue).join(\"\");\n            if ($.isFunction(opts.onUnMask)) {\n                var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\");\n                unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts);\n            }\n            return unmaskedValue;\n        }\n        function caret(input, begin, end, notranslate) {\n            function translatePosition(pos) {\n                if (isRTL && typeof pos === \"number\" && (!opts.greedy || opts.placeholder !== \"\") && el) {\n                    pos = el.inputmask._valueGet().length - pos;\n                }\n                return pos;\n            }\n            var range;\n            if (begin !== undefined) {\n                if ($.isArray(begin)) {\n                    end = isRTL ? begin[0] : begin[1];\n                    begin = isRTL ? begin[1] : begin[0];\n                }\n                if (begin.begin !== undefined) {\n                    end = isRTL ? begin.begin : begin.end;\n                    begin = isRTL ? begin.end : begin.begin;\n                }\n                if (typeof begin === \"number\") {\n                    begin = notranslate ? begin : translatePosition(begin);\n                    end = notranslate ? end : translatePosition(end);\n                    end = typeof end == \"number\" ? end : begin;\n                    var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;\n                    input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0;\n                    input.inputmask.caretPos = {\n                        begin: begin,\n                        end: end\n                    };\n                    if (input === document.activeElement) {\n                        if (\"selectionStart\" in input) {\n                            input.selectionStart = begin;\n                            input.selectionEnd = end;\n                        } else if (window.getSelection) {\n                            range = document.createRange();\n                            if (input.firstChild === undefined || input.firstChild === null) {\n                                var textNode = document.createTextNode(\"\");\n                                input.appendChild(textNode);\n                            }\n                            range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length);\n                            range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length);\n                            range.collapse(true);\n                            var sel = window.getSelection();\n                            sel.removeAllRanges();\n                            sel.addRange(range);\n                        } else if (input.createTextRange) {\n                            range = input.createTextRange();\n                            range.collapse(true);\n                            range.moveEnd(\"character\", end);\n                            range.moveStart(\"character\", begin);\n                            range.select();\n                        }\n                        renderColorMask(input, {\n                            begin: begin,\n                            end: end\n                        });\n                    }\n                }\n            } else {\n                if (\"selectionStart\" in input) {\n                    begin = input.selectionStart;\n                    end = input.selectionEnd;\n                } else if (window.getSelection) {\n                    range = window.getSelection().getRangeAt(0);\n                    if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) {\n                        begin = range.startOffset;\n                        end = range.endOffset;\n                    }\n                } else if (document.selection && document.selection.createRange) {\n                    range = document.selection.createRange();\n                    begin = 0 - range.duplicate().moveStart(\"character\", -input.inputmask._valueGet().length);\n                    end = begin + range.text.length;\n                }\n                return {\n                    begin: notranslate ? begin : translatePosition(begin),\n                    end: notranslate ? end : translatePosition(end)\n                };\n            }\n        }\n        function determineLastRequiredPosition(returnDefinition) {\n            var buffer = getMaskTemplate(true, getLastValidPosition(), true, true), bl = buffer.length, pos, lvp = getLastValidPosition(), positions = {}, lvTest = getMaskSet().validPositions[lvp], ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined, testPos;\n            for (pos = lvp + 1; pos < buffer.length; pos++) {\n                testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);\n                ndxIntlzr = testPos.locator.slice();\n                positions[pos] = $.extend(true, {}, testPos);\n            }\n            var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined;\n            for (pos = bl - 1; pos > lvp; pos--) {\n                testPos = positions[pos];\n                if ((testPos.match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && testPos.match.fn != null || testPos.match.fn === null && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAlt.toString().split(\",\")) && getTests(pos)[0].def !== \"\")) && buffer[pos] === getPlaceholder(pos, testPos.match)) {\n                    bl--;\n                } else break;\n            }\n            return returnDefinition ? {\n                l: bl,\n                def: positions[bl] ? positions[bl].match : undefined\n            } : bl;\n        }\n        function clearOptionalTail(buffer) {\n            buffer.length = 0;\n            var template = getMaskTemplate(true, 0, true, undefined, true), lmnt, validPos;\n            while (lmnt = template.shift(), lmnt !== undefined) buffer.push(lmnt);\n            return buffer;\n        }\n        function isComplete(buffer) {\n            if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);\n            if (opts.repeat === \"*\") return undefined;\n            var complete = false, lrp = determineLastRequiredPosition(true), aml = seekPrevious(lrp.l);\n            if (lrp.def === undefined || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {\n                complete = true;\n                for (var i = 0; i <= aml; i++) {\n                    var test = getTestTemplate(i).match;\n                    if (test.fn !== null && getMaskSet().validPositions[i] === undefined && test.optionality !== true && test.optionalQuantifier !== true || test.fn === null && buffer[i] !== getPlaceholder(i, test)) {\n                        complete = false;\n                        break;\n                    }\n                }\n            }\n            return complete;\n        }\n        function handleRemove(input, k, pos, strict, fromIsValid) {\n            if (opts.numericInput || isRTL) {\n                if (k === Inputmask.keyCode.BACKSPACE) {\n                    k = Inputmask.keyCode.DELETE;\n                } else if (k === Inputmask.keyCode.DELETE) {\n                    k = Inputmask.keyCode.BACKSPACE;\n                }\n                if (isRTL) {\n                    var pend = pos.end;\n                    pos.end = pos.begin;\n                    pos.begin = pend;\n                }\n            }\n            if (k === Inputmask.keyCode.BACKSPACE && pos.end - pos.begin < 1) {\n                pos.begin = seekPrevious(pos.begin);\n                if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) {\n                    pos.begin--;\n                }\n            } else if (k === Inputmask.keyCode.DELETE && pos.begin === pos.end) {\n                pos.end = isMask(pos.end, true) && (getMaskSet().validPositions[pos.end] && getMaskSet().validPositions[pos.end].input !== opts.radixPoint) ? pos.end + 1 : seekNext(pos.end) + 1;\n                if (getMaskSet().validPositions[pos.begin] !== undefined && getMaskSet().validPositions[pos.begin].input === opts.groupSeparator) {\n                    pos.end++;\n                }\n            }\n            revalidateMask(pos);\n            if (strict !== true && opts.keepStatic !== false || opts.regex !== null) {\n                var result = alternate(true);\n                if (result) {\n                    var newPos = result.caret !== undefined ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, true);\n                    if (k !== Inputmask.keyCode.DELETE || pos.begin > newPos) {\n                        pos.begin == newPos;\n                    }\n                }\n            }\n            var lvp = getLastValidPosition(pos.begin, true);\n            if (lvp < pos.begin || pos.begin === -1) {\n                getMaskSet().p = seekNext(lvp);\n            } else if (strict !== true) {\n                getMaskSet().p = pos.begin;\n                if (fromIsValid !== true) {\n                    while (getMaskSet().p < lvp && getMaskSet().validPositions[getMaskSet().p] === undefined) {\n                        getMaskSet().p++;\n                    }\n                }\n            }\n        }\n        function initializeColorMask(input) {\n            var computedStyle = (input.ownerDocument.defaultView || window).getComputedStyle(input, null);\n            function findCaretPos(clientx) {\n                var e = document.createElement(\"span\"), caretPos;\n                for (var style in computedStyle) {\n                    if (isNaN(style) && style.indexOf(\"font\") !== -1) {\n                        e.style[style] = computedStyle[style];\n                    }\n                }\n                e.style.textTransform = computedStyle.textTransform;\n                e.style.letterSpacing = computedStyle.letterSpacing;\n                e.style.position = \"absolute\";\n                e.style.height = \"auto\";\n                e.style.width = \"auto\";\n                e.style.visibility = \"hidden\";\n                e.style.whiteSpace = \"nowrap\";\n                document.body.appendChild(e);\n                var inputText = input.inputmask._valueGet(), previousWidth = 0, itl;\n                for (caretPos = 0, itl = inputText.length; caretPos <= itl; caretPos++) {\n                    e.innerHTML += inputText.charAt(caretPos) || \"_\";\n                    if (e.offsetWidth >= clientx) {\n                        var offset1 = clientx - previousWidth;\n                        var offset2 = e.offsetWidth - clientx;\n                        e.innerHTML = inputText.charAt(caretPos);\n                        offset1 -= e.offsetWidth / 3;\n                        caretPos = offset1 < offset2 ? caretPos - 1 : caretPos;\n                        break;\n                    }\n                    previousWidth = e.offsetWidth;\n                }\n                document.body.removeChild(e);\n                return caretPos;\n            }\n            var template = document.createElement(\"div\");\n            template.style.width = computedStyle.width;\n            template.style.textAlign = computedStyle.textAlign;\n            colorMask = document.createElement(\"div\");\n            input.inputmask.colorMask = colorMask;\n            colorMask.className = \"im-colormask\";\n            input.parentNode.insertBefore(colorMask, input);\n            input.parentNode.removeChild(input);\n            colorMask.appendChild(input);\n            colorMask.appendChild(template);\n            input.style.left = template.offsetLeft + \"px\";\n            $(colorMask).on(\"mouseleave\", function(e) {\n                return EventHandlers.mouseleaveEvent.call(input, [ e ]);\n            });\n            $(colorMask).on(\"mouseenter\", function(e) {\n                return EventHandlers.mouseenterEvent.call(input, [ e ]);\n            });\n            $(colorMask).on(\"click\", function(e) {\n                caret(input, findCaretPos(e.clientX));\n                return EventHandlers.clickEvent.call(input, [ e ]);\n            });\n        }\n        function renderColorMask(input, caretPos, clear) {\n            var maskTemplate = [], isStatic = false, test, testPos, ndxIntlzr, pos = 0;\n            function setEntry(entry) {\n                if (entry === undefined) entry = \"\";\n                if (!isStatic && (test.fn === null || testPos.input === undefined)) {\n                    isStatic = true;\n                    maskTemplate.push(\"<span class='im-static'>\" + entry);\n                } else if (isStatic && (test.fn !== null && testPos.input !== undefined || test.def === \"\")) {\n                    isStatic = false;\n                    var mtl = maskTemplate.length;\n                    maskTemplate[mtl - 1] = maskTemplate[mtl - 1] + \"</span>\";\n                    maskTemplate.push(entry);\n                } else maskTemplate.push(entry);\n            }\n            function setCaret() {\n                if (document.activeElement === input) {\n                    maskTemplate.splice(caretPos.begin, 0, caretPos.begin === caretPos.end || caretPos.end > getMaskSet().maskLength ? '<mark class=\"im-caret\" style=\"border-right-width: 1px;border-right-style: solid;\">' : '<mark class=\"im-caret-select\">');\n                    maskTemplate.splice(caretPos.end + 1, 0, \"</mark>\");\n                }\n            }\n            if (colorMask !== undefined) {\n                var buffer = getBuffer();\n                if (caretPos === undefined) {\n                    caretPos = caret(input);\n                } else if (caretPos.begin === undefined) {\n                    caretPos = {\n                        begin: caretPos,\n                        end: caretPos\n                    };\n                }\n                if (clear !== true) {\n                    var lvp = getLastValidPosition();\n                    do {\n                        if (getMaskSet().validPositions[pos]) {\n                            testPos = getMaskSet().validPositions[pos];\n                            test = testPos.match;\n                            ndxIntlzr = testPos.locator.slice();\n                            setEntry(buffer[pos]);\n                        } else {\n                            testPos = getTestTemplate(pos, ndxIntlzr, pos - 1);\n                            test = testPos.match;\n                            ndxIntlzr = testPos.locator.slice();\n                            if (opts.jitMasking === false || pos < lvp || typeof opts.jitMasking === \"number\" && isFinite(opts.jitMasking) && opts.jitMasking > pos) {\n                                setEntry(getPlaceholder(pos, test));\n                            } else isStatic = false;\n                        }\n                        pos++;\n                    } while ((maxLength === undefined || pos < maxLength) && (test.fn !== null || test.def !== \"\") || lvp > pos || isStatic);\n                    if (isStatic) setEntry();\n                    setCaret();\n                }\n                var template = colorMask.getElementsByTagName(\"div\")[0];\n                template.innerHTML = maskTemplate.join(\"\");\n                input.inputmask.positionColorMask(input, template);\n            }\n        }\n        function mask(elem) {\n            function isElementTypeSupported(input, opts) {\n                function patchValueProperty(npt) {\n                    var valueGet;\n                    var valueSet;\n                    function patchValhook(type) {\n                        if ($.valHooks && ($.valHooks[type] === undefined || $.valHooks[type].inputmaskpatch !== true)) {\n                            var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {\n                                return elem.value;\n                            };\n                            var valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {\n                                elem.value = value;\n                                return elem;\n                            };\n                            $.valHooks[type] = {\n                                get: function(elem) {\n                                    if (elem.inputmask) {\n                                        if (elem.inputmask.opts.autoUnmask) {\n                                            return elem.inputmask.unmaskedvalue();\n                                        } else {\n                                            var result = valhookGet(elem);\n                                            return getLastValidPosition(undefined, undefined, elem.inputmask.maskset.validPositions) !== -1 || opts.nullable !== true ? result : \"\";\n                                        }\n                                    } else return valhookGet(elem);\n                                },\n                                set: function(elem, value) {\n                                    var $elem = $(elem), result;\n                                    result = valhookSet(elem, value);\n                                    if (elem.inputmask) {\n                                        $elem.trigger(\"setvalue\", [ value ]);\n                                    }\n                                    return result;\n                                },\n                                inputmaskpatch: true\n                            };\n                        }\n                    }\n                    function getter() {\n                        if (this.inputmask) {\n                            return this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : getLastValidPosition() !== -1 || opts.nullable !== true ? document.activeElement === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join(\"\") : valueGet.call(this) : \"\";\n                        } else return valueGet.call(this);\n                    }\n                    function setter(value) {\n                        valueSet.call(this, value);\n                        if (this.inputmask) {\n                            $(this).trigger(\"setvalue\", [ value ]);\n                        }\n                    }\n                    function installNativeValueSetFallback(npt) {\n                        EventRuler.on(npt, \"mouseenter\", function(event) {\n                            var $input = $(this), input = this, value = input.inputmask._valueGet();\n                            if (value !== getBuffer().join(\"\")) {\n                                $input.trigger(\"setvalue\");\n                            }\n                        });\n                    }\n                    if (!npt.inputmask.__valueGet) {\n                        if (opts.noValuePatching !== true) {\n                            if (Object.getOwnPropertyDescriptor) {\n                                if (typeof Object.getPrototypeOf !== \"function\") {\n                                    Object.getPrototypeOf = typeof \"test\".__proto__ === \"object\" ? function(object) {\n                                        return object.__proto__;\n                                    } : function(object) {\n                                        return object.constructor.prototype;\n                                    };\n                                }\n                                var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), \"value\") : undefined;\n                                if (valueProperty && valueProperty.get && valueProperty.set) {\n                                    valueGet = valueProperty.get;\n                                    valueSet = valueProperty.set;\n                                    Object.defineProperty(npt, \"value\", {\n                                        get: getter,\n                                        set: setter,\n                                        configurable: true\n                                    });\n                                } else if (npt.tagName !== \"INPUT\") {\n                                    valueGet = function() {\n                                        return this.textContent;\n                                    };\n                                    valueSet = function(value) {\n                                        this.textContent = value;\n                                    };\n                                    Object.defineProperty(npt, \"value\", {\n                                        get: getter,\n                                        set: setter,\n                                        configurable: true\n                                    });\n                                }\n                            } else if (document.__lookupGetter__ && npt.__lookupGetter__(\"value\")) {\n                                valueGet = npt.__lookupGetter__(\"value\");\n                                valueSet = npt.__lookupSetter__(\"value\");\n                                npt.__defineGetter__(\"value\", getter);\n                                npt.__defineSetter__(\"value\", setter);\n                            }\n                            npt.inputmask.__valueGet = valueGet;\n                            npt.inputmask.__valueSet = valueSet;\n                        }\n                        npt.inputmask._valueGet = function(overruleRTL) {\n                            return isRTL && overruleRTL !== true ? valueGet.call(this.el).split(\"\").reverse().join(\"\") : valueGet.call(this.el);\n                        };\n                        npt.inputmask._valueSet = function(value, overruleRTL) {\n                            valueSet.call(this.el, value === null || value === undefined ? \"\" : overruleRTL !== true && isRTL ? value.split(\"\").reverse().join(\"\") : value);\n                        };\n                        if (valueGet === undefined) {\n                            valueGet = function() {\n                                return this.value;\n                            };\n                            valueSet = function(value) {\n                                this.value = value;\n                            };\n                            patchValhook(npt.type);\n                            installNativeValueSetFallback(npt);\n                        }\n                    }\n                }\n                var elementType = input.getAttribute(\"type\");\n                var isSupported = input.tagName === \"INPUT\" && $.inArray(elementType, opts.supportsInputType) !== -1 || input.isContentEditable || input.tagName === \"TEXTAREA\";\n                if (!isSupported) {\n                    if (input.tagName === \"INPUT\") {\n                        var el = document.createElement(\"input\");\n                        el.setAttribute(\"type\", elementType);\n                        isSupported = el.type === \"text\";\n                        el = null;\n                    } else isSupported = \"partial\";\n                }\n                if (isSupported !== false) {\n                    patchValueProperty(input);\n                } else input.inputmask = undefined;\n                return isSupported;\n            }\n            EventRuler.off(elem);\n            var isSupported = isElementTypeSupported(elem, opts);\n            if (isSupported !== false) {\n                el = elem;\n                $el = $(el);\n                originalPlaceholder = el.placeholder;\n                maxLength = el !== undefined ? el.maxLength : undefined;\n                if (maxLength === -1) maxLength = undefined;\n                if (opts.colorMask === true) {\n                    initializeColorMask(el);\n                }\n                if (mobile) {\n                    if (\"inputMode\" in el) {\n                        el.inputmode = opts.inputmode;\n                        el.setAttribute(\"inputmode\", opts.inputmode);\n                    }\n                    if (opts.disablePredictiveText === true) {\n                        if (\"autocorrect\" in el) {\n                            el.autocorrect = false;\n                        } else {\n                            if (opts.colorMask !== true) {\n                                initializeColorMask(el);\n                            }\n                            el.type = \"password\";\n                        }\n                    }\n                }\n                if (isSupported === true) {\n                    el.setAttribute(\"im-insert\", opts.insertMode);\n                    EventRuler.on(el, \"submit\", EventHandlers.submitEvent);\n                    EventRuler.on(el, \"reset\", EventHandlers.resetEvent);\n                    EventRuler.on(el, \"blur\", EventHandlers.blurEvent);\n                    EventRuler.on(el, \"focus\", EventHandlers.focusEvent);\n                    if (opts.colorMask !== true) {\n                        EventRuler.on(el, \"click\", EventHandlers.clickEvent);\n                        EventRuler.on(el, \"mouseleave\", EventHandlers.mouseleaveEvent);\n                        EventRuler.on(el, \"mouseenter\", EventHandlers.mouseenterEvent);\n                    }\n                    EventRuler.on(el, \"paste\", EventHandlers.pasteEvent);\n                    EventRuler.on(el, \"cut\", EventHandlers.cutEvent);\n                    EventRuler.on(el, \"complete\", opts.oncomplete);\n                    EventRuler.on(el, \"incomplete\", opts.onincomplete);\n                    EventRuler.on(el, \"cleared\", opts.oncleared);\n                    if (!mobile && opts.inputEventOnly !== true) {\n                        EventRuler.on(el, \"keydown\", EventHandlers.keydownEvent);\n                        EventRuler.on(el, \"keypress\", EventHandlers.keypressEvent);\n                    } else {\n                        el.removeAttribute(\"maxLength\");\n                    }\n                    EventRuler.on(el, \"input\", EventHandlers.inputFallBackEvent);\n                    EventRuler.on(el, \"beforeinput\", EventHandlers.beforeInputEvent);\n                }\n                EventRuler.on(el, \"setvalue\", EventHandlers.setValueEvent);\n                undoValue = getBufferTemplate().join(\"\");\n                if (el.inputmask._valueGet(true) !== \"\" || opts.clearMaskOnLostFocus === false || document.activeElement === el) {\n                    var initialValue = $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, el.inputmask._valueGet(true), opts) || el.inputmask._valueGet(true) : el.inputmask._valueGet(true);\n                    if (initialValue !== \"\") checkVal(el, true, false, initialValue.split(\"\"));\n                    var buffer = getBuffer().slice();\n                    undoValue = buffer.join(\"\");\n                    if (isComplete(buffer) === false) {\n                        if (opts.clearIncomplete) {\n                            resetMaskSet();\n                        }\n                    }\n                    if (opts.clearMaskOnLostFocus && document.activeElement !== el) {\n                        if (getLastValidPosition() === -1) {\n                            buffer = [];\n                        } else {\n                            clearOptionalTail(buffer);\n                        }\n                    }\n                    if (opts.clearMaskOnLostFocus === false || opts.showMaskOnFocus && document.activeElement === el || el.inputmask._valueGet(true) !== \"\") writeBuffer(el, buffer);\n                    if (document.activeElement === el) {\n                        caret(el, seekNext(getLastValidPosition()));\n                    }\n                }\n            }\n        }\n        var valueBuffer;\n        if (actionObj !== undefined) {\n            switch (actionObj.action) {\n              case \"isComplete\":\n                el = actionObj.el;\n                return isComplete(getBuffer());\n\n              case \"unmaskedvalue\":\n                if (el === undefined || actionObj.value !== undefined) {\n                    valueBuffer = actionObj.value;\n                    valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer : valueBuffer).split(\"\");\n                    checkVal.call(this, undefined, false, false, valueBuffer);\n                    if ($.isFunction(opts.onBeforeWrite)) opts.onBeforeWrite.call(inputmask, undefined, getBuffer(), 0, opts);\n                }\n                return unmaskedvalue(el);\n\n              case \"mask\":\n                mask(el);\n                break;\n\n              case \"format\":\n                valueBuffer = ($.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value : actionObj.value).split(\"\");\n                checkVal.call(this, undefined, true, false, valueBuffer);\n                if (actionObj.metadata) {\n                    return {\n                        value: isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"),\n                        metadata: maskScope.call(this, {\n                            action: \"getmetadata\"\n                        }, maskset, opts)\n                    };\n                }\n                return isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n\n              case \"isValid\":\n                if (actionObj.value) {\n                    valueBuffer = actionObj.value.split(\"\");\n                    checkVal.call(this, undefined, true, true, valueBuffer);\n                } else {\n                    actionObj.value = getBuffer().join(\"\");\n                }\n                var buffer = getBuffer();\n                var rl = determineLastRequiredPosition(), lmib = buffer.length - 1;\n                for (;lmib > rl; lmib--) {\n                    if (isMask(lmib)) break;\n                }\n                buffer.splice(rl, lmib + 1 - rl);\n                return isComplete(buffer) && actionObj.value === getBuffer().join(\"\");\n\n              case \"getemptymask\":\n                return getBufferTemplate().join(\"\");\n\n              case \"remove\":\n                if (el && el.inputmask) {\n                    $.data(el, \"_inputmask_opts\", null);\n                    $el = $(el);\n                    el.inputmask._valueSet(opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(true));\n                    EventRuler.off(el);\n                    if (el.inputmask.colorMask) {\n                        colorMask = el.inputmask.colorMask;\n                        colorMask.removeChild(el);\n                        colorMask.parentNode.insertBefore(el, colorMask);\n                        colorMask.parentNode.removeChild(colorMask);\n                    }\n                    var valueProperty;\n                    if (Object.getOwnPropertyDescriptor && Object.getPrototypeOf) {\n                        valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), \"value\");\n                        if (valueProperty) {\n                            if (el.inputmask.__valueGet) {\n                                Object.defineProperty(el, \"value\", {\n                                    get: el.inputmask.__valueGet,\n                                    set: el.inputmask.__valueSet,\n                                    configurable: true\n                                });\n                            }\n                        }\n                    } else if (document.__lookupGetter__ && el.__lookupGetter__(\"value\")) {\n                        if (el.inputmask.__valueGet) {\n                            el.__defineGetter__(\"value\", el.inputmask.__valueGet);\n                            el.__defineSetter__(\"value\", el.inputmask.__valueSet);\n                        }\n                    }\n                    el.inputmask = undefined;\n                }\n                return el;\n                break;\n\n              case \"getmetadata\":\n                if ($.isArray(maskset.metadata)) {\n                    var maskTarget = getMaskTemplate(true, 0, false).join(\"\");\n                    $.each(maskset.metadata, function(ndx, mtdt) {\n                        if (mtdt.mask === maskTarget) {\n                            maskTarget = mtdt;\n                            return false;\n                        }\n                    });\n                    return maskTarget;\n                }\n                return maskset.metadata;\n            }\n        }\n    }\n    return Inputmask;\n});\n\n//# sourceURL=webpack:///./node_modules/inputmask/dist/inputmask/inputmask.js?");
153
154/***/ }),
155
vendor: 31,882 bytes, lines 156-166
156/***/ "./node_modules/inputmask/dist/inputmask/inputmask.numeric.extensions.js":
157/*!*******************************************************************************!*\
158  !*** ./node_modules/inputmask/dist/inputmask/inputmask.numeric.extensions.js ***!
159  \*******************************************************************************/
160/*! no static exports found */
161/***/ (function(module, exports, __webpack_require__) {
162
163eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n* inputmask.numeric.extensions.js\n* https://github.com/RobinHerbots/Inputmask\n* Copyright (c) 2010 - 2019 Robin Herbots\n* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n* Version: 4.0.9\n*/\n\n(function(factory) {\n    if (true) {\n        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(/*! ./inputmask */ \"./node_modules/inputmask/dist/inputmask/inputmask.js\") ], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n    } else {}\n})(function(Inputmask) {\n    var $ = Inputmask.dependencyLib;\n    function autoEscape(txt, opts) {\n        var escapedTxt = \"\";\n        for (var i = 0; i < txt.length; i++) {\n            if (Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker.start === txt.charAt(i) || opts.optionalmarker.end === txt.charAt(i) || opts.quantifiermarker.start === txt.charAt(i) || opts.quantifiermarker.end === txt.charAt(i) || opts.groupmarker.start === txt.charAt(i) || opts.groupmarker.end === txt.charAt(i) || opts.alternatormarker === txt.charAt(i)) {\n                escapedTxt += \"\\\\\" + txt.charAt(i);\n            } else escapedTxt += txt.charAt(i);\n        }\n        return escapedTxt;\n    }\n    function alignDigits(buffer, digits, opts) {\n        if (digits > 0) {\n            var radixPosition = $.inArray(opts.radixPoint, buffer);\n            if (radixPosition === -1) {\n                buffer.push(opts.radixPoint);\n                radixPosition = buffer.length - 1;\n            }\n            for (var i = 1; i <= digits; i++) {\n                buffer[radixPosition + i] = buffer[radixPosition + i] || \"0\";\n            }\n        }\n        return buffer;\n    }\n    Inputmask.extendAliases({\n        numeric: {\n            mask: function(opts) {\n                if (opts.repeat !== 0 && isNaN(opts.integerDigits)) {\n                    opts.integerDigits = opts.repeat;\n                }\n                opts.repeat = 0;\n                if (opts.groupSeparator === opts.radixPoint && opts.digits && opts.digits !== \"0\") {\n                    if (opts.radixPoint === \".\") {\n                        opts.groupSeparator = \",\";\n                    } else if (opts.radixPoint === \",\") {\n                        opts.groupSeparator = \".\";\n                    } else opts.groupSeparator = \"\";\n                }\n                if (opts.groupSeparator === \" \") {\n                    opts.skipOptionalPartCharacter = undefined;\n                }\n                opts.autoGroup = opts.autoGroup && opts.groupSeparator !== \"\";\n                if (opts.autoGroup) {\n                    if (typeof opts.groupSize == \"string\" && isFinite(opts.groupSize)) opts.groupSize = parseInt(opts.groupSize);\n                    if (isFinite(opts.integerDigits)) {\n                        var seps = Math.floor(opts.integerDigits / opts.groupSize);\n                        var mod = opts.integerDigits % opts.groupSize;\n                        opts.integerDigits = parseInt(opts.integerDigits) + (mod === 0 ? seps - 1 : seps);\n                        if (opts.integerDigits < 1) {\n                            opts.integerDigits = \"*\";\n                        }\n                    }\n                }\n                if (opts.placeholder.length > 1) {\n                    opts.placeholder = opts.placeholder.charAt(0);\n                }\n                if (opts.positionCaretOnClick === \"radixFocus\" && (opts.placeholder === \"\" && opts.integerOptional === false)) {\n                    opts.positionCaretOnClick = \"lvp\";\n                }\n                opts.definitions[\";\"] = opts.definitions[\"~\"];\n                opts.definitions[\";\"].definitionSymbol = \"~\";\n                if (opts.numericInput === true) {\n                    opts.positionCaretOnClick = opts.positionCaretOnClick === \"radixFocus\" ? \"lvp\" : opts.positionCaretOnClick;\n                    opts.digitsOptional = false;\n                    if (isNaN(opts.digits)) opts.digits = 2;\n                    opts.decimalProtect = false;\n                }\n                var mask = \"[+]\";\n                mask += autoEscape(opts.prefix, opts);\n                if (opts.integerOptional === true) {\n                    mask += \"~{1,\" + opts.integerDigits + \"}\";\n                } else mask += \"~{\" + opts.integerDigits + \"}\";\n                if (opts.digits !== undefined) {\n                    var radixDef = opts.decimalProtect ? \":\" : opts.radixPoint;\n                    var dq = opts.digits.toString().split(\",\");\n                    if (isFinite(dq[0]) && dq[1] && isFinite(dq[1])) {\n                        mask += radixDef + \";{\" + opts.digits + \"}\";\n                    } else if (isNaN(opts.digits) || parseInt(opts.digits) > 0) {\n                        if (opts.digitsOptional) {\n                            mask += \"[\" + radixDef + \";{1,\" + opts.digits + \"}]\";\n                        } else mask += radixDef + \";{\" + opts.digits + \"}\";\n                    }\n                }\n                mask += autoEscape(opts.suffix, opts);\n                mask += \"[-]\";\n                opts.greedy = false;\n                return mask;\n            },\n            placeholder: \"\",\n            greedy: false,\n            digits: \"*\",\n            digitsOptional: true,\n            enforceDigitsOnBlur: false,\n            radixPoint: \".\",\n            positionCaretOnClick: \"radixFocus\",\n            groupSize: 3,\n            groupSeparator: \"\",\n            autoGroup: false,\n            allowMinus: true,\n            negationSymbol: {\n                front: \"-\",\n                back: \"\"\n            },\n            integerDigits: \"+\",\n            integerOptional: true,\n            prefix: \"\",\n            suffix: \"\",\n            rightAlign: true,\n            decimalProtect: true,\n            min: null,\n            max: null,\n            step: 1,\n            insertMode: true,\n            autoUnmask: false,\n            unmaskAsNumber: false,\n            inputType: \"text\",\n            inputmode: \"numeric\",\n            preValidation: function(buffer, pos, c, isSelection, opts, maskset) {\n                if (c === \"-\" || c === opts.negationSymbol.front) {\n                    if (opts.allowMinus !== true) return false;\n                    opts.isNegative = opts.isNegative === undefined ? true : !opts.isNegative;\n                    if (buffer.join(\"\") === \"\") return true;\n                    return {\n                        caret: maskset.validPositions[pos] ? pos : undefined,\n                        dopost: true\n                    };\n                }\n                if (isSelection === false && c === opts.radixPoint && (opts.digits !== undefined && (isNaN(opts.digits) || parseInt(opts.digits) > 0))) {\n                    var radixPos = $.inArray(opts.radixPoint, buffer);\n                    if (radixPos !== -1 && maskset.validPositions[radixPos] !== undefined) {\n                        if (opts.numericInput === true) {\n                            return pos === radixPos;\n                        }\n                        return {\n                            caret: radixPos + 1\n                        };\n                    }\n                }\n                return true;\n            },\n            postValidation: function(buffer, pos, currentResult, opts) {\n                function buildPostMask(buffer, opts) {\n                    var postMask = \"\";\n                    postMask += \"(\" + opts.groupSeparator + \"*{\" + opts.groupSize + \"}){*}\";\n                    if (opts.radixPoint !== \"\") {\n                        var radixSplit = buffer.join(\"\").split(opts.radixPoint);\n                        if (radixSplit[1]) {\n                            postMask += opts.radixPoint + \"*{\" + radixSplit[1].match(/^\\d*\\??\\d*/)[0].length + \"}\";\n                        }\n                    }\n                    return postMask;\n                }\n                var suffix = opts.suffix.split(\"\"), prefix = opts.prefix.split(\"\");\n                if (currentResult.pos === undefined && currentResult.caret !== undefined && currentResult.dopost !== true) return currentResult;\n                var caretPos = currentResult.caret !== undefined ? currentResult.caret : currentResult.pos;\n                var maskedValue = buffer.slice();\n                if (opts.numericInput) {\n                    caretPos = maskedValue.length - caretPos - 1;\n                    maskedValue = maskedValue.reverse();\n                }\n                var charAtPos = maskedValue[caretPos];\n                if (charAtPos === opts.groupSeparator) {\n                    caretPos += 1;\n                    charAtPos = maskedValue[caretPos];\n                }\n                if (caretPos === maskedValue.length - opts.suffix.length - 1 && charAtPos === opts.radixPoint) return currentResult;\n                if (charAtPos !== undefined) {\n                    if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) {\n                        maskedValue[caretPos] = \"?\";\n                        if (opts.prefix.length > 0 && caretPos >= (opts.isNegative === false ? 1 : 0) && caretPos < opts.prefix.length - 1 + (opts.isNegative === false ? 1 : 0)) {\n                            prefix[caretPos - (opts.isNegative === false ? 1 : 0)] = \"?\";\n                        } else if (opts.suffix.length > 0 && caretPos >= maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0)) {\n                            suffix[caretPos - (maskedValue.length - opts.suffix.length - (opts.isNegative === false ? 1 : 0))] = \"?\";\n                        }\n                    }\n                }\n                prefix = prefix.join(\"\");\n                suffix = suffix.join(\"\");\n                var processValue = maskedValue.join(\"\").replace(prefix, \"\");\n                processValue = processValue.replace(suffix, \"\");\n                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n                processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\");\n                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n                if (isNaN(opts.placeholder)) {\n                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), \"g\"), \"\");\n                }\n                if (processValue.length > 1 && processValue.indexOf(opts.radixPoint) !== 1) {\n                    if (charAtPos === \"0\") {\n                        processValue = processValue.replace(/^\\?/g, \"\");\n                    }\n                    processValue = processValue.replace(/^0/g, \"\");\n                }\n                if (processValue.charAt(0) === opts.radixPoint && opts.radixPoint !== \"\" && opts.numericInput !== true) {\n                    processValue = \"0\" + processValue;\n                }\n                if (processValue !== \"\") {\n                    processValue = processValue.split(\"\");\n                    if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === \"blur\") && isFinite(opts.digits)) {\n                        var radixPosition = $.inArray(opts.radixPoint, processValue);\n                        var rpb = $.inArray(opts.radixPoint, maskedValue);\n                        if (radixPosition === -1) {\n                            processValue.push(opts.radixPoint);\n                            radixPosition = processValue.length - 1;\n                        }\n                        for (var i = 1; i <= opts.digits; i++) {\n                            if ((!opts.digitsOptional || opts.enforceDigitsOnBlur && currentResult.event === \"blur\") && (processValue[radixPosition + i] === undefined || processValue[radixPosition + i] === opts.placeholder.charAt(0))) {\n                                processValue[radixPosition + i] = currentResult.placeholder || opts.placeholder.charAt(0);\n                            } else if (rpb !== -1 && maskedValue[rpb + i] !== undefined) {\n                                processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i];\n                            }\n                        }\n                    }\n                    if (opts.autoGroup === true && opts.groupSeparator !== \"\" && (charAtPos !== opts.radixPoint || currentResult.pos !== undefined || currentResult.dopost)) {\n                        var addRadix = processValue[processValue.length - 1] === opts.radixPoint && currentResult.c === opts.radixPoint;\n                        processValue = Inputmask(buildPostMask(processValue, opts), {\n                            numericInput: true,\n                            jitMasking: true,\n                            definitions: {\n                                \"*\": {\n                                    validator: \"[0-9?]\",\n                                    cardinality: 1\n                                }\n                            }\n                        }).format(processValue.join(\"\"));\n                        if (addRadix) processValue += opts.radixPoint;\n                        if (processValue.charAt(0) === opts.groupSeparator) {\n                            processValue.substr(1);\n                        }\n                    } else processValue = processValue.join(\"\");\n                }\n                if (opts.isNegative && currentResult.event === \"blur\") {\n                    opts.isNegative = processValue !== \"0\";\n                }\n                processValue = prefix + processValue;\n                processValue += suffix;\n                if (opts.isNegative) {\n                    processValue = opts.negationSymbol.front + processValue;\n                    processValue += opts.negationSymbol.back;\n                }\n                processValue = processValue.split(\"\");\n                if (charAtPos !== undefined) {\n                    if (charAtPos !== opts.radixPoint && charAtPos !== opts.negationSymbol.front && charAtPos !== opts.negationSymbol.back) {\n                        caretPos = $.inArray(\"?\", processValue);\n                        if (caretPos > -1) {\n                            processValue[caretPos] = charAtPos;\n                        } else caretPos = currentResult.caret || 0;\n                    } else if (charAtPos === opts.radixPoint || charAtPos === opts.negationSymbol.front || charAtPos === opts.negationSymbol.back) {\n                        var newCaretPos = $.inArray(charAtPos, processValue);\n                        if (newCaretPos !== -1) caretPos = newCaretPos;\n                    }\n                }\n                if (opts.numericInput) {\n                    caretPos = processValue.length - caretPos - 1;\n                    processValue = processValue.reverse();\n                }\n                var rslt = {\n                    caret: (charAtPos === undefined || currentResult.pos !== undefined) && caretPos !== undefined ? caretPos + (opts.numericInput ? -1 : 1) : caretPos,\n                    buffer: processValue,\n                    refreshFromBuffer: currentResult.dopost || buffer.join(\"\") !== processValue.join(\"\")\n                };\n                return rslt.refreshFromBuffer ? rslt : currentResult;\n            },\n            onBeforeWrite: function(e, buffer, caretPos, opts) {\n                function parseMinMaxOptions(opts) {\n                    if (opts.parseMinMaxOptions === undefined) {\n                        if (opts.min !== null) {\n                            opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n                            if (opts.radixPoint === \",\") opts.min = opts.min.replace(opts.radixPoint, \".\");\n                            opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN;\n                            if (isNaN(opts.min)) opts.min = Number.MIN_VALUE;\n                        }\n                        if (opts.max !== null) {\n                            opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n                            if (opts.radixPoint === \",\") opts.max = opts.max.replace(opts.radixPoint, \".\");\n                            opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN;\n                            if (isNaN(opts.max)) opts.max = Number.MAX_VALUE;\n                        }\n                        opts.parseMinMaxOptions = \"done\";\n                    }\n                }\n                if (e) {\n                    switch (e.type) {\n                      case \"keydown\":\n                        return opts.postValidation(buffer, caretPos, {\n                            caret: caretPos,\n                            dopost: true\n                        }, opts);\n\n                      case \"blur\":\n                      case \"checkval\":\n                        var unmasked;\n                        parseMinMaxOptions(opts);\n                        if (opts.min !== null || opts.max !== null) {\n                            unmasked = opts.onUnMask(buffer.join(\"\"), undefined, $.extend({}, opts, {\n                                unmaskAsNumber: true\n                            }));\n                            if (opts.min !== null && unmasked < opts.min) {\n                                opts.isNegative = opts.min < 0;\n                                return opts.postValidation(opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"), caretPos, {\n                                    caret: caretPos,\n                                    dopost: true,\n                                    placeholder: \"0\"\n                                }, opts);\n                            } else if (opts.max !== null && unmasked > opts.max) {\n                                opts.isNegative = opts.max < 0;\n                                return opts.postValidation(opts.max.toString().replace(\".\", opts.radixPoint).split(\"\"), caretPos, {\n                                    caret: caretPos,\n                                    dopost: true,\n                                    placeholder: \"0\"\n                                }, opts);\n                            }\n                        }\n                        return opts.postValidation(buffer, caretPos, {\n                            caret: caretPos,\n                            placeholder: \"0\",\n                            event: \"blur\"\n                        }, opts);\n\n                      case \"_checkval\":\n                        return {\n                            caret: caretPos\n                        };\n\n                      default:\n                        break;\n                    }\n                }\n            },\n            regex: {\n                integerPart: function(opts, emptyCheck) {\n                    return emptyCheck ? new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\") : new RegExp(\"[\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"+]?\\\\d+\");\n                },\n                integerNPart: function(opts) {\n                    return new RegExp(\"[\\\\d\" + Inputmask.escapeRegex(opts.groupSeparator) + Inputmask.escapeRegex(opts.placeholder.charAt(0)) + \"]+\");\n                }\n            },\n            definitions: {\n                \"~\": {\n                    validator: function(chrs, maskset, pos, strict, opts, isSelection) {\n                        var isValid, l;\n                        if (chrs === \"k\" || chrs === \"m\") {\n                            isValid = {\n                                insert: [],\n                                c: 0\n                            };\n                            for (var i = 0, l = chrs === \"k\" ? 2 : 5; i < l; i++) {\n                                isValid.insert.push({\n                                    pos: pos + i,\n                                    c: 0\n                                });\n                            }\n                            isValid.pos = pos + l;\n                            return isValid;\n                        }\n                        isValid = strict ? new RegExp(\"[0-9\" + Inputmask.escapeRegex(opts.groupSeparator) + \"]\").test(chrs) : new RegExp(\"[0-9]\").test(chrs);\n                        if (isValid === true) {\n                            if (opts.numericInput !== true && maskset.validPositions[pos] !== undefined && maskset.validPositions[pos].match.def === \"~\" && !isSelection) {\n                                var processValue = maskset.buffer.join(\"\");\n                                processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\");\n                                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n                                var pvRadixSplit = processValue.split(opts.radixPoint);\n                                if (pvRadixSplit.length > 1) {\n                                    pvRadixSplit[1] = pvRadixSplit[1].replace(/0/g, opts.placeholder.charAt(0));\n                                }\n                                if (pvRadixSplit[0] === \"0\") {\n                                    pvRadixSplit[0] = pvRadixSplit[0].replace(/0/g, opts.placeholder.charAt(0));\n                                }\n                                processValue = pvRadixSplit[0] + opts.radixPoint + pvRadixSplit[1] || \"\";\n                                var bufferTemplate = maskset._buffer.join(\"\");\n                                if (processValue === opts.radixPoint) {\n                                    processValue = bufferTemplate;\n                                }\n                                while (processValue.match(Inputmask.escapeRegex(bufferTemplate) + \"$\") === null) {\n                                    bufferTemplate = bufferTemplate.slice(1);\n                                }\n                                processValue = processValue.replace(bufferTemplate, \"\");\n                                processValue = processValue.split(\"\");\n                                if (processValue[pos] === undefined) {\n                                    isValid = {\n                                        pos: pos,\n                                        remove: pos\n                                    };\n                                } else {\n                                    isValid = {\n                                        pos: pos\n                                    };\n                                }\n                            }\n                        } else if (!strict && chrs === opts.radixPoint && maskset.validPositions[pos - 1] === undefined) {\n                            isValid = {\n                                insert: {\n                                    pos: pos,\n                                    c: 0\n                                },\n                                pos: pos + 1\n                            };\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1\n                },\n                \"+\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        return opts.allowMinus && (chrs === \"-\" || chrs === opts.negationSymbol.front);\n                    },\n                    cardinality: 1,\n                    placeholder: \"\"\n                },\n                \"-\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        return opts.allowMinus && chrs === opts.negationSymbol.back;\n                    },\n                    cardinality: 1,\n                    placeholder: \"\"\n                },\n                \":\": {\n                    validator: function(chrs, maskset, pos, strict, opts) {\n                        var radix = \"[\" + Inputmask.escapeRegex(opts.radixPoint) + \"]\";\n                        var isValid = new RegExp(radix).test(chrs);\n                        if (isValid && maskset.validPositions[pos] && maskset.validPositions[pos].match.placeholder === opts.radixPoint) {\n                            isValid = {\n                                caret: pos + 1\n                            };\n                        }\n                        return isValid;\n                    },\n                    cardinality: 1,\n                    placeholder: function(opts) {\n                        return opts.radixPoint;\n                    }\n                }\n            },\n            onUnMask: function(maskedValue, unmaskedValue, opts) {\n                if (unmaskedValue === \"\" && opts.nullable === true) {\n                    return unmaskedValue;\n                }\n                var processValue = maskedValue.replace(opts.prefix, \"\");\n                processValue = processValue.replace(opts.suffix, \"\");\n                processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\n                if (opts.placeholder.charAt(0) !== \"\") {\n                    processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), \"g\"), \"0\");\n                }\n                if (opts.unmaskAsNumber) {\n                    if (opts.radixPoint !== \"\" && processValue.indexOf(opts.radixPoint) !== -1) processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), \".\");\n                    processValue = processValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\");\n                    processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n                    return Number(processValue);\n                }\n                return processValue;\n            },\n            isComplete: function(buffer, opts) {\n                var maskedValue = (opts.numericInput ? buffer.slice().reverse() : buffer).join(\"\");\n                maskedValue = maskedValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\");\n                maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\n                maskedValue = maskedValue.replace(opts.prefix, \"\");\n                maskedValue = maskedValue.replace(opts.suffix, \"\");\n                maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\");\n                if (opts.radixPoint === \",\") maskedValue = maskedValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\");\n                return isFinite(maskedValue);\n            },\n            onBeforeMask: function(initialValue, opts) {\n                opts.isNegative = undefined;\n                var radixPoint = opts.radixPoint || \",\";\n                if ((typeof initialValue == \"number\" || opts.inputType === \"number\") && radixPoint !== \"\") {\n                    initialValue = initialValue.toString().replace(\".\", radixPoint);\n                }\n                var valueParts = initialValue.split(radixPoint), integerPart = valueParts[0].replace(/[^\\-0-9]/g, \"\"), decimalPart = valueParts.length > 1 ? valueParts[1].replace(/[^0-9]/g, \"\") : \"\";\n                initialValue = integerPart + (decimalPart !== \"\" ? radixPoint + decimalPart : decimalPart);\n                var digits = 0;\n                if (radixPoint !== \"\") {\n                    digits = decimalPart.length;\n                    if (decimalPart !== \"\") {\n                        var digitsFactor = Math.pow(10, digits || 1);\n                        if (isFinite(opts.digits)) {\n                            digits = parseInt(opts.digits);\n                            digitsFactor = Math.pow(10, digits);\n                        }\n                        initialValue = initialValue.replace(Inputmask.escapeRegex(radixPoint), \".\");\n                        if (isFinite(initialValue)) initialValue = Math.round(parseFloat(initialValue) * digitsFactor) / digitsFactor;\n                        initialValue = initialValue.toString().replace(\".\", radixPoint);\n                    }\n                }\n                if (opts.digits === 0 && initialValue.indexOf(Inputmask.escapeRegex(radixPoint)) !== -1) {\n                    initialValue = initialValue.substring(0, initialValue.indexOf(Inputmask.escapeRegex(radixPoint)));\n                }\n                return alignDigits(initialValue.toString().split(\"\"), digits, opts).join(\"\");\n            },\n            onKeyDown: function(e, buffer, caretPos, opts) {\n                var $input = $(this);\n                if (e.ctrlKey) {\n                    switch (e.keyCode) {\n                      case Inputmask.keyCode.UP:\n                        $input.val(parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step));\n                        $input.trigger(\"setvalue\");\n                        break;\n\n                      case Inputmask.keyCode.DOWN:\n                        $input.val(parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step));\n                        $input.trigger(\"setvalue\");\n                        break;\n                    }\n                }\n            }\n        },\n        currency: {\n            prefix: \"$ \",\n            groupSeparator: \",\",\n            alias: \"numeric\",\n            placeholder: \"0\",\n            autoGroup: true,\n            digits: 2,\n            digitsOptional: false,\n            clearMaskOnLostFocus: false\n        },\n        decimal: {\n            alias: \"numeric\"\n        },\n        integer: {\n            alias: \"numeric\",\n            digits: 0,\n            radixPoint: \"\"\n        },\n        percentage: {\n            alias: \"numeric\",\n            digits: 2,\n            digitsOptional: true,\n            radixPoint: \".\",\n            placeholder: \"0\",\n            autoGroup: false,\n            min: 0,\n            max: 100,\n            suffix: \" %\",\n            allowMinus: false\n        }\n    });\n    return Inputmask;\n});\n\n//# sourceURL=webpack:///./node_modules/inputmask/dist/inputmask/inputmask.numeric.extensions.js?");
164
165/***/ }),
166
vendor: 936 bytes, lines 167-177
167/***/ "./node_modules/inputmask/index.js":
168/*!*****************************************!*\
169  !*** ./node_modules/inputmask/index.js ***!
170  \*****************************************/
171/*! no static exports found */
172/***/ (function(module, exports, __webpack_require__) {
173
174eval("__webpack_require__(/*! ./dist/inputmask/inputmask.extensions */ \"./node_modules/inputmask/dist/inputmask/inputmask.extensions.js\");\r\n__webpack_require__(/*! ./dist/inputmask/inputmask.date.extensions */ \"./node_modules/inputmask/dist/inputmask/inputmask.date.extensions.js\");\r\n__webpack_require__(/*! ./dist/inputmask/inputmask.numeric.extensions */ \"./node_modules/inputmask/dist/inputmask/inputmask.numeric.extensions.js\");\r\n\r\nmodule.exports = __webpack_require__(/*! ./dist/inputmask/inputmask.js */ \"./node_modules/inputmask/dist/inputmask/inputmask.js\");\r\n\n\n//# sourceURL=webpack:///./node_modules/inputmask/index.js?");
175
176/***/ }),
177
vendor: 1,740 bytes, lines 178-188
178/***/ "./node_modules/performance-now/lib/performance-now.js":
179/*!*************************************************************!*\
180  !*** ./node_modules/performance-now/lib/performance-now.js ***!
181  \*************************************************************/
182/*! no static exports found */
183/***/ (function(module, exports, __webpack_require__) {
184
185eval("/* WEBPACK VAR INJECTION */(function(process) {// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now();\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/performance-now/lib/performance-now.js?");
186
187/***/ }),
188
vendor: 5,937 bytes, lines 189-199
189/***/ "./node_modules/process/browser.js":
190/*!*****************************************!*\
191  !*** ./node_modules/process/browser.js ***!
192  \*****************************************/
193/*! no static exports found */
194/***/ (function(module, exports) {
195
196eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack:///./node_modules/process/browser.js?");
197
198/***/ }),
199
vendor: 2,602 bytes, lines 200-210
200/***/ "./node_modules/raf/index.js":
201/*!***********************************!*\
202  !*** ./node_modules/raf/index.js ***!
203  \***********************************/
204/*! no static exports found */
205/***/ (function(module, exports, __webpack_require__) {
206
207eval("/* WEBPACK VAR INJECTION */(function(global) {var now = __webpack_require__(/*! performance-now */ \"./node_modules/performance-now/lib/performance-now.js\")\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/raf/index.js?");
208
209/***/ }),
210
vendor: 5,784 bytes, lines 211-221
211/***/ "./node_modules/scroll-to-element/ease.js":
212/*!************************************************!*\
213  !*** ./node_modules/scroll-to-element/ease.js ***!
214  \************************************************/
215/*! no static exports found */
216/***/ (function(module, exports) {
217
218eval("// easing functions from \"Tween.js\"\nexports.linear = function(n){\n  return n;\n};\n\nexports.inQuad = function(n){\n  return n * n;\n};\n\nexports.outQuad = function(n){\n  return n * (2 - n);\n};\n\nexports.inOutQuad = function(n){\n  n *= 2;\n  if (n < 1) return 0.5 * n * n;\n  return - 0.5 * (--n * (n - 2) - 1);\n};\n\nexports.inCube = function(n){\n  return n * n * n;\n};\n\nexports.outCube = function(n){\n  return --n * n * n + 1;\n};\n\nexports.inOutCube = function(n){\n  n *= 2;\n  if (n < 1) return 0.5 * n * n * n;\n  return 0.5 * ((n -= 2 ) * n * n + 2);\n};\n\nexports.inQuart = function(n){\n  return n * n * n * n;\n};\n\nexports.outQuart = function(n){\n  return 1 - (--n * n * n * n);\n};\n\nexports.inOutQuart = function(n){\n  n *= 2;\n  if (n < 1) return 0.5 * n * n * n * n;\n  return -0.5 * ((n -= 2) * n * n * n - 2);\n};\n\nexports.inQuint = function(n){\n  return n * n * n * n * n;\n}\n\nexports.outQuint = function(n){\n  return --n * n * n * n * n + 1;\n}\n\nexports.inOutQuint = function(n){\n  n *= 2;\n  if (n < 1) return 0.5 * n * n * n * n * n;\n  return 0.5 * ((n -= 2) * n * n * n * n + 2);\n};\n\nexports.inSine = function(n){\n  return 1 - Math.cos(n * Math.PI / 2 );\n};\n\nexports.outSine = function(n){\n  return Math.sin(n * Math.PI / 2);\n};\n\nexports.inOutSine = function(n){\n  return .5 * (1 - Math.cos(Math.PI * n));\n};\n\nexports.inExpo = function(n){\n  return 0 == n ? 0 : Math.pow(1024, n - 1);\n};\n\nexports.outExpo = function(n){\n  return 1 == n ? n : 1 - Math.pow(2, -10 * n);\n};\n\nexports.inOutExpo = function(n){\n  if (0 == n) return 0;\n  if (1 == n) return 1;\n  if ((n *= 2) < 1) return .5 * Math.pow(1024, n - 1);\n  return .5 * (-Math.pow(2, -10 * (n - 1)) + 2);\n};\n\nexports.inCirc = function(n){\n  return 1 - Math.sqrt(1 - n * n);\n};\n\nexports.outCirc = function(n){\n  return Math.sqrt(1 - (--n * n));\n};\n\nexports.inOutCirc = function(n){\n  n *= 2\n  if (n < 1) return -0.5 * (Math.sqrt(1 - n * n) - 1);\n  return 0.5 * (Math.sqrt(1 - (n -= 2) * n) + 1);\n};\n\nexports.inBack = function(n){\n  var s = 1.70158;\n  return n * n * (( s + 1 ) * n - s);\n};\n\nexports.outBack = function(n){\n  var s = 1.70158;\n  return --n * n * ((s + 1) * n + s) + 1;\n};\n\nexports.inOutBack = function(n){\n  var s = 1.70158 * 1.525;\n  if ( ( n *= 2 ) < 1 ) return 0.5 * ( n * n * ( ( s + 1 ) * n - s ) );\n  return 0.5 * ( ( n -= 2 ) * n * ( ( s + 1 ) * n + s ) + 2 );\n};\n\nexports.inBounce = function(n){\n  return 1 - exports.outBounce(1 - n);\n};\n\nexports.outBounce = function(n){\n  if ( n < ( 1 / 2.75 ) ) {\n    return 7.5625 * n * n;\n  } else if ( n < ( 2 / 2.75 ) ) {\n    return 7.5625 * ( n -= ( 1.5 / 2.75 ) ) * n + 0.75;\n  } else if ( n < ( 2.5 / 2.75 ) ) {\n    return 7.5625 * ( n -= ( 2.25 / 2.75 ) ) * n + 0.9375;\n  } else {\n    return 7.5625 * ( n -= ( 2.625 / 2.75 ) ) * n + 0.984375;\n  }\n};\n\nexports.inOutBounce = function(n){\n  if (n < .5) return exports.inBounce(n * 2) * .5;\n  return exports.outBounce(n * 2 - 1) * .5 + .5;\n};\n\nexports.inElastic = function(n){\n  var s, a = 0.1, p = 0.4;\n  if ( n === 0 ) return 0;\n  if ( n === 1 ) return 1;\n  if ( !a || a < 1 ) { a = 1; s = p / 4; }\n  else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );\n  return - ( a * Math.pow( 2, 10 * ( n -= 1 ) ) * Math.sin( ( n - s ) * ( 2 * Math.PI ) / p ) );\n};\n\nexports.outElastic = function(n){\n  var s, a = 0.1, p = 0.4;\n  if ( n === 0 ) return 0;\n  if ( n === 1 ) return 1;\n  if ( !a || a < 1 ) { a = 1; s = p / 4; }\n  else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );\n  return ( a * Math.pow( 2, - 10 * n) * Math.sin( ( n - s ) * ( 2 * Math.PI ) / p ) + 1 );\n};\n\nexports.inOutElastic = function(n){\n  var s, a = 0.1, p = 0.4;\n  if ( n === 0 ) return 0;\n  if ( n === 1 ) return 1;\n  if ( !a || a < 1 ) { a = 1; s = p / 4; }\n  else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );\n  if ( ( n *= 2 ) < 1 ) return - 0.5 * ( a * Math.pow( 2, 10 * ( n -= 1 ) ) * Math.sin( ( n - s ) * ( 2 * Math.PI ) / p ) );\n  return a * Math.pow( 2, -10 * ( n -= 1 ) ) * Math.sin( ( n - s ) * ( 2 * Math.PI ) / p ) * 0.5 + 1;\n};\n\n// aliases\nexports['in-quad'] = exports.inQuad;\nexports['out-quad'] = exports.outQuad;\nexports['in-out-quad'] = exports.inOutQuad;\nexports['in-cube'] = exports.inCube;\nexports['out-cube'] = exports.outCube;\nexports['in-out-cube'] = exports.inOutCube;\nexports['in-quart'] = exports.inQuart;\nexports['out-quart'] = exports.outQuart;\nexports['in-out-quart'] = exports.inOutQuart;\nexports['in-quint'] = exports.inQuint;\nexports['out-quint'] = exports.outQuint;\nexports['in-out-quint'] = exports.inOutQuint;\nexports['in-sine'] = exports.inSine;\nexports['out-sine'] = exports.outSine;\nexports['in-out-sine'] = exports.inOutSine;\nexports['in-expo'] = exports.inExpo;\nexports['out-expo'] = exports.outExpo;\nexports['in-out-expo'] = exports.inOutExpo;\nexports['in-circ'] = exports.inCirc;\nexports['out-circ'] = exports.outCirc;\nexports['in-out-circ'] = exports.inOutCirc;\nexports['in-back'] = exports.inBack;\nexports['out-back'] = exports.outBack;\nexports['in-out-back'] = exports.inOutBack;\nexports['in-bounce'] = exports.inBounce;\nexports['out-bounce'] = exports.outBounce;\nexports['in-out-bounce'] = exports.inOutBounce;\nexports['in-elastic'] = exports.inElastic;\nexports['out-elastic'] = exports.outElastic;\nexports['in-out-elastic'] = exports.inOutElastic;\n\n\n//# sourceURL=webpack:///./node_modules/scroll-to-element/ease.js?");
219
220/***/ }),
221
vendor: 2,640 bytes, lines 222-232
222/***/ "./node_modules/scroll-to-element/emitter.js":
223/*!***************************************************!*\
224  !*** ./node_modules/scroll-to-element/emitter.js ***!
225  \***************************************************/
226/*! no static exports found */
227/***/ (function(module, exports, __webpack_require__) {
228
229eval("function Emitter(obj) {\n  if (obj) return mixin(obj);\n};\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n    .push(fn);\n  return this;\n};\n\nEmitter.prototype.once = function(event, fn){\n  function on() {\n    this.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  on.fn = fn;\n  this.on(event, on);\n  return this;\n};\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n  this._callbacks = this._callbacks || {};\n\n  // all\n  if (0 == arguments.length) {\n    this._callbacks = {};\n    return this;\n  }\n\n  // specific event\n  var callbacks = this._callbacks['$' + event];\n  if (!callbacks) return this;\n\n  // remove all handlers\n  if (1 == arguments.length) {\n    delete this._callbacks['$' + event];\n    return this;\n  }\n\n  // remove specific handler\n  var cb;\n  for (var i = 0; i < callbacks.length; i++) {\n    cb = callbacks[i];\n    if (cb === fn || cb.fn === fn) {\n      callbacks.splice(i, 1);\n      break;\n    }\n  }\n\n  // Remove event specific arrays for event types that no\n  // one is subscribed for to avoid memory leak.\n  if (callbacks.length === 0) {\n    delete this._callbacks['$' + event];\n  }\n\n  return this;\n};\n\nEmitter.prototype.emit = function(event){\n  this._callbacks = this._callbacks || {};\n  var args = [].slice.call(arguments, 1)\n    , callbacks = this._callbacks['$' + event];\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n\nEmitter.prototype.listeners = function(event){\n  this._callbacks = this._callbacks || {};\n  return this._callbacks['$' + event] || [];\n};\n\nEmitter.prototype.hasListeners = function(event){\n  return !! this.listeners(event).length;\n};\n\nif (true) {\n  module.exports = Emitter;\n}\n\n\n//# sourceURL=webpack:///./node_modules/scroll-to-element/emitter.js?");
230
231/***/ }),
232
vendor: 1,674 bytes, lines 233-243
233/***/ "./node_modules/scroll-to-element/index.js":
234/*!*************************************************!*\
235  !*** ./node_modules/scroll-to-element/index.js ***!
236  \*************************************************/
237/*! no static exports found */
238/***/ (function(module, exports, __webpack_require__) {
239
240eval("var scroll = __webpack_require__(/*! ./scroll-to */ \"./node_modules/scroll-to-element/scroll-to.js\");\n\nfunction calculateScrollOffset(elem, additionalOffset, alignment) {\n  var body = document.body,\n      html = document.documentElement;\n\n  var elemRect = elem.getBoundingClientRect();\n  var clientHeight = html.clientHeight;\n  var documentHeight = Math.max( body.scrollHeight, body.offsetHeight,\n                                 html.clientHeight, html.scrollHeight, html.offsetHeight );\n\n  additionalOffset = additionalOffset || 0;\n\n  var scrollPosition;\n  if (alignment === 'bottom') {\n    scrollPosition = elemRect.bottom - clientHeight;\n  } else if (alignment === 'middle') {\n    scrollPosition = elemRect.bottom - clientHeight / 2 - elemRect.height / 2;\n  } else { // top and default\n    scrollPosition = elemRect.top;\n  }\n\n  var maxScrollPosition = documentHeight - clientHeight;\n  return Math.min(scrollPosition + additionalOffset + window.pageYOffset,\n                  maxScrollPosition);\n}\n\nmodule.exports = function (elem, options) {\n  options = options || {};\n  if (typeof elem === 'string') elem = document.querySelector(elem);\n  if (elem) return scroll(0, calculateScrollOffset(elem, options.offset, options.align), options);\n};\n\n\n//# sourceURL=webpack:///./node_modules/scroll-to-element/index.js?");
241
242/***/ }),
243
vendor: 1,392 bytes, lines 244-254
244/***/ "./node_modules/scroll-to-element/scroll-to.js":
245/*!*****************************************************!*\
246  !*** ./node_modules/scroll-to-element/scroll-to.js ***!
247  \*****************************************************/
248/*! no static exports found */
249/***/ (function(module, exports, __webpack_require__) {
250
251eval("var Tween = __webpack_require__(/*! ./tween */ \"./node_modules/scroll-to-element/tween.js\");\nvar raf = __webpack_require__(/*! raf */ \"./node_modules/raf/index.js\");\n\nfunction scroll() {\n  var y = window.pageYOffset || document.documentElement.scrollTop;\n  var x = window.pageXOffset || document.documentElement.scrollLeft;\n  return { top: y, left: x };\n}\n\nfunction scrollTo(x, y, options) {\n  options = options || {};\n\n  // start position\n  var start = scroll();\n\n  // setup tween\n  var tween = Tween(start)\n    .ease(options.ease || 'out-circ')\n    .to({ top: y, left: x })\n    .duration(options.duration || 1000);\n\n  // scroll\n  tween.update(function(o){\n    window.scrollTo(o.left | 0, o.top | 0);\n  });\n\n  // handle end\n  tween.on('end', function(){\n    animate = function(){};\n  });\n\n  // animate\n  function animate() {\n    raf(animate);\n    tween.update();\n  }\n\n  animate();\n\n  return tween;\n}\n\nmodule.exports = scrollTo;\n\n\n//# sourceURL=webpack:///./node_modules/scroll-to-element/scroll-to.js?");
252
253/***/ }),
254
vendor: 2,621 bytes, lines 255-265
255/***/ "./node_modules/scroll-to-element/tween.js":
256/*!*************************************************!*\
257  !*** ./node_modules/scroll-to-element/tween.js ***!
258  \*************************************************/
259/*! no static exports found */
260/***/ (function(module, exports, __webpack_require__) {
261
262eval("var ease = __webpack_require__(/*! ./ease */ \"./node_modules/scroll-to-element/ease.js\");\nvar Emitter = __webpack_require__(/*! ./emitter */ \"./node_modules/scroll-to-element/emitter.js\");\n\nfunction extend(obj, src) {\n  for (var key in src) {\n    if (src.hasOwnProperty(key)) obj[key] = src[key];\n  }\n  return obj;\n}\n\nfunction Tween(obj) {\n  if (!(this instanceof Tween)) return new Tween(obj);\n  this._from = obj;\n  this.ease('linear');\n  this.duration(500);\n}\n\nEmitter(Tween.prototype);\n\nTween.prototype.reset = function(){\n  this.isArray = Object.prototype.toString.call(this._from) === '[object Array]';\n  this._curr = extend({}, this._from);\n  this._done = false;\n  this._start = Date.now();\n  return this;\n};\n\nTween.prototype.to = function(obj){\n  this.reset();\n  this._to = obj;\n  return this;\n};\n\nTween.prototype.duration = function(ms){\n  this._duration = ms;\n  return this;\n};\n\nTween.prototype.ease = function(fn){\n  fn = 'function' == typeof fn ? fn : ease[fn];\n  if (!fn) throw new TypeError('invalid easing function');\n  this._ease = fn;\n  return this;\n};\n\nTween.prototype.stop = function(){\n  this.stopped = true;\n  this._done = true;\n  this.emit('stop');\n  this.emit('end');\n  return this;\n};\n\nTween.prototype.step = function(){\n  if (this._done) return;\n\n  var duration = this._duration;\n  var now = Date.now();\n  var delta = now - this._start;\n  var done = delta >= duration;\n\n  if (done) {\n    this._from = this._to;\n    this._update(this._to);\n    this._done = true;\n    this.emit('end');\n    return this;\n  }\n\n  var from = this._from;\n  var to = this._to;\n  var curr = this._curr;\n  var fn = this._ease;\n  var p = (now - this._start) / duration;\n  var n = fn(p);\n\n  if (this.isArray) {\n    for (var i = 0; i < from.length; ++i) {\n      curr[i] = from[i] + (to[i] - from[i]) * n;\n    }\n\n    this._update(curr);\n    return this;\n  }\n\n  for (var k in from) {\n    curr[k] = from[k] + (to[k] - from[k]) * n;\n  }\n\n  this._update(curr);\n  return this;\n};\n\nTween.prototype.update = function(fn){\n  if (0 == arguments.length) return this.step();\n  this._update = fn;\n  return this;\n};\n\nmodule.exports = Tween;\n\n\n//# sourceURL=webpack:///./node_modules/scroll-to-element/tween.js?");
263
264/***/ }),
265
vendor: 819 bytes, lines 266-276
266/***/ "./node_modules/webpack/buildin/global.js":
267/*!***********************************!*\
268  !*** (webpack)/buildin/global.js ***!
269  \***********************************/
270/*! no static exports found */
271/***/ (function(module, exports) {
272
273eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=webpack:///(webpack)/buildin/global.js?");
274
275/***/ }),
276
277/***/ "./src/js/app.js":
278/*!***********************!*\
279  !*** ./src/js/app.js ***!
280  \***********************/
281/*! no static exports found */
282/***/ (function(module, exports, __webpack_require__) {
283
284eval("__webpack_require__(/*! ./site */ \"./src/js/site.js\");\n__webpack_require__(/*! ./components/utilities */ \"./src/js/components/utilities.js\");\n__webpack_require__(/*! ./components/search */ \"./src/js/components/search.js\");\n__webpack_require__(/*! ./components/nfUtmInjection */ \"./src/js/components/nfUtmInjection.js\");\n\n//# sourceURL=webpack:///./src/js/app.js?");
285
286/***/ }),
287
288/***/ "./src/js/components/nfUtmInjection.js":
289/*!*********************************************!*\
290  !*** ./src/js/components/nfUtmInjection.js ***!
291  \*********************************************/
292/*! no static exports found */
293/***/ (function(module, exports) {
294
295eval("// Create a new object for custom validation of a custom field.\nif (typeof Marionette !== 'undefined') {\n  var utmInjection = Marionette.Object.extend({\n    initialize: function initialize() {\n      // Listen to the render:view event for a field type. Example: Textbox field.\n      this.listenTo(nfRadio.channel('hidden'), 'render:view', this.renderView);\n    },\n    renderView: function renderView(view) {\n      // Check if this is the right field. Example check for field key.\n      if (view.model.get(\"label\") !== \"utm_information\") {\n        return false;\n      }\n\n      // Get element\n      var el = jQuery(view.el).find('.nf-element');\n      var utmValue = \"Website\";\n\n      // Check if there are utms present\n      if (window.location.search) {\n        utmSource = this.getParameterByName(\"utm_source\");\n        utmMedium = this.getParameterByName(\"utm_medium\");\n        utmValue = \"\".concat(utmSource, \"-\").concat(utmMedium);\n      }\n      el.val(utmValue);\n    },\n    getParameterByName: function getParameterByName(name) {\n      name = name.replace(/[\\[]/, \"\\\\\\[\").replace(/[\\]]/, \"\\\\\\]\");\n      var regexS = \"[\\\\?&]\" + name + \"=([^&#]*)\";\n      var regex = new RegExp(regexS);\n      var results = regex.exec(window.location.search);\n      if (results == null) {\n        return \"\";\n      } else {\n        return decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n      }\n    }\n  });\n}\n\n// On Document Ready...\njQuery(document).ready(function ($) {\n  // Instantiate our custom field's controller, defined above.\n  if (typeof Marionette !== 'undefined') {\n    new utmInjection();\n  }\n});\n\n//# sourceURL=webpack:///./src/js/components/nfUtmInjection.js?");
296
297/***/ }),
298
299/***/ "./src/js/components/search.js":
300/*!*************************************!*\
301  !*** ./src/js/components/search.js ***!
302  \*************************************/
303/*! no static exports found */
304/***/ (function(module, exports) {
305
306eval("function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\r\n * Search class for full page search\r\n */\nvar Search = /*#__PURE__*/function () {\n  /**\r\n   * Setup global vars and if search is present setup event listeners\r\n   */\n  function Search() {\n    _classCallCheck(this, Search);\n    this.searchLink = document.getElementById('menu-search-button');\n    this.searchElem = document.getElementById('full-page-search');\n    if (this.searchLink) {\n      this.setClickListener();\n    }\n  }\n\n  /**\r\n   * Toggle Active state for full page search container\r\n   */\n  return _createClass(Search, [{\n    key: \"activateSearch\",\n    value: function activateSearch() {\n      this.searchElem.classList.toggle('active');\n    }\n\n    /**\r\n     * Event listener for full page search open and close\r\n     */\n  }, {\n    key: \"setClickListener\",\n    value: function setClickListener() {\n      // Top Bar Search Icon\n      this.searchLink.addEventListener('click', function (e) {\n        e.preventDefault();\n        this.activateSearch();\n      }.bind(this), false);\n\n      // Close Search Icon\n      document.getElementById('close-search').addEventListener('click', function () {\n        this.activateSearch();\n      }.bind(this), false);\n    }\n  }]);\n}();\nvar search = new Search();\n\n//# sourceURL=webpack:///./src/js/components/search.js?");
307
308/***/ }),
309
310/***/ "./src/js/components/utilities.js":
311/*!****************************************!*\
312  !*** ./src/js/components/utilities.js ***!
313  \****************************************/
314/*! exports provided: Utilities */
315/***/ (function(module, __webpack_exports__, __webpack_require__) {
316
317"use strict";
318eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Utilities\", function() { return Utilities; });\n/* harmony import */ var inputmask__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! inputmask */ \"./node_modules/inputmask/index.js\");\n/* harmony import */ var inputmask__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(inputmask__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var scroll_to_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! scroll-to-element */ \"./node_modules/scroll-to-element/index.js\");\n/* harmony import */ var scroll_to_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(scroll_to_element__WEBPACK_IMPORTED_MODULE_1__);\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\nvar Utilities = /*#__PURE__*/function () {\n  function Utilities() {\n    _classCallCheck(this, Utilities);\n  }\n  return _createClass(Utilities, null, [{\n    key: \"clearForm\",\n    value: function clearForm(form) {\n      var formElems = form.elements;\n      for (var i = 0; i < formElems.length; i++) {\n        if (formElems[i].type === 'submit' || formElems[i].type === 'button') {\n          continue;\n        }\n        if (formElems[i].type === 'checkbox' || formElems[i].type === 'radio') {\n          formElems[i].checked = false;\n          continue;\n        }\n        if (formElems[i].name === 'action') {\n          continue;\n        }\n        formElems[i].value = '';\n      }\n    }\n  }, {\n    key: \"serialize\",\n    value: function serialize(form) {\n      // Setup our serialized data\n      var serialized = [];\n\n      // Loop through each field in the form\n      for (var i = 0; i < form.elements.length; i++) {\n        var field = form.elements[i];\n\n        // Don't serialize fields without a name, submits, buttons, file and reset inputs, and disabled fields\n        if (!field.name || field.disabled || field.type === 'file' || field.type === 'reset' || field.type === 'submit' || field.type === 'button') {\n          continue;\n        }\n\n        // If a multi-select, get all selections\n        if (field.type === 'select-multiple') {\n          for (var n = 0; n < field.options.length; n++) {\n            if (!field.options[n].selected) continue;\n            serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.options[n].value));\n          }\n        }\n        // Convert field data to a query string\n        else if (field.type !== 'checkbox' && field.type !== 'radio' || field.checked) {\n          serialized.push(encodeURIComponent(field.name) + \"=\" + encodeURIComponent(field.value));\n        }\n      }\n      return serialized.join('&');\n    }\n  }, {\n    key: \"formInputs\",\n    value: function formInputs(formId) {\n      return document.getElementById(formId).elements;\n    }\n  }, {\n    key: \"getHeight\",\n    value: function getHeight(descriptor) {\n      var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'id';\n      var elem;\n      if (type === 'id') {\n        elem = document.getElementById(descriptor);\n      }
318 else {\n        elem = document.getElementsByClassName(descriptor);\n      }\n      return elem.offsetHeight;\n    }\n  }, {\n    key: \"scrollToTop\",\n    value: function scrollToTop() {\n      var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 250;\n      var scrollInterval = setInterval(function () {\n        var windowPos = !window.scrollY ? window.pageYOffset : window.scrollY;\n        var scrollStep = -windowPos / (duration / 15) - 16;\n        if (windowPos != 0) {\n          window.scrollBy(0, scrollStep);\n        } else {\n          clearInterval(scrollInterval);\n        }\n      }, 15);\n    }\n  }, {\n    key: \"createHiddenInput\",\n    value: function createHiddenInput(name, value) {\n      var input = document.createElement('input');\n      input.type = 'hidden';\n      input.name = name;\n      input.value = value;\n      return input;\n    }\n  }, {\n    key: \"notifications\",\n    value: function notifications(containerElem, msg) {\n      var notificationStatus = msg.status === 'error' ? 'alert-danger' : 'alert-success';\n      var alertContainer = document.createElement('div');\n      alertContainer.classList.add('alert', notificationStatus);\n      alertContainer.id = 'notification-container';\n      alertContainer.innerText = msg.message;\n      containerElem.insertBefore(alertContainer, containerElem.firstChild);\n      if (msg.status === 'success') {\n        utilities.clearForm(containerElem);\n      }\n    }\n  }, {\n    key: \"createLoader\",\n    value: function createLoader(containerElem) {\n      var loader = document.createElement('div');\n      loader.id = 'loader-container';\n      loader.innerHTML = '<i class=\"fas fa-spinner fa-spin fa-3x\"></i>';\n      containerElem.insertBefore(loader, containerElem.firstChild);\n    }\n  }, {\n    key: \"removeLoader\",\n    value: function removeLoader() {\n      var loader = document.getElementById('loader-container');\n      if (loader) {\n        loader.remove();\n      }\n    }\n  }, {\n    key: \"setDropdownMenuScrollHeight\",\n    value: function setDropdownMenuScrollHeight(elem, headerHeight, window) {\n      var dropdownHeight = 311;\n      if (window.innerWidth >= 1199) {\n        elem.removeAttribute('style');\n        return;\n      }\n      if (window.innerHeight < 311 + headerHeight) {\n        dropdownHeight = 311 - headerHeight;\n      }\n      elem.setAttribute('style', 'max-height: ' + dropdownHeight + 'px');\n    }\n  }, {\n    key: \"removeSiblingElementByClass\",\n    value: function removeSiblingElementByClass(element, className) {\n      if (element.nextElementSibling !== null) {\n        if (element.nextElementSibling.classList.contains(className)) {\n          element.parentNode.removeChild(element.nextElementSibling);\n        }\n      }\n    }\n  }, {\n    key: \"setInputMask\",\n    value: function setInputMask(elemID, type) {\n      var elem = document.getElementById(elemID);\n      switch (type) {\n        case 'zip':\n          var zipMask = new inputmask__WEBPACK_IMPORTED_MODULE_0___default.a('99999');\n          zipMask.mask(elem);\n          break;\n        case 'phone':\n          var phoneMask = new inputmask__WEBPACK_IMPORTED_MODULE_0___default.a('(999) 999-9999', {\n            'autoUnmask': true,\n            'removeMaskOnSubmit': true\n          });\n          phoneMask.mask(elem);\n          break;\n      }\n    }\n  }, {\n    key: \"formatPhoneNumber\",\n    value: function formatPhoneNumber(number) {\n      var cleaned = ('' + number).replace(/\\D/g, '');\n      var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n      if (match) {\n        return '(' + match[1] + ') ' + match[2] + '-' + match[3];\n      }\n      return '';\n    }\n  }, {\n    key: \"isElementInViewport\",\n    value: function isElementInViewport(el) {\n      var rect = el.getBoundingClientRect();\n      return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);\n    }\n  }, {\n    key: \"adminBarPresent\",\n    value: function adminBarPresent() {\n      return document.body.classList.contains('admin-bar');\n    }\n  }]);\n}();\n\n//# sourceURL=webpack:///./src/js/components/utilities.js?");
319
320/***/ }),
321
322/***/ "./src/js/site.js":
323/*!************************!*\
324  !*** ./src/js/site.js ***!
325  \************************/
326/*! no exports provided */
327/***/ (function(module, __webpack_exports__, __webpack_require__) {
328
329"use strict";
330eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _glidejs_glide__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @glidejs/glide */ \"./node_modules/@glidejs/glide/dist/glide.esm.js\");\n/* harmony import */ var _components_utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/utilities */ \"./src/js/components/utilities.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _readOnlyError(r) { throw new TypeError('\"' + r + '\" is read-only'); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\nvar KbBSSite = /*#__PURE__*/function () {\n  function KbBSSite() {\n    _classCallCheck(this, KbBSSite);\n  }\n  return _createClass(KbBSSite, [{\n    key: \"run\",\n    value: function run() {\n      this.setEventListeners();\n      this.mountGlideSliders();\n      this.setScrollers();
330\n      this.toggleFloatForm();\n      this.toggleTabs();\n    }\n  }, {\n    key: \"setEventListeners\",\n    value: function setEventListeners() {\n      var _self = this;\n      document.getElementById('to-top').addEventListener('click', function () {\n        _components_utilities__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].scrollToTop();\n      });\n      window.addEventListener('load', function () {\n        _self.openTab(window.location.hash);\n      });\n    }\n  }, {\n    key: \"mountGlideSliders\",\n    value: function mountGlideSliders() {\n      var sliders = document.querySelectorAll('.glide');\n      var heroSlider = document.getElementById('hero-slider');\n      var accouncementSlider = document.getElementById('announcement-glide');\n      var facilitySlider = document.getElementById('facility-glide');\n      if (sliders.length > 0) {\n        new _glidejs_glide__WEBPACK_IMPORTED_MODULE_0__[\"default\"]('.glide', {\n          autoplay: 4000,\n          hoverpause: false,\n          navigation: false\n        }).mount();\n      }\n      if (heroSlider) {\n        var heroCarousel = new _glidejs_glide__WEBPACK_IMPORTED_MODULE_0__[\"default\"](heroSlider, {\n          type: 'carousel',\n          perView: 1,\n          autoplay: false,\n          navigation: true\n        }).mount();\n      }\n      if (accouncementSlider) {\n        var annCarousel = new _glidejs_glide__WEBPACK_IMPORTED_MODULE_0__[\"default\"](accouncementSlider, {\n          type: 'carousel',\n          perView: 3,\n          autoplay: false,\n          navigation: true,\n          breakpoints: {\n            1060: {\n              perView: 2\n            },\n            768: {\n              perView: 1\n            }\n          }\n        }).mount();\n      }\n      if (facilitySlider) {\n        var facilityCarousel = new _glidejs_glide__WEBPACK_IMPORTED_MODULE_0__[\"default\"](facilitySlider, {\n          type: 'carousel',\n          perView: 5,\n          autoplay: false,\n          navigation: true,\n          breakpoints: {\n            1060: {\n              perView: 3\n            },\n            768: {\n              perView: 2\n            }\n          }\n        }).mount();\n      }\n    }\n\n    /**\r\n     * Open tab in tab list.\r\n     *\r\n     * @param urlHash\r\n     */\n  }, {\n    key: \"openTab\",\n    value: function openTab(urlHash) {\n      var hashElem = document.querySelector(\"a[href='\" + urlHash + \"']\");\n      if (hashElem) {\n        hashElem.click();\n        this.scrollTo(urlHash.replace(/#/, \"\"));\n      }\n    }\n  }, {\n    key: \"setScrollers\",\n    value: function setScrollers() {\n      var _this = this;\n      var links = document.querySelectorAll('.scroller');\n      links.forEach(function (each) {\n        return each.onclick = _this.scrollAnchors;\n      });\n    }\n  }, {\n    key: \"scrollAnchors\",\n    value: function scrollAnchors(e) {\n      var respond = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n      var distanceToTop = function distanceToTop(el) {\n        return Math.floor(el.getBoundingClientRect().top) - offset;\n      };\n      e.preventDefault();\n      var targetID = respond ? respond.getAttribute('href') : this.getAttribute('href');\n      var targetAnchor = document.querySelector(targetID);\n      if (!targetAnchor) return;\n      var originalTop = distanceToTop(targetAnchor);\n      window.scrollBy({\n        top: originalTop,\n        left: 0,\n        behavior: 'smooth'\n      });\n      var checkIfDone = setInterval(function () {\n        var atBottom = window.innerHeight + window.pageYOffset >= document.body.offsetHeight - 2;\n        if (distanceToTop(targetAnchor) === 0 || atBottom) {\n          targetAnchor.tabIndex = '-1';\n          targetAnchor.focus();\n          window.history.pushState('', '', targetID);\n          clearInterval(checkIfDone);\n        }\n      }, 500);\n    }\n\n    /**\r\n     * Scroll to element by id\r\n     *\r\n     * @param elementID\r\n     * @param duration\r\n     */\n  }, {\n    key: \"scrollTo\",\n    value: function scrollTo(elementID) {\n      var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 250;\n      var scrollInterval = setInterval(function () {\n        var scrollElem = document.getElementById(elementID);\n        if (!scrollElem) {\n          return;\n        }\n        var elemRect = scrollElem.getBoundingClientRect();\n        var bodyRect = document.body.getBoundingClientRect();\n        var windowPos = !window.scrollY ? window.pageYOffset : window.scrollY;\n        var offset = elemRect.top - bodyRect.top;\n        var scrollStep = offset / (duration / 15);\n        if (windowPos + 350 <= offset) {\n          window.scrollBy(0, scrollStep);\n        } else {\n          clearInterval(scrollInterval);\n        }\n      }, 15);\n    }\n  }, {\n    key: \"toggleFloatForm\",\n    value: function toggleFloatForm(
330) {\n      var toggleFloatForm = document.getElementById(\"toggle-float-form\");\n      var floatForm = document.getElementById(\"float-form\");\n      var closeFloatForm = document.getElementById(\"close-float-form\");\n      if (floatForm !== null) {\n        toggleFloatForm.addEventListener(\"click\", function () {\n          if (floatForm.classList.contains(\"active\")) {\n            floatForm.classList.remove(\"active\");\n          } else {\n            floatForm.classList.add(\"active\");\n          }\n        });\n      }\n      if (floatForm !== null) {\n        closeFloatForm.addEventListener(\"click\", function () {\n          floatForm.classList.remove(\"active\");\n        });\n      }\n    }\n\n    /**\r\n     * Setup up toggle tabs\r\n     */\n  }, {\n    key: \"toggleTabs\",\n    value: function toggleTabs() {\n      var _this2 = this;\n      // Get all toggle tab activators\n      var tabActivators = document.querySelectorAll(\"[data-toggle='tab']\");\n      if (tabActivators.length) {\n        // Setup event listener for all activators\n        tabActivators.forEach(function (activator) {\n          // On click switch tabs\n          activator.addEventListener(\"click\", _this2.switchTab.bind(_this2));\n        });\n      }\n    }\n\n    /**\r\n     * Switch tab and content pane on click\r\n     *\r\n     * @param e\r\n     */\n  }, {\n    key: \"switchTab\",\n    value: function switchTab(e) {\n      // Prevent default screen jump to by href\n      e.preventDefault();\n\n      // Get all tab panes\n      var tabPanes = document.querySelectorAll(\".tab-pane\");\n\n      // Get the id to activate from the activator href. We have to strip the # from the value\n      var activeId = e.target.getAttribute(\"href\").replace(\"#\", \"\");\n\n      // Remove active class from all tabs\n      this.deactivateTabs();\n\n      // Find the parent of the active element clicked and add the active class\n      e.target.closest(\"li\").classList.add(\"active\");\n\n      // Remove the active class from all the panes that contain content\n      Array.from(tabPanes).filter(function (pane) {\n        return pane.classList.remove(\"active\");\n      });\n\n      // Add active class to the content pane we want to see\n      document.getElementById(activeId).classList.add(\"active\");\n    }\n\n    /**\r\n     * Remove active class from all tabs\r\n     */\n  }, {\n    key: \"deactivateTabs\",\n    value: function deactivateTabs() {\n      // Get all tab activators\n      var tabs = document.querySelectorAll(\"[data-tabs='tabs'] li\");\n      if (tabs.length) {\n        // Remove active class from all activator tabs\n        Array.from(tabs).filter(function (tab) {\n          return tab.classList.remove(\"active\");\n        });\n      }\n    }\n  }]);\n}();\nvar site = new KbBSSite();\nsite.run();\n\n//# sourceURL=webpack:///./src/js/site.js?");
331
332/***/ }),
333
334/***/ "./src/scss/app.scss":
335/*!***************************!*\
336  !*** ./src/scss/app.scss ***!
337  \***************************/
338/*! no static exports found */
339/***/ (function(module, exports, __webpack_require__) {
340
341eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/scss/app.scss?");
342
343/***/ })
343,
344
345/***/ 0:
346/*!*************************************************!*\
347  !*** multi ./src/js/app.js ./src/scss/app.scss ***!
348  \*************************************************/
349/*! no static exports found */
350/***/ (function(module, exports, __webpack_require__) {
351
352eval("__webpack_require__(/*! ./src/js/app.js */\"./src/js/app.js\");\nmodule.exports = __webpack_require__(/*! ./src/scss/app.scss */\"./src/scss/app.scss\");\n\n\n//# sourceURL=webpack:///multi_./src/js/app.js_./src/scss/app.scss?");
353
354/***/ })
355
356/******/ });

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.