PageSourceSearch

https://rasev.ru/js/e14b8c3cf.js

js rasev.ru collected 2026-10-05 00:18:07 UTC 632,030 bytes, 21,182 lines download raw bytes

vendor: 4,773 bytes, lines 1-128
1/*!
2 * Webflow: Front-end site library
3 * @license MIT
4 * Inline scripts may access the api using an async handler:
5 *   var Webflow = Webflow || [];
6 *   Webflow.push(readyFunction);
7 */
8/******/ (function(modules) { // webpackBootstrap
9/******/ 	// The module cache
10/******/ 	var installedModules = {};
11/******/
12/******/ 	// The require function
13/******/ 	function __webpack_require__(moduleId) {
14/******/
15/******/ 		// Check if module is in cache
16/******/ 		if(installedModules[moduleId]) {
17/******/ 			return installedModules[moduleId].exports;
18/******/ 		}
19/******/ 		// Create a new module (and put it into the cache)
20/******/ 		var module = installedModules[moduleId] = {
21/******/ 			i: moduleId,
22/******/ 			l: false,
23/******/ 			exports: {}
24/******/ 		};
25/******/
26/******/ 		// Execute the module function
27/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
28/******/
29/******/ 		// Flag the module as loaded
30/******/ 		module.l = true;
31/******/
32/******/ 		// Return the exports of the module
33/******/ 		return module.exports;
34/******/ 	}
35/******/
36/******/
37/******/ 	// expose the modules object (__webpack_modules__)
38/******/ 	__webpack_require__.m = modules;
39/******/
40/******/ 	// expose the module cache
41/******/ 	__webpack_require__.c = installedModules;
42/******/
43/******/ 	// define getter function for harmony exports
44/******/ 	__webpack_require__.d = function(exports, name, getter) {
45/******/ 		if(!__webpack_require__.o(exports, name)) {
46/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
47/******/ 		}
48/******/ 	};
49/******/
50/******/ 	// define __esModule on exports
51/******/ 	__webpack_require__.r = function(exports) {
52/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
53/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
54/******/ 		}
55/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
56/******/ 	};
57/******/
58/******/ 	// create a fake namespace object
59/******/ 	// mode & 1: value is a module id, require it
60/******/ 	// mode & 2: merge all properties of value into the ns
61/******/ 	// mode & 4: return value when already ns object
62/******/ 	// mode & 8|1: behave like require
63/******/ 	__webpack_require__.t = function(value, mode) {
64/******/ 		if(mode & 1) value = __webpack_require__(value);
65/******/ 		if(mode & 8) return value;
66/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
67/******/ 		var ns = Object.create(null);
68/******/ 		__webpack_require__.r(ns);
69/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
70/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
71/******/ 		return ns;
72/******/ 	};
73/******/
74/******/ 	// getDefaultExport function for compatibility with non-harmony modules
75/******/ 	__webpack_require__.n = function(module) {
76/******/ 		var getter = module && module.__esModule ?
77/******/ 			function getDefault() { return module['default']; } :
78/******/ 			function getModuleExports() { return module; };
79/******/ 		__webpack_require__.d(getter, 'a', getter);
80/******/ 		return getter;
81/******/ 	};
82/******/
83/******/ 	// Object.prototype.hasOwnProperty.call
84/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
85/******/
86/******/ 	// __webpack_public_path__
87/******/ 	__webpack_require__.p = "";
88/******/
89/******/
90/******/ 	// Load entry module and return exports
91/******/ 	return __webpack_require__(__webpack_require__.s = 129);
92/******/ })
93/************************************************************************/
94/******/ ([
95/* 0 */
96/***/ (function(module, exports) {
97
98function _interopRequireDefault(obj) {
99  return obj && obj.__esModule ? obj : {
100    "default": obj
101  };
102}
103
104module.exports = _interopRequireDefault;
105
106/***/ }),
107/* 1 */
108/***/ (function(module, exports, __webpack_require__) {
109
110/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {
111  return it && it.Math == Math && it;
112};
113
114// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
115module.exports =
116  // eslint-disable-next-line es/no-global-this -- safe
117  check(typeof globalThis == 'object' && globalThis) ||
118  check(typeof window == 'object' && window) ||
119  // eslint-disable-next-line no-restricted-globals -- safe
120  check(typeof self == 'object' && self) ||
121  check(typeof global == 'object' && global) ||
122  // eslint-disable-next-line no-new-func -- fallback
123  (function () { return this; })() || Function('return this')();
124
125/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
126
127/***/ }),
128/* 2 */
129/***/ (function(module, exports) {
130
131/**
132 * Checks if `value` is classified as an `Array` object.
133 *
134 * @static
135 * @memberOf _
136 * @since 0.1.0
137 * @category Lang
138 * @param {*} value The value to check.
139 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
140 * @example
141 *
142 * _.isArray([1, 2, 3]);
143 * // => true
144 *
145 * _.isArray(document.body.children);
146 * // => false
147 *
148 * _.isArray('abc');
149 * // => false
150 *
151 * _.isArray(_.noop);
152 * // => false
153 */
154var isArray = Array.isArray;
155
156module.exports = isArray;
157
158
159/***/ }),
160/* 3 */
161/***/ (function(module, exports, __webpack_require__) {
162
163"use strict";
164 // @wf-will-never-add-flow-to-this-file
165
166/* globals window, document, navigator, WEBFLOW_ENV_TEST */
167
168/* eslint-disable no-var */
169
170/**
171 * Webflow: Core site library
172 */
173
174var Webflow = {};
175var modules = {};
176var primary = [];
177var secondary = window.Webflow || [];
178var $ = window.jQuery;
179var $win = $(window);
180var $doc = $(document);
181var isFunction = $.isFunction;
182
183var _ = Webflow._ = __webpack_require__(133);
184
185var tram = Webflow.tram = __webpack_require__(69) && $.tram;
186var domready = false;
187var destroyed = false;
188tram.config.hideBackface = false;
189tram.config.keepInherited = true;
190/**
191 * Webflow.define - Define a named module
192 * @param  {string} name
193 * @param  {function} factory
194 * @param  {object} options
195 * @return {object}
196 */
197
198Webflow.define = function (name, factory, options) {
199  if (modules[name]) {
200    unbindModule(modules[name]);
201  }
202
203  var instance = modules[name] = factory($, _, options) || {};
204  bindModule(instance);
205  return instance;
206};
207/**
208 * Webflow.require - Require a named module
209 * @param  {string} name
210 * @return {object}
211 */
212
213
214Webflow.require = function (name) {
215  return modules[name];
216};
217
218function bindModule(module) {
219  // If running in Webflow app, subscribe to design/preview events
220  if (Webflow.env()) {
221    isFunction(module.design) && $win.on('__wf_design', module.design);
222    isFunction(module.preview) && $win.on('__wf_preview', module.preview);
223  } // Subscribe to front-end destroy event
224
225
226  isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy); // Look for ready method on module
227
228  if (module.ready && isFunction(module.ready)) {
229    addReady(module);
230  }
231}
232
233function addReady(module) {
234  // If domready has already happened, run ready method
235  if (domready) {
236    module.ready();
237    return;
238  } // Otherwise add ready method to the primary queue (only once)
239
240
241  if (_.contains(primary, module.ready)) {
242    return;
243  }
244
245  primary.push(module.ready);
246}
247
248function unbindModule(module) {
249  // Unsubscribe module from window events
250  isFunction(module.design) && $win.off('__wf_design', module.design);
251  isFunction(module.preview) && $win.off('__wf_preview', module.preview);
252  isFunction(module.destroy) && $win.off('__wf_destroy', module.destroy); // Remove ready method from primary queue
253
254  if (module.ready && isFunction(module.ready)) {
255    removeReady(module);
256  }
257}
258
259function removeReady(module) {
260  primary = _.filter(primary, function (readyFn) {
261    return readyFn !== module.ready;
262  });
263}
264/**
265 * Webflow.push - Add a ready handler into secondary queue
266 * @param {function} ready  Callback to invoke on domready
267 */
268
269
270Webflow.push = function (ready) {
271  // If domready has already happened, invoke handler
272  if (domready) {
273    isFunction(ready) && ready();
274    return;
275  } // Otherwise push into secondary queue
276
277
278  secondary.push(ready);
279};
280/**
281 * Webflow.env - Get the state of the Webflow app
282 * @param {string} mode [optional]
283 * @return {boolean}
284 */
285
286
287Webflow.env = function (mode) {
288  var designFlag = window.__wf_design;
289  var inApp = typeof designFlag !== 'undefined';
290
291  if (!mode) {
292    return inApp;
293  }
294
295  if (mode === 'design') {
296    return inApp && designFlag;
297  }
298
299  if (mode === 'preview') {
300    return inApp && !designFlag;
301  }
302
303  if (mode === 'slug') {
304    return inApp && window.__wf_slug;
305  }
306
307  if (mode === 'editor') {
308    return window.WebflowEditor;
309  }
310
311  if (mode === 'test') {
312    return  false || window.__wf_test;
313  }
314
315  if (mode === 'frame') {
316    return window !== window.top;
317  }
318}; // Feature detects + browser sniffs  ಠ_ಠ
319
320
321var userAgent = navigator.userAgent.toLowerCase();
322var touch = Webflow.env.touch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch;
323var chrome = Webflow.env.chrome = /chrome/.test(userAgent) && /Google/.test(navigator.vendor) && parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10);
324var ios = Webflow.env.ios = /(ipod|iphone|ipad)/.test(userAgent);
325Webflow.env.safari = /safari/.test(userAgent) && !chrome && !ios; // Maintain current touch target to prevent late clicks on touch devices
326
327var touchTarget; // Listen for both events to support touch/mouse hybrid devices
328
329touch && $doc.on('touchstart mousedown', function (evt) {
330  touchTarget = evt.target;
331});
332/**
333 * Webflow.validClick - validate click target against current touch target
334 * @param  {HTMLElement} clickTarget  Element being clicked
335 * @return {Boolean}  True if click target is valid (always true on non-touch)
336 */
337
338Webflow.validClick = touch ? function (clickTarget) {
339  return clickTarget === touchTarget || $.contains(clickTarget, touchTarget);
340} : function () {
341  return true;
342};
343/**
344 * Webflow.resize, Webflow.scroll - throttled event proxies
345 */
346
347var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
348var scrollEvents = 'scroll.webflow ' + resizeEvents;
349Webflow.resize = eventProxy($win, resizeEvents);
350Webflow.scroll = eventProxy($win, scrollEvents);
351Webflow.redraw = eventProxy(); // Create a proxy instance for throttled events
352
353function eventProxy(target, types) {
354  // Set up throttled method (using custom frame-based _.throttle)
355  var handlers = [];
356  var proxy = {};
357  proxy.up = _.throttle(function (evt) {
358    _.each(handlers, function (h) {
359      h(evt);
360    });
361  }); // Bind events to target
362
363  if (target && types) {
364    target.on(types, proxy.up);
365  }
366  /**
367   * Add an event handler
368   * @param  {function} handler
369   */
370
371
372  proxy.on = function (handler) {
373    if (typeof handler !== 'function') {
374      return;
375    }
376
377    if (_.contains(handlers, handler)) {
378      return;
379    }
380
381    handlers.push(handler);
382  };
383  /**
384   * Remove an event handler
385   * @param  {function} handler
386   */
387
388
389  proxy.off = function (handler) {
390    // If no arguments supplied, clear all handlers
391    if (!arguments.length) {
392      handlers = [];
393      return;
394    } // Otherwise, remove handler from the list
395
396
397    handlers = _.filter(handlers, function (h) {
398      return h !== handler;
399    });
400  };
401
402  return proxy;
403} // Webflow.location - Wrap window.location in api
404
405
406Webflow.location = function (url) {
407  window.location = url;
408};
409
410if (Webflow.env()) {
411  // Ignore redirects inside a Webflow design/edit environment
412  Webflow.location = function () {};
413} // Webflow.ready - Call primary and secondary handlers
414
415
416Webflow.ready = function () {
417  domready = true; // Restore modules after destroy
418
419  if (destroyed) {
420    restoreModules(); // Otherwise run primary ready methods
421  } else {
422    _.each(primary, callReady);
423  } // Run secondary ready methods
424
425
426  _.each(secondary, callReady); // Trigger resize
427
428
429  Webflow.resize.up();
430};
431
432function callReady(readyFn) {
433  isFunction(readyFn) && readyFn();
434}
435
436function restoreModules() {
437  destroyed = false;
438
439  _.each(modules, bindModule);
440}
441/**
442 * Webflow.load - Add a window load handler that will run even if load event has already happened
443 * @param  {function} handler
444 */
445
446
447var deferLoad;
448
449Webflow.load = function (handler) {
450  deferLoad.then(handler);
451};
452
453function bindLoad() {
454  // Reject any previous deferred (to support destroy)
455  if (deferLoad) {
456    deferLoad.reject();
457    $win.off('load', deferLoad.resolve);
458  } // Create deferred and bind window load event
459
460
461  deferLoad = new $.Deferred();
462  $win.on('load', deferLoad.resolve);
463} // Webflow.destroy - Trigger a destroy event for all modules
464
465
466Webflow.destroy = function (options) {
467  options = options || {};
468  destroyed = true;
469  $win.triggerHandler('__wf_destroy'); // Allow domready reset for tests
470
471  if (options.domready != null) {
472    domready = options.domready;
473  } // Unbind modules
474
475
476  _.each(modules, unbindModule); // Clear any proxy event handlers
477
478
479  Webflow.resize.off();
480  Webflow.scroll.off();
481  Webflow.redraw.off(); // Clear any queued ready methods
482
483  primary = [];
484  secondary = []; // If load event has not yet fired, replace the deferred
485
486  if (deferLoad.state() === 'pending') {
487    bindLoad();
488  }
489}; // Listen for domready
490
491
492$(Webflow.ready); // Listen for window.onload and resolve deferred
493
494bindLoad(); // Export commonjs module
495
496module.exports = window.Webflow = Webflow;
497
498/***/ }),
499/* 4 */
500/***/ (function(module, exports, __webpack_require__) {
501
502"use strict";
503
504
505var _interopRequireWildcard = __webpack_require__(18);
506
507Object.defineProperty(exports, "__esModule", {
508  value: true
509});
510var _exportNames = {
511  IX2EngineActionTypes: true,
512  IX2EngineConstants: true
513};
514exports.IX2EngineConstants = exports.IX2EngineActionTypes = void 0;
515
516var _triggerEvents = __webpack_require__(190);
517
518Object.keys(_triggerEvents).forEach(function (key) {
519  if (key === "default" || key === "__esModule") return;
520  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
521  Object.defineProperty(exports, key, {
522    enumerable: true,
523    get: function get() {
524      return _triggerEvents[key];
525    }
526  });
527});
528
529var _animationActions = __webpack_require__(94);
530
531Object.keys(_animationActions).forEach(function (key) {
532  if (key === "default" || key === "__esModule") return;
533  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
534  Object.defineProperty(exports, key, {
535    enumerable: true,
536    get: function get() {
537      return _animationActions[key];
538    }
539  });
540});
541
542var _triggerInteractions = __webpack_require__(191);
543
544Object.keys(_triggerInteractions).forEach(function (key) {
545  if (key === "default" || key === "__esModule") return;
546  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
547  Object.defineProperty(exports, key, {
548    enumerable: true,
549    get: function get() {
550      return _triggerInteractions[key];
551    }
552  });
553});
554
555var _reducedMotion = __webpack_require__(192);
556
557Object.keys(_reducedMotion).forEach(function (key) {
558  if (key === "default" || key === "__esModule") return;
559  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
560  Object.defineProperty(exports, key, {
561    enumerable: true,
562    get: function get() {
563      return _reducedMotion[key];
564    }
565  });
566});
567
568var IX2EngineActionTypes = _interopRequireWildcard(__webpack_require__(193));
569
570exports.IX2EngineActionTypes = IX2EngineActionTypes;
571
572var IX2EngineConstants = _interopRequireWildcard(__webpack_require__(194));
573
574exports.IX2EngineConstants = IX2EngineConstants;
575
576/***/ }),
577/* 5 */
578/***/ (function(module, exports) {
579
580var FunctionPrototype = Function.prototype;
581var bind = FunctionPrototype.bind;
582var call = FunctionPrototype.call;
583var callBind = bind && bind.bind(call);
584
585module.exports = bind ? function (fn) {
586  return fn && callBind(call, fn);
587} : function (fn) {
588  return fn && function () {
589    return call.apply(fn, arguments);
590  };
591};
592
593
594/***/ }),
595/* 6 */
596/***/ (function(module, exports, __webpack_require__) {
597
598var freeGlobal = __webpack_require__(99);
599
600/** Detect free variable `self`. */
601var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
602
603/** Used as a reference to the global object. */
604var root = freeGlobal || freeSelf || Function('return this')();
605
606module.exports = root;
607
608
609/***/ }),
610/* 7 */
611/***/ (function(module, exports) {
612
613// `IsCallable` abstract operation
614// https://tc39.es/ecma262/#sec-iscallable
615module.exports = function (argument) {
616  return typeof argument == 'function';
617};
618
619
620/***/ }),
621/* 8 */
622/***/ (function(module, exports) {
623
624/**
625 * Checks if `value` is the
626 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
627 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
628 *
629 * @static
630 * @memberOf _
631 * @since 0.1.0
632 * @category Lang
633 * @param {*} value The value to check.
634 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
635 * @example
636 *
637 * _.isObject({});
638 * // => true
639 *
640 * _.isObject([1, 2, 3]);
641 * // => true
642 *
643 * _.isObject(_.noop);
644 * // => true
645 *
646 * _.isObject(null);
647 * // => false
648 */
649function isObject(value) {
650  var type = typeof value;
651  return value != null && (type == 'object' || type == 'function');
652}
653
654module.exports = isObject;
655
656
657/***/ }),
658/* 9 */
659/***/ (function(module, exports, __webpack_require__) {
660
661var uncurryThis = __webpack_require__(5);
662var toObject = __webpack_require__(158);
663
664var hasOwnProperty = uncurryThis({}.hasOwnProperty);
665
666// `HasOwnProperty` abstract operation
667// https://tc39.es/ecma262/#sec-hasownproperty
668module.exports = Object.hasOwn || function hasOwn(it, key) {
669  return hasOwnProperty(toObject(it), key);
670};
671
672
673/***/ }),
674/* 10 */
675/***/ (function(module, exports, __webpack_require__) {
676
677var baseMatches = __webpack_require__(197),
678    baseMatchesProperty = __webpack_require__(251),
679    identity = __webpack_require__(63),
680    isArray = __webpack_require__(2),
681    property = __webpack_require__(260);
682
683/**
684 * The base implementation of `_.iteratee`.
685 *
686 * @private
687 * @param {*} [value=_.identity] The value to convert to an iteratee.
688 * @returns {Function} Returns the iteratee.
689 */
690function baseIteratee(value) {
691  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
692  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
693  if (typeof value == 'function') {
694    return value;
695  }
696  if (value == null) {
697    return identity;
698  }
699  if (typeof value == 'object') {
700    return isArray(value)
701      ? baseMatchesProperty(value[0], value[1])
702      : baseMatches(value);
703  }
704  return property(value);
705}
706
707module.exports = baseIteratee;
708
709
710/***/ }),
711/* 11 */
712/***/ (function(module, exports, __webpack_require__) {
713
714var baseIsNative = __webpack_require__(209),
715    getValue = __webpack_require__(214);
716
717/**
718 * Gets the native function at `key` of `object`.
719 *
720 * @private
721 * @param {Object} object The object to query.
722 * @param {string} key The key of the method to get.
723 * @returns {*} Returns the function if it's native, else `undefined`.
724 */
725function getNative(object, key) {
726  var value = getValue(object, key);
727  return baseIsNative(value) ? value : undefined;
728}
729
730module.exports = getNative;
731
732
733/***/ }),
734/* 12 */
vendor: 2,251 bytes, lines 735-815
735/***/ (function(module, exports) {
736
737/**
738 * Checks if `value` is object-like. A value is object-like if it's not `null`
739 * and has a `typeof` result of "object".
740 *
741 * @static
742 * @memberOf _
743 * @since 4.0.0
744 * @category Lang
745 * @param {*} value The value to check.
746 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
747 * @example
748 *
749 * _.isObjectLike({});
750 * // => true
751 *
752 * _.isObjectLike([1, 2, 3]);
753 * // => true
754 *
755 * _.isObjectLike(_.noop);
756 * // => false
757 *
758 * _.isObjectLike(null);
759 * // => false
760 */
761function isObjectLike(value) {
762  return value != null && typeof value == 'object';
763}
764
765module.exports = isObjectLike;
766
767
768/***/ }),
769/* 13 */
770/***/ (function(module, exports) {
771
772function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
773
774function _typeof(obj) {
775  if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
776    module.exports = _typeof = function _typeof(obj) {
777      return _typeof2(obj);
778    };
779  } else {
780    module.exports = _typeof = function _typeof(obj) {
781      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
782    };
783  }
784
785  return _typeof(obj);
786}
787
788module.exports = _typeof;
789
790/***/ }),
791/* 14 */
792/***/ (function(module, exports, __webpack_require__) {
793
794var fails = __webpack_require__(19);
795
796// Detect IE8's incomplete defineProperty implementation
797module.exports = !fails(function () {
798  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
799  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
800});
801
802
803/***/ }),
804/* 15 */
805/***/ (function(module, exports, __webpack_require__) {
806
807"use strict";
808
809
810var _interopRequireWildcard = __webpack_require__(18);
811
812Object.defineProperty(exports, "__esModule", {
813  value: true
814});
815exports.IX2VanillaUtils = exports.IX2VanillaPlugins = exports.IX2ElementsReducer = exports.IX2EasingUtils = exports.IX2Easings = exp
815orts.IX2BrowserSupport = void 0;
816
817var IX2BrowserSupport = _interopRequireWildcard(__webpack_require__(48));
818
819exports.IX2BrowserSupport = IX2BrowserSupport;
820
821var IX2Easings = _interopRequireWildcard(__webpack_require__(116));
822
823exports.IX2Easings = IX2Easings;
824
825var IX2EasingUtils = _interopRequireWildcard(__webpack_require__(118));
826
827exports.IX2EasingUtils = IX2EasingUtils;
828
829var IX2ElementsReducer = _interopRequireWildcard(__webpack_require__(269));
830
831exports.IX2ElementsReducer = IX2ElementsReducer;
832
833var IX2VanillaPlugins = _interopRequireWildcard(__webpack_require__(120));
834
835exports.IX2VanillaPlugins = IX2VanillaPlugins;
836
837var IX2VanillaUtils = _interopRequireWildcard(__webpack_require__(271));
838
839exports.IX2VanillaUtils = IX2VanillaUtils;
840
841/***/ }),
842/* 16 */
843/***/ (function(module, exports, __webpack_require__) {
844
845var Symbol = __webpack_require__(23),
846    getRawTag = __webpack_require__(210),
847    objectToString = __webpack_require__(211);
848
849/** `Object#toString` result references. */
850var nullTag = '[object Null]',
851    undefinedTag = '[object Undefined]';
852
853/** Built-in value references. */
854var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
855
856/**
857 * The base implementation of `getTag` without fallbacks for buggy environments.
858 *
859 * @private
860 * @param {*} value The value to query.
861 * @returns {string} Returns the `toStringTag`.
862 */
863function baseGetTag(value) {
864  if (value == null) {
865    return value === undefined ? undefinedTag : nullTag;
866  }
867  return (symToStringTag && symToStringTag in Object(value))
868    ? getRawTag(value)
869    : objectToString(value);
870}
871
872module.exports = baseGetTag;
873
874
875/***/ }),
876/* 17 */
877/***/ (function(module, exports, __webpack_require__) {
878
879var isFunction = __webpack_require__(98),
880    isLength = __webpack_require__(56);
881
882/**
883 * Checks if `value` is array-like. A value is considered array-like if it's
884 * not a function and has a `value.length` that's an integer greater than or
885 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
886 *
887 * @static
888 * @memberOf _
889 * @since 4.0.0
890 * @category Lang
891 * @param {*} value The value to check.
892 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
893 * @example
894 *
895 * _.isArrayLike([1, 2, 3]);
896 * // => true
897 *
898 * _.isArrayLike(document.body.children);
899 * // => true
900 *
901 * _.isArrayLike('abc');
902 * // => true
903 *
904 * _.isArrayLike(_.noop);
905 * // => false
906 */
907function isArrayLike(value) {
908  return value != null && isLength(value.length) && !isFunction(value);
909}
910
911module.exports = isArrayLike;
912
913
914/***/ }),
915/* 18 */
916/***/ (function(module, exports) {
917
918function _interopRequireWildcard(obj) {
919  if (obj && obj.__esModule) {
920    return obj;
921  } else {
922    var newObj = {};
923
924    if (obj != null) {
925      for (var key in obj) {
926        if (Object.prototype.hasOwnProperty.call(obj, key)) {
927          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
928
929          if (desc.get || desc.set) {
930            Object.defineProperty(newObj, key, desc);
931          } else {
932            newObj[key] = obj[key];
933          }
934        }
935      }
936    }
937
938    newObj["default"] = obj;
939    return newObj;
940  }
941}
942
943module.exports = _interopRequireWildcard;
944
945/***/ }),
946/* 19 */
947/***/ (function(module, exports) {
948
949module.exports = function (exec) {
950  try {
951    return !!exec();
952  } catch (error) {
953    return true;
954  }
955};
956
957
958/***/ }),
959/* 20 */
960/***/ (function(module, exports, __webpack_require__) {
961
962var isCallable = __webpack_require__(7);
963
964module.exports = function (it) {
965  return typeof it == 'object' ? it !== null : isCallable(it);
966};
967
968
969/***/ }),
970/* 21 */
971/***/ (function(module, exports) {
972
973function _defineProperty(obj, key, value) {
974  if (key in obj) {
975    Object.defineProperty(obj, key, {
976      value: value,
977      enumerable: true,
978      configurable: true,
979      writable: true
980    });
981  } else {
982    obj[key] = value;
983  }
984
985  return obj;
986}
987
988module.exports = _defineProperty;
989
990/***/ }),
991/* 22 */
992/***/ (function(module, exports, __webpack_require__) {
993
994"use strict";
995
996
997Object.defineProperty(exports, "__esModule", {
998  value: true
999});
1000
1001var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1002
1003exports.clone = clone;
1004exports.addLast = addLast;
1005exports.addFirst = addFirst;
1006exports.removeLast = removeLast;
1007exports.removeFirst = removeFirst;
1008exports.insert = insert;
1009exports.removeAt = removeAt;
1010exports.replaceAt = replaceAt;
1011exports.getIn = getIn;
1012exports.set = set;
1013exports.setIn = setIn;
1014exports.update = update;
1015exports.updateIn = updateIn;
1016exports.merge = merge;
1017exports.mergeDeep = mergeDeep;
1018exports.mergeIn = mergeIn;
1019exports.omit = omit;
1020exports.addDefaults = addDefaults;
1021
1022
1023/*!
1024 * Timm
1025 *
1026 * Immutability helpers with fast reads and acceptable writes.
1027 *
1028 * @copyright Guillermo Grau Panea 2016
1029 * @license MIT
1030 */
1031
1032var INVALID_ARGS = 'INVALID_ARGS';
1033
1034// ===============================================
1035// ### Helpers
1036// ===============================================
1037
1038
1039function throwStr(msg) {
1040  throw new Error(msg);
1041}
1042
1043function getKeysAndSymbols(obj) {
1044  var keys = Object.keys(obj);
1045  if (Object.getOwnPropertySymbols) {
1046    return keys.concat(Object.getOwnPropertySymbols(obj));
1047  }
1048  return keys;
1049}
1050
1051var hasOwnProperty = {}.hasOwnProperty;
1052
1053function clone(obj) {
1054  if (Array.isArray(obj)) return obj.slice();
1055  var keys = getKeysAndSymbols(obj);
1056  var out = {};
1057  for (var i = 0; i < keys.length; i++) {
1058    var key = keys[i];
1059    out[key] = obj[key];
1060  }
1061  return out;
1062}
1063
1064function doMerge(fAddDefaults, fDeep, first) {
1065  var out = first;
1066  !(out != null) && throwStr( false ? undefined : INVALID_ARGS);
1067  var fChanged = false;
1068
1069  for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
1070    rest[_key - 3] = arguments[_key];
1071  }
1072
1073  for (var idx = 0; idx < rest.length; idx++) {
1074    var obj = rest[idx];
1075    if (obj == null) continue;
1076    var keys = getKeysAndSymbols(obj);
1077    if (!keys.length) continue;
1078    for (var j = 0; j <= keys.length; j++) {
1079      var key = keys[j];
1080      if (fAddDefaults && out[key] !== undefined) continue;
1081      var nextVal = obj[key];
1082      if (fDeep && isObject(out[key]) && isObject(nextVal)) {
1083        nextVal = doMerge(fAddDefaults, fDeep, out[key], nextVal);
1084      }
1085      if (nextVal === undefined || nextVal === out[key]) continue;
1086      if (!fChanged) {
1087        fChanged = true;
1088        out = clone(out);
1089      }
1090      out[key] = nextVal;
1091    }
1092  }
1093  return out;
1094}
1095
1096function isObject(o) {
1097  var type = typeof o === 'undefined' ? 'undefined' : _typeof(o);
1098  return o != null && (type === 'object' || type === 'function');
1099}
1100
1101// _deepFreeze = (obj) ->
1102//   Object.freeze obj
1103//   for key in Object.getOwnPropertyNames obj
1104//     val = obj[key]
1105//     if isObject(val) and not Object.isFrozen val
1106//       _deepFreeze val
1107//   obj
1108
1109// ===============================================
1110// -- ### Arrays
1111// ===============================================
1112
1113// -- #### addLast()
1114// -- Returns a new array with an appended item or items.
1115// --
1116// -- Usage: `addLast<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1117// --
1118// -- ```js
1119// -- arr = ['a', 'b']
1120// -- arr2 = addLast(arr, 'c')
1121// -- // ['a', 'b', 'c']
1122// -- arr2 === arr
1123// -- // false
1124// -- arr3 = addLast(arr, ['c', 'd'])
1125// -- // ['a', 'b', 'c', 'd']
1126// -- ```
1127// `array.concat(val)` also handles the scalar case,
1128// but is apparently very slow
1129function addLast(array, val) {
1130  if (Array.isArray(val)) return array.concat(val);
1131  return array.concat([val]);
1132}
1133
1134// -- #### addFirst()
1135// -- Returns a new array with a prepended item or items.
1136// --
1137// -- Usage: `addFirst<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1138// --
1139// -- ```js
1140// -- arr = ['a', 'b']
1141// -- arr2 = addFirst(arr, 'c')
1142// -- // ['c', 'a', 'b']
1143// -- arr2 === arr
1144// -- // false
1145// -- arr3 = addFirst(arr, ['c', 'd'])
1146// -- // ['c', 'd', 'a', 'b']
1147// -- ```
1148function addFirst(array, val) {
1149  if (Array.isArray(val)) return val.concat(array);
1150  return [val].concat(array);
1151}
1152
1153// -- #### removeLast()
1154// -- Returns a new array removing the last item.
1155// --
1156// -- Usage: `removeLast<T>(array: Array<T>): Array<T>`
1157// --
1158// -- ```js
1159// -- arr = ['a', 'b']
1160// -- arr2 = removeLast(arr)
1161// -- // ['a']
1162// -- arr2 === arr
1163// -- // false
1164// --
1165// -- // The same array is returned if there are no changes:
1166// -- arr3 = []
1167// -- removeLast(arr3) === arr3
1168// -- // true
1169// -- ```
1170function removeLast(array) {
1171  if (!array.length) return array;
1172  return array.slice(0, array.length - 1);
1173}
1174
1175// -- #### removeFirst()
1176// -- Returns a new array removing the first item.
1177// --
1178// -- Usage: `removeFirst<T>(array: Array<T>): Array<T>`
1179// --
1180// -- ```js
1181// -- arr = ['a', 'b']
1182// -- arr2 = removeFirst(arr)
1183// -- // ['b']
1184// -- arr2 === arr
1185// -- // false
1186// --
1187// -- // The same array is returned if there are no changes:
1188// -- arr3 = []
1189// -- removeFirst(arr3) === arr3
1190// -- // true
1191// -- ```
1192function removeFirst(array) {
1193  if (!array.length) return array;
1194  return array.slice(1);
1195}
1196
1197// -- #### insert()
1198// -- Returns a new array obtained by inserting an item or items
1199// -- at a specified index.
1200// --
1201// -- Usage: `insert<T>(array: Array<T>, idx: number, val: Array<T>|T): Array<T>`
1202// --
1203// -- ```js
1204// -- arr = ['a', 'b', 'c']
1205// -- arr2 = insert(arr, 1, 'd')
1206// -- // ['a', 'd', 'b', 'c']
1207// -- arr2 === arr
1208// -- // false
1209// -- insert(arr, 1, ['d', 'e'])
1210// -- // ['a', 'd', 'e', 'b', 'c']
1211// -- ```
1212function insert(array, idx, val) {
1213  return array.slice(0, idx).concat(Array.isArray(val) ? val : [val]).concat(array.slice(idx));
1214}
1215
1216// -- #### removeAt()
1217// -- Returns a new array obtained by removing an item at
1218// -- a specified index.
1219// --
1220// -- Usage: `removeAt<T>(array: Array<T>, idx: number): Array<T>`
1221// --
1222// -- ```js
1223// -- arr = ['a', 'b', 'c']
1224// -- arr2 = removeAt(arr, 1)
1225// -- // ['a', 'c']
1226// -- arr2 === arr
1227// -- // false
1228// --
1229// -- // The same array is returned if there are no changes:
1230// -- removeAt(arr, 4) === arr
1231// -- // true
1232// -- ```
1233function removeAt(array, idx) {
1234  if (idx >= array.length || idx < 0) return array;
1235  return array.slice(0, idx).concat(array.slice(idx + 1));
1236}
1237
1238// -- #### replaceAt()
1239// -- Returns a new array obtained by replacing an item at
1240// -- a specified index. If the provided item is the same as
1241// -- (*referentially equal to*) the previous item at that position,
1242// -- the original array is returned.
1243// --
1244// -- Usage: `replaceAt<T>(array: Array<T>, idx: number, newItem: T): Array<T>`
1245// --
1246// -- ```js
1247// -- arr = ['a', 'b', 'c']
1248// -- arr2 = replaceAt(arr, 1, 'd')
1249// -- // ['a', 'd', 'c']
1250// -- arr2 === arr
1251// -- // false
1252// --
1253// -- // The same object is returned if there are no changes:
1254// -- replaceAt(arr, 1, 'b') === arr
1255// -- // true
1256// -- ```
1257function replaceAt(array, idx, newItem) {
1258  if (array[idx] === newItem) return array;
1259  var len = array.length;
1260  var result = Array(len);
1261  for (var i = 0; i < len; i++) {
1262    result[i] = array[i];
1263  }
1264  result[idx] = newItem;
1265  return result;
1266}
1267
1268// ===============================================
1269// -- ### Collections (objects and arrays)
1270// ===============================================
1271// -- The following types are used throughout this section
1272// -- ```js
1273// -- type ArrayOrObject = Array<any>|Object;
1274// -- type Key = number|string;
1275// -- ```
1276
1277// -- #### getIn()
1278// -- Returns a value from an object at a given path. Works with
1279// -- nested arrays and objects. If the path does not exist, it returns
1280// -- `undefined`.
1281// --
1282// -- Usage: `getIn(obj: ?ArrayOrObject, path: Array<Key>): any`
1283// --
1284// -- ```js
1285// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: ['a', 'b', 'c'] }
1286// -- getIn(obj, ['d', 'd1'])
1287// -- // 3
1288// -- getIn(obj, ['e', 1])
1289// -- // 'b'
1290// -- ```
1291function getIn(obj, path) {
1292  !Array.isArray(path) && throwStr( false ? undefined : INVALID_ARGS);
1293  if (obj == null) return undefined;
1294  var ptr = obj;
1295  for (var i = 0; i < path.length; i++) {
1296    var key = path[i];
1297    ptr = ptr != null ? ptr[key] : undefined;
1298    if (ptr === undefined) return ptr;
1299  }
1300  return ptr;
1301}
1302
1303// -- #### set()
1304// -- Returns a new object with a modified attribute.
1305// -- If the provided value is the same as (*referentially equal to*)
1306// -- the previous value, the original object is returned.
1307// --
1308// -- Usage: `set<T>(obj: ?T, key: Key, val: any): T`
1309// --
1310// -- ```js
1311// -- obj = { a: 1, b: 2, c: 3 }
1312// -- obj2 = set(obj, 'b', 5)
1313// -- // { a: 1, b: 5, c: 3 }
1314// -- obj2 === obj
1315// -- // false
1316// --
1317// -- // The same object is returned if there are no changes:
1318// -- set(obj, 'b', 2) === obj
1319// -- // true
1320// -- ```
1321function set(obj, key, val) {
1322  var fallback = typeof key === 'number' ? [] : {};
1323  var finalObj = obj == null ? fallback : obj;
1324  if (finalObj[key] === val) return finalObj;
1325  var obj2 = clone(finalObj);
1326  obj2[key] = val;
1327  return obj2;
1328}
1329
1330// -- #### setIn()
1331// -- Returns a new object with a modified **nested** attribute.
1332// --
1333// -- Notes:
1334// --
1335// -- * If the provided value is the same as (*referentially equal to*)
1336// -- the previous value, the original object is returned.
1337// -- * If the path does not exist, it will be created before setting
1338// -- the new value.
1339// --
1340// -- Usage: `setIn<T: ArrayOrObject>(obj: T, path: Array<Key>, val: any): T`
1341// --
1342// -- ```js
1343// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1344// -- obj2 = setIn(obj, ['d', 'd1'], 4)
1345// -- // { a: 1, b: 2, d: { d1: 4, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1346// -- obj2 === obj
1347// -- // false
1348// -- obj2.d === obj.d
1349// -- // false
1350// -- obj2.e === obj.e
1351// -- // true
1352// --
1353// -- // The same object is returned if there are no changes:
1354// -- obj3 = setIn(obj, ['d', 'd1'], 3)
1355// -- // { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1356// -- obj3 === obj
1357// -- // true
1358// -- obj3.d === obj.d
1359// -- // true
1360// -- obj3.e === obj.e
1361// -- // true
1362// --
1363// -- // ... unknown paths create intermediate keys. Numeric segments are treated as array indices:
1364// -- setIn({ a: 3 }, ['unknown', 0, 'path'], 4)
1365// -- // { a: 3, unknown: [{ path: 4 }] }
1366// -- ```
1367function doSetIn(obj, path, val, idx) {
1368  var newValue = void 0;
1369  var key = path[idx];
1370  if (idx === path.length - 1) {
1371    newValue = val;
1372  } else {
1373    var nestedObj = isObject(obj) && isObject(obj[key]) ? obj[key] : typeof path[idx + 1] === 'number' ? [] : {};
1374    newValue = doSetIn(nestedObj, path, val, idx + 1);
1375  }
1376  return set(obj, key, newValue);
1377}
1378
1379function setIn(obj, path, val) {
1380  if (!path.length) return val;
1381  return doSetIn(obj, path, val, 0);
1382}
1383
1384// -- #### update()
1385// -- Returns a new object with a modified attribute,
1386// -- calculated via a user-provided callback based on the current value.
1387// -- If the calculated value is the same as (*referentially equal to*)
1388// -- the previous value, the original object is returned.
1389// --
1390// -- Usage: `update<T: ArrayOrObject>(obj: T, key: Key,
1391// -- fnUpdate: (prevValue: any) => any): T`
1392// --
1393// -- ```js
1394// -- obj = { a: 1, b: 2, c: 3 }
1395// -- obj2 = update(obj, 'b', (val) => val + 1)
1396// -- // { a: 1, b: 3, c: 3 }
1397// -- obj2 === obj
1398// -- // false
1399// --
1400// -- // The same object is returned if there are no changes:
1401// -- update(obj, 'b', (val) => val) === obj
1402// -- // true
1403// -- ```
1404function update(obj, key, fnUpdate) {
1405  var prevVal = obj == null ? undefined : obj[key];
1406  var nextVal = fnUpdate(prevVal);
1407  return set(obj, key, nextVal);
1408}
1409
1410// -- #### updateIn()
1411// -- Returns a new object with a modified **nested** attribute,
1412// -- calculated via a user-provided callback based on the current value.
1413// -- If the calculated value is the same as (*referentially equal to*)
1414// -- the previous value, the original object is returned.
1415// --
1416// -- Usage: `updateIn<T: ArrayOrObject>(obj: T, path: Array<Key>,
1417// -- fnUpdate: (prevValue: any) => any): T`
1418// --
1419// -- ```js
1420// -- obj = { a: 1, d: { d1: 3, d2: 4 } }
1421// -- obj2 = updateIn(obj, ['d', 'd1'], (val) => val + 1)
1422// -- // { a: 1, d: { d1: 4, d2: 4 } }
1423// -- obj2 === obj
1424// -- // false
1425// --
1426// -- // The same object is returned if there are no changes:
1427// -- obj3 = updateIn(obj, ['d', 'd1'], (val) => val)
1428// -- // { a: 1, d: { d1: 3, d2: 4 } }
1429// -- obj3 === obj
1430// -- // true
1431// -- ```
1432function updateIn(obj, path, fnUpdate) {
1433  var prevVal = getIn(obj, path);
1434  var nextVal = fnUpdate(prevVal);
1435  return setIn(obj, path, nextVal);
1436}
1437
1438// -- #### merge()
1439// -- Returns a new object built as follows: the overlapping keys from the
1440// -- second one overwrite the corresponding entries from the first one.
1441// -- Similar to `Object.assign()`, but immutable.
1442// --
1443// -- Usage:
1444// --
1445// -- * `merge(obj1: Object, obj2: ?Object): Object`
1446// -- * `merge(obj1: Object, ...objects: Array<?Object>): Object`
1447// --
1448// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1449// -- new to* `obj1`, i.e. if either of the following
1450// -- conditions are true:
1451// --
1452// -- * `obj2` is `null` or `undefined`
1453// -- * `obj2` is an object, but it is empty
1454// -- * All attributes of `obj2` are `undefined`
1455// -- * All attributes of `obj2` are referentially equal to the
1456// --   corresponding attributes of `obj1`
1457// --
1458// -- Note that `undefined` attributes in `obj2` do not modify the
1459// -- corresponding attributes in `obj1`.
1460// --
1461// -- ```js
1462// -- obj1 = { a: 1, b: 2, c: 3 }
1463// -- obj2 = { c: 4, d: 5 }
1464// -- obj3 = merge(obj1, obj2)
1465// -- // { a: 1, b: 2, c: 4, d: 5 }
1466// -- obj3 === obj1
1467// -- // false
1468// --
1469// -- // The same object is returned if there are no changes:
1470// -- merge(obj1, { c: 3 }) === obj1
1471// -- // true
1472// -- ```
1473function merge(a, b, c, d, e, f) {
1474  for (var _len2 = arguments.length, rest = Array(_len2 > 6 ? _len2 - 6 : 0), _key2 = 6; _key2 < _len2; _key2++) {
1475    rest[_key2 - 6] = arguments[_key2];
1476  }
1477
1478  return rest.length ? doMerge.call.apply(doMerge, [null, false, false, a, b, c, d, e, f].concat(rest)) : doMerge(false, false, a, b, c, d, e, f);
1479}
1480
1481// -- #### mergeDeep()
1482// -- Returns a new object built as follows: the overlapping keys from the
1483// -- second one overwrite the corresponding entries from the first one.
1484// -- If both the first and second entries are objects they are merged recursively.
1485// -- Similar to `Object.assign()`, but immutable, and deeply merging.
1486// --
1487// -- Usage:
1488// --
1489// -- * `mergeDeep(obj1: Object, obj2: ?Object): Object`
1490// -- * `mergeDeep(obj1: Object, ...objects: Array<?Object>): Object`
1491// --
1492// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1493// -- new to* `obj1`, i.e. if either of the following
1494// -- conditions are true:
1495// --
1496// -- * `obj2` is `null` or `undefined`
1497// -- * `obj2` is an object, but it is empty
1498// -- * All attributes of `obj2` are `undefined`
1499// -- * All attributes of `obj2` are referentially equal to the
1500// --   corresponding attributes of `obj1`
1501// --
1502// -- Note that `undefined` attributes in `obj2` do not modify the
1503// -- corresponding attributes in `obj1`.
1504// --
1505// -- ```js
1506// -- obj1 = { a: 1, b: 2, c: { a: 1 } }
1507// -- obj2 = { b: 3, c: { b: 2 } }
1508// -- obj3 = mergeDeep(obj1, obj2)
1509// -- // { a: 1, b: 3, c: { a: 1, b: 2 }  }
1510// -- obj3 === obj1
1511// -- // false
1512// --
1513// -- // The same object is returned if there are no changes:
1514// -- mergeDeep(obj1, { c: { a: 1 } }) === obj1
1515// -- // true
1516// -- ```
1517function mergeDeep(a, b, c, d, e, f) {
1518  for (var _len3 = arguments.length, rest = Array(_len3 > 6 ? _len3 - 6 : 0), _key3 = 6; _key3 < _len3; _key3++) {
1519    rest[_key3 - 6] = arguments[_key3];
1520  }
1521
1522  return rest.length ? doMerge.call.apply(doMerge, [null, false, true, a, b, c, d, e, f].concat(rest)) : doMerge(false, true, a, b, c, d, e, f);
1523}
1524
1525// -- #### mergeIn()
1526// -- Similar to `merge()`, but merging the value at a given nested path.
1527// -- Note that the returned type is the same as that of the first argument.
1528// --
1529// -- Usage:
1530// --
1531// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, obj2: ?Object): T`
1532// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>,
1533// -- ...objects: Array<?Object>): T`
1534// --
1535// -- ```js
1536// -- obj1 = { a: 1, d: { b: { d1: 3, d2: 4 } } }
1537// -- obj2 = { d3: 5 }
1538// -- obj3 = mergeIn(obj1, ['d', 'b'], obj2)
1539// -- // { a: 1, d: { b: { d1: 3, d2: 4, d3: 5 } } }
1540// -- obj3 === obj1
1541// -- // false
1542// --
1543// -- // The same object is returned if there are no changes:
1544// -- mergeIn(obj1, ['d', 'b'], { d2: 4 }) === obj1
1545// -- // true
1546// -- ```
1547function mergeIn(a, path, b, c, d, e, f) {
1548  var prevVal = getIn(a, path);
1549  if (prevVal == null) prevVal = {};
1550  var nextVal = void 0;
1551
1552  for (var _len4 = arguments.length, rest = Array(_len4 > 7 ? _len4 - 7 : 0), _key4 = 7; _key4 < _len4; _key4++) {
1553    rest[_key4 - 7] = arguments[_key4];
1554  }
1555
1556  if (rest.length) {
1557    nextVal = doMerge.call.apply(doMerge, [null, false, false, prevVal, b, c, d, e, f].concat(rest));
1558  } else {
1559    nextVal = doMerge(false, false, prevVal, b, c, d, e, f);
1560  }
1561  return setIn(a, path, nextVal);
1562}
1563
1564// -- #### omit()
1565// -- Returns an object excluding one or several attributes.
1566// --
1567// -- Usage: `omit(obj: Object, attrs: Array<string>|string): Object`
1568//
1569// -- ```js
1570// -- obj = { a: 1, b: 2, c: 3, d: 4 }
1571// -- omit(obj, 'a')
1572// -- // { b: 2, c: 3, d: 4 }
1573// -- omit(obj, ['b', 'c'])
1574// -- // { a: 1, d: 4 }
1575// --
1576// -- // The same object is returned if there are no changes:
1577// -- omit(obj, 'z') === obj1
1578// -- // true
1579// -- ```
1580function omit(obj, attrs) {
1581  var omitList = Array.isArray(attrs) ? attrs : [attrs];
1582  var fDoSomething = false;
1583  for (var i = 0; i < omitList.length; i++) {
1584    if (hasOwnProperty.call(obj, omitList[i])) {
1585      fDoSomething = true;
1586      break;
1587    }
1588  }
1589  if (!fDoSomething) return obj;
1590  var out = {};
1591  var keys = getKeysAndSymbols(obj);
1592  for (var _i = 0; _i < keys.length; _i++) {
1593    var key = keys[_i];
1594    if (omitList.indexOf(key) >= 0) continue;
1595    out[key] = obj[key];
1596  }
1597  return out;
1598}
1599
1600// -- #### addDefaults()
1601// -- Returns a new object built as follows: `undefined` keys in the first one
1602// -- are filled in with the corresponding values from the second one
1603// -- (even if they are `null`).
1604// --
1605// -- Usage:
1606// --
1607// -- * `addDefaults(obj: Object, defaults: Object): Object`
1608// -- * `addDefaults(obj: Object, ...defaultObjects: Array<?Object>): Object`
1609// --
1610// -- ```js
1611// -- obj1 = { a: 1, b: 2, c: 3 }
1612// -- obj2 = { c: 4, d: 5, e: null }
1613// -- obj3 = addDefaults(obj1, obj2)
1614// -- // { a: 1, b: 2, c: 3, d: 5, e: null }
1615// -- obj3 === obj1
1616// -- // false
1617// --
1618// -- // The same object is returned if there are no changes:
1619// -- addDefaults(obj1, { c: 4 }) === obj1
1620// -- // true
1621// -- ```
1622function addDefaults(a, b, c, d, e, f) {
1623  for (var _len5 = arguments.length, rest = Array(_len5 > 6 ? _len5 - 6 : 0), _key5 = 6; _key5 < _len5; _key5++) {
1624    rest[_key5 - 6] = arguments[_key5];
1625  }
1626
1627  return rest.length ? doMerge.call.apply(doMerge, [null, true, false, a, b, c, d, e, f].concat(rest)) : doMerge(true, false, a, b, c, d, e, f);
1628}
1629
1630// ===============================================
1631// ### Public API
1632// ===============================================
1633var timm = {
1634  clone: clone,
1635  addLast: addLast,
1636  addFirst: addFirst,
1637  removeLast: removeLast,
1638  removeFirst: removeFirst,
1639  insert: insert,
1640  removeAt: removeAt,
1641  replaceAt: replaceAt,
1642
1643  getIn: getIn,
1644  // eslint-disable-next-line object-shorthand
1645  set: set, // so that flow doesn't complain
1646  setIn: setIn,
1647  update: update,
1648  updateIn: updateIn,
1649  merge: merge,
1650  mergeDeep: mergeDeep,
1651  mergeIn: mergeIn,
1652  omit: omit,
1653  addDefaults: addDefaults
1654};
1655
1656exports.default = timm;
1657
1658
1659/***/ }),
1660/* 23 */
1661/***/ (function(module, exports, __webpack_require__) {
1662
1663var root = __webpack_require__(6);
1664
1665/** Built-in value references. */
1666var Symbol = root.Symbol;
1667
1668module.exports = Symbol;
1669
1670
1671/***/ }),
1672/* 24 */
1673/***/ (function(module, exports, __webpack_require__) {
1674
1675var isSymbol = __webpack_require__(38);
1676
1677/** Used as references for various `Number` constants. */
1678var INFINITY = 1 / 0;
1679
1680/**
1681 * Converts `value` to a string key if it's not a string or symbol.
1682 *
1683 * @private
1684 * @param {*} value The value to inspect.
1685 * @returns {string|symbol} Returns the key.
1686 */
1687function toKey(value) {
1688  if (typeof value == 'string' || isSymbol(value)) {
1689    return value;
1690  }
1691  var result = (value + '');
1692  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
1693}
1694
1695module.exports = toKey;
1696
1697
1698/***/ }),
1699/* 25 */
1700/***/ (function(module, exports) {
1701
1702var g;
1703
1704// This works in non-strict mode
1705g = (function() {
1706	return this;
1707})();
1708
1709try {
1710	// This works if eval is allowed (see CSP)
1711	g = g || new Function("return this")();
1712} catch (e) {
1713	// This works if the window reference is available
1714	if (typeof window === "object") g = window;
1715}
1716
1717// g can still be undefined, but nothing to do about it...
1718// We return undefined, instead of nothing here, so it's
1719// easier to handle this case. if(!global) { ...}
1720
1721module.exports = g;
1722
1723
1724/***/ }),
1725/* 26 */
1726/***/ (function(module, exports, __webpack_require__) {
1727
1728// toObject with fallback for non-array-like ES3 strings
1729var IndexedObject = __webpack_require__(147);
1730var requireObjectCoercible = __webpack_require__(72);
1731
1732module.exports = function (it) {
1733  return IndexedObject(requireObjectCoercible(it));
1734};
1735
1736
1737/***/ }),
1738/* 27 */
1739/***/ (function(module, exports, __webpack_require__) {
1740
1741var global = __webpack_require__(1);
1742var isCallable = __webpack_require__(7);
1743
1744var aFunction = function (argument) {
1745  return isCallable(argument) ? argument : undefined;
1746};
1747
1748module.exports = function (namespace, method) {
1749  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];
1750};
1751
1752
1753/***/ }),
1754/* 28 */
1755/***/ (function(module, exports, __webpack_require__) {
1756
1757var global = __webpack_require__(1);
1758var DESCRIPTORS = __webpack_require__(14);
1759var IE8_DOM_DEFINE = __webpack_require__(80);
1760var anObject = __webpack_require__(29);
1761var toPropertyKey = __webpack_require__(73);
1762
1763var TypeError = global.TypeError;
1764// eslint-disable-next-line es/no-object-defineproperty -- safe
1765var $defineProperty = Object.defineProperty;
1766
1767// `Object.defineProperty` method
1768// https://tc39.es/ecma262/#sec-object.defineproperty
1769exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {
1770  anObject(O);
1771  P = toPropertyKey(P);
1772  anObject(Attributes);
1773  if (IE8_DOM_DEFINE) try {
1774    return $defineProperty(O, P, Attributes);
1775  } catch (error) { /* empty */ }
1776  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
1777  if ('value' in Attributes) O[P] = Attributes.value;
1778  return O;
1779};
1780
1781
1782/***/ }),
1783/* 29 */
1784/***/ (function(module, exports, __webpack_require__) {
1785
1786var global = __webpack_require__(1);
1787var isObject = __webpack_require__(20);
1788
1789var String = global.String;
1790var TypeError = global.TypeError;
1791
1792// `Assert: Type(argument) is Object`
1793module.exports = function (argument) {
1794  if (isObject(argument)) return argument;
1795  throw TypeError(String(argument) + ' is not an object');
1796};
1797
1798
1799/***/ }),
1800/* 30 */
1801/***/ (function(module, exports) {
1802
1803function _extends() {
1804  module.exports = _extends = Object.assign || function (target) {
1805    for (var i = 1; i < arguments.length; i++) {
1806      var source = arguments[i];
1807
1808      for (var key in source) {
1809        if (Object.prototype.hasOwnProperty.call(source, key)) {
1810          target[key] = source[key];
1811        }
1812      }
1813    }
1814
1815    return target;
1816  };
1817
1818  return _extends.apply(this, arguments);
1819}
1820
1821module.exports = _extends;
1822
1823/***/ }),
1824/* 31 */
1825/***/ (function(module, exports, __webpack_require__) {
1826
1827var listCacheClear = __webpack_require__(199),
1828    listCacheDelete = __webpack_require__(200),
1829    listCacheGet = __webpack_require__(201),
1830    listCacheHas = __webpack_require__(202),
1831    listCacheSet = __webpack_require__(203);
1832
1833/**
1834 * Creates an list cache object.
1835 *
1836 * @private
1837 * @constructor
1838 * @param {Array} [entries] The key-value pairs to cache.
1839 */
1840function ListCache(entries) {
1841  var index = -1,
1842      length = entries == null ? 0 : entries.length;
1843
1844  this.clear();
1845  while (++index < length) {
1846    var entry = entries[index];
1847    this.set(entry[0], entry[1]);
1848  }
1849}
1850
1851// Add methods to `ListCache`.
1852ListCache.prototype.clear = listCacheClear;
1853ListCache.prototype['delete'] = listCacheDelete;
1854ListCache.prototype.get = listCacheGet;
1855ListCache.prototype.has = listCacheHas;
1856ListCache.prototype.set = listCacheSet;
1857
1858module.exports = ListCache;
1859
1860
1861/***/ }),
1862/* 32 */
1863/***/ (function(module, exports, __webpack_require__) {
1864
1865var eq = __webpack_require__(49);
1866
1867/**
1868 * Gets the index at which the `key` is found in `array` of key-value pairs.
1869 *
1870 * @private
1871 * @param {Array} array The array to inspect.
1872 * @param {*}
vendor: 4,608 bytes, lines 1872-2075
1872 key The key to search for.
1873 * @returns {number} Returns the index of the matched value, else `-1`.
1874 */
1875function assocIndexOf(array, key) {
1876  var length = array.length;
1877  while (length--) {
1878    if (eq(array[length][0], key)) {
1879      return length;
1880    }
1881  }
1882  return -1;
1883}
1884
1885module.exports = assocIndexOf;
1886
1887
1888/***/ }),
1889/* 33 */
1890/***/ (function(module, exports, __webpack_require__) {
1891
1892var getNative = __webpack_require__(11);
1893
1894/* Built-in method references that are verified to be native. */
1895var nativeCreate = getNative(Object, 'create');
1896
1897module.exports = nativeCreate;
1898
1899
1900/***/ }),
1901/* 34 */
1902/***/ (function(module, exports, __webpack_require__) {
1903
1904var isKeyable = __webpack_require__(223);
1905
1906/**
1907 * Gets the data for `map`.
1908 *
1909 * @private
1910 * @param {Object} map The map to query.
1911 * @param {string} key The reference key.
1912 * @returns {*} Returns the map data.
1913 */
1914function getMapData(map, key) {
1915  var data = map.__data__;
1916  return isKeyable(key)
1917    ? data[typeof key == 'string' ? 'string' : 'hash']
1918    : data.map;
1919}
1920
1921module.exports = getMapData;
1922
1923
1924/***/ }),
1925/* 35 */
1926/***/ (function(module, exports, __webpack_require__) {
1927
1928var arrayLikeKeys = __webpack_require__(106),
1929    baseKeys = __webpack_require__(57),
1930    isArrayLike = __webpack_require__(17);
1931
1932/**
1933 * Creates an array of the own enumerable property names of `object`.
1934 *
1935 * **Note:** Non-object values are coerced to objects. See the
1936 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1937 * for more details.
1938 *
1939 * @static
1940 * @since 0.1.0
1941 * @memberOf _
1942 * @category Object
1943 * @param {Object} object The object to query.
1944 * @returns {Array} Returns the array of property names.
1945 * @example
1946 *
1947 * function Foo() {
1948 *   this.a = 1;
1949 *   this.b = 2;
1950 * }
1951 *
1952 * Foo.prototype.c = 3;
1953 *
1954 * _.keys(new Foo);
1955 * // => ['a', 'b'] (iteration order is not guaranteed)
1956 *
1957 * _.keys('hi');
1958 * // => ['0', '1']
1959 */
1960function keys(object) {
1961  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
1962}
1963
1964module.exports = keys;
1965
1966
1967/***/ }),
1968/* 36 */
1969/***/ (function(module, exports, __webpack_require__) {
1970
1971var baseIsArguments = __webpack_require__(241),
1972    isObjectLike = __webpack_require__(12);
1973
1974/** Used for built-in method references. */
1975var objectProto = Object.prototype;
1976
1977/** Used to check objects for own properties. */
1978var hasOwnProperty = objectProto.hasOwnProperty;
1979
1980/** Built-in value references. */
1981var propertyIsEnumerable = objectProto.propertyIsEnumerable;
1982
1983/**
1984 * Checks if `value` is likely an `arguments` object.
1985 *
1986 * @static
1987 * @memberOf _
1988 * @since 0.1.0
1989 * @category Lang
1990 * @param {*} value The value to check.
1991 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
1992 *  else `false`.
1993 * @example
1994 *
1995 * _.isArguments(function() { return arguments; }());
1996 * // => true
1997 *
1998 * _.isArguments([1, 2, 3]);
1999 * // => false
2000 */
2001var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
2002  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
2003    !propertyIsEnumerable.call(value, 'callee');
2004};
2005
2006module.exports = isArguments;
2007
2008
2009/***/ }),
2010/* 37 */
2011/***/ (function(module, exports, __webpack_require__) {
2012
2013var isArray = __webpack_require__(2),
2014    isKey = __webpack_require__(62),
2015    stringToPath = __webpack_require__(252),
2016    toString = __webpack_require__(255);
2017
2018/**
2019 * Casts `value` to a path array if it's not one.
2020 *
2021 * @private
2022 * @param {*} value The value to inspect.
2023 * @param {Object} [object] The object to query keys on.
2024 * @returns {Array} Returns the cast property path array.
2025 */
2026function castPath(value, object) {
2027  if (isArray(value)) {
2028    return value;
2029  }
2030  return isKey(value, object) ? [value] : stringToPath(toString(value));
2031}
2032
2033module.exports = castPath;
2034
2035
2036/***/ }),
2037/* 38 */
2038/***/ (function(module, exports, __webpack_require__) {
2039
2040var baseGetTag = __webpack_require__(16),
2041    isObjectLike = __webpack_require__(12);
2042
2043/** `Object#toString` result references. */
2044var symbolTag = '[object Symbol]';
2045
2046/**
2047 * Checks if `value` is classified as a `Symbol` primitive or object.
2048 *
2049 * @static
2050 * @memberOf _
2051 * @since 4.0.0
2052 * @category Lang
2053 * @param {*} value The value to check.
2054 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
2055 * @example
2056 *
2057 * _.isSymbol(Symbol.iterator);
2058 * // => true
2059 *
2060 * _.isSymbol('abc');
2061 * // => false
2062 */
2063function isSymbol(value) {
2064  return typeof value == 'symbol' ||
2065    (isObjectLike(value) && baseGetTag(value) == symbolTag);
2066}
2067
2068module.exports = isSymbol;
2069
2070
2071/***/ }),
2072/* 39 */
2073/***/ (function(module, exports, __webpack_require__) {
2074
2075"use strict";
2076// @wf-will-never-add-flow-to-this-file
2077
2078/* globals window, document */
2079
2080/* eslint-disable no-var */
2081// eslint-disable-next-line strict
2082
2083
2084var IXEvents = __webpack_require__(138);
2085
2086function dispatchCustomEvent(element, eventName) {
2087  var event = document.createEvent('CustomEvent');
2088  event.initCustomEvent(eventName, true, true, null);
2089  element.dispatchEvent(event);
2090}
2091/**
2092 * Webflow: IX Event triggers for other modules
2093 */
2094
2095
2096var $ = window.jQuery;
2097var api = {};
2098var namespace = '.w-ix';
2099var eventTriggers = {
2100  reset: function reset(i, el) {
2101    IXEvents.triggers.reset(i, el);
2102  },
2103  intro: function intro(i, el) {
2104    IXEvents.triggers.intro(i, el);
2105    dispatchCustomEvent(el, 'COMPONENT_ACTIVE');
2106  },
2107  outro: function outro(i, el) {
2108    IXEvents.triggers.outro(i, el);
2109    dispatchCustomEvent(el, 'COMPONENT_INACTIVE');
2110  }
2111};
2112api.triggers = {};
2113api.types = {
2114  INTRO: 'w-ix-intro' + namespace,
2115  OUTRO: 'w-ix-outro' + namespace
2116};
2117$.extend(api.triggers, eventTriggers);
2118module.exports = api;
2119
2120/***/ }),
2121/* 40 */
2122/***/ (function(module, exports) {
2123
2124var call = Function.prototype.call;
2125
2126module.exports = call.bind ? call.bind(call) : function () {
2127  return call.apply(call, arguments);
2128};
2129
2130
2131/***/ }),
2132/* 41 */
2133/***/ (function(module, exports, __webpack_require__) {
2134
2135var global = __webpack_require__(1);
2136var setGlobal = __webpack_require__(42);
2137
2138var SHARED = '__core-js_shared__';
2139var store = global[SHARED] || setGlobal(SHARED, {});
2140
2141module.exports = store;
2142
2143
2144/***/ }),
2145/* 42 */
2146/***/ (function(module, exports, __webpack_require__) {
2147
2148var global = __webpack_require__(1);
2149
2150// eslint-disable-next-line es/no-object-defineproperty -- safe
2151var defineProperty = Object.defineProperty;
2152
2153module.exports = function (key, value) {
2154  try {
2155    defineProperty(global, key, { value: value, configurable: true, writable: true });
2156  } catch (error) {
2157    global[key] = value;
2158  } return value;
2159};
2160
2161
2162/***/ }),
2163/* 43 */
2164/***/ (function(module, exports, __webpack_require__) {
2165
2166var DESCRIPTORS = __webpack_require__(14);
2167var definePropertyModule = __webpack_require__(28);
2168var createPropertyDescriptor = __webpack_require__(71);
2169
2170module.exports = DESCRIPTORS ? function (object, key, value) {
2171  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
2172} : function (object, key, value) {
2173  object[key] = value;
2174  return object;
2175};
2176
2177
2178/***/ }),
2179/* 44 */
2180/***/ (function(module, exports) {
2181
2182module.exports = {};
2183
2184
2185/***/ }),
2186/* 45 */
2187/***/ (function(module, exports) {
2188
2189// IE8- don't enum bug keys
2190module.exports = [
2191  'constructor',
2192  'hasOwnProperty',
2193  'isPrototypeOf',
2194  'propertyIsEnumerable',
2195  'toLocaleString',
2196  'toString',
2197  'valueOf'
2198];
2199
2200
2201/***/ }),
2202/* 46 */
2203/***/ (function(module, __webpack_exports__, __webpack_require__) {
2204
2205"use strict";
2206__webpack_require__.r(__webpack_exports__);
2207/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionTypes", function() { return ActionTypes; });
2208/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createStore; });
2209/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(88);
2210/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(185);
2211
2212
2213
2214/**
2215 * These are private action types reserved by Redux.
2216 * For any unknown actions, you must return the current state.
2217 * If the current state is undefined, you must return the initial state.
2218 * Do not reference these action types directly in your code.
2219 */
2220var ActionTypes = {
2221  INIT: '@@redux/INIT'
2222};
2223
2224/**
2225 * Creates a Redux store that holds the state tree.
2226 * The only way to change the data in the store is to call `dispatch()` on it.
2227 *
2228 * There should only be a single store in your app. To specify how different
2229 * parts of the state tree respond to actions, you may combine several reducers
2230 * into a single reducer function by using `combineReducers`.
2231 *
2232 * @param {Function} reducer A function that returns the next state tree, given
2233 * the current state tree and the action to handle.
2234 *
2235 * @param {any} [preloadedState] The initial state. You may optionally specify it
2236 * to hydrate the state from the server in universal apps, or to restore a
2237 * previously serialized user session.
2238 * If you use `combineReducers` to produce the root reducer function, this must be
2239 * an object with the same shape as `combineReducers` keys.
2240 *
2241 * @param {Function} enhancer The store enhancer. You may optionally specify it
2242 * to enhance the store with third-party capabilities such as middleware,
2243 * time travel, persistence, etc. The only store enhancer that ships with Redux
2244 * is `applyMiddleware()`.
2245 *
2246 * @returns {Store} A Redux store that lets you read the state, dispatch actions
2247 * and subscribe to changes.
2248 */
2249function createStore(reducer, preloadedState, enhancer) {
2250  var _ref2;
2251
2252  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
2253    enhancer = preloadedState;
2254    preloadedState = undefined;
2255  }
2256
2257  if (typeof enhancer !== 'undefined') {
2258    if (typeof enhancer !== 'function') {
2259      throw new Error('Expected the enhancer to be a function.');
2260    }
2261
2262    return enhancer(createStore)(reducer, preloadedState);
2263  }
2264
2265  if (typeof reducer !== 'function') {
2266    throw new Error('Expected the reducer to be a function.');
2267  }
2268
2269  var currentReducer = reducer;
2270  var currentState = preloadedState;
2271  var currentListeners = [];
2272  var nextListeners = currentListeners;
2273  var isDispatching = false;
2274
2275  function ensureCanMutateNextListeners() {
2276    if (nextListeners === currentListeners) {
2277      nextListeners = currentListeners.slice();
2278    }
2279  }
2280
2281  /**
2282   * Reads the state tree managed by the store.
2283   *
2284   * @returns {any} The current state tree of your application.
2285   */
2286  function getState() {
2287    return currentState;
2288  }
2289
2290  /**
2291   * Adds a change listener. It will be called any time an action is dispatched,
2292   * and some part of the state tree may potentially have changed. You may then
2293   * call `getState()` to read the current state tree inside the callback.
2294   *
2295   * You may call `dispatch()` from a change listener, with the following
2296   * caveats:
2297   *
2298   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
2299   * If you subscribe or unsubscribe while the listeners are being invoked, this
2300   * will not have any effect on the `dispatch()` that is currently in progress.
2301   * However, the next `dispatch()` call, whether nested or not, will use a more
2302   * recent snapshot of the subscription list.
2303   *
2304   * 2. The listener should not expect to see all state changes, as the state
2305   * might have been updated multiple times during a nested `dispatch()` before
2306   * the listener is called. It is, however, guaranteed that all subscribers
2307   * registered before the `dispatch()` started will be called with the latest
2308   * state by the time it exits.
2309   *
2310   * @param {Function} listener A callback to be invoked on every dispatch.
2311   * @returns {Function} A function to remove this change listener.
2312   */
2313  function subscribe(listener) {
2314    if (typeof listener !== 'function') {
2315      throw new Error('Expected listener to be a function.');
2316    }
2317
2318    var isSubscribed = true;
2319
2320    ensureCanMutateNextListeners();
2321    nextListeners.push(listener);
2322
2323    return function unsubscribe() {
2324      if (!isSubscribed) {
2325        return;
2326      }
2327
2328      isSubscribed = false;
2329
2330      ensureCanMutateNextListeners();
2331      var index = nextListeners.indexOf(listener);
2332      nextListeners.splice(index, 1);
2333    };
2334  }
2335
2336  /**
2337   * Dispatches an action. It is the only way to trigger a state change.
2338   *
2339   * The `reducer` function, used to create the store, will be called with the
2340   * current state tree and the given `action`. Its return value will
2341   * be considered the **next** state of the tree, and the change listeners
2342   * will be notified.
2343   *
2344   * The base implementation only supports plain object actions. If you want to
2345   * dispatch a Promise, an Observable, a thunk, or something else, you need to
2346   * wrap your store creating function into the corresponding middleware. For
2347   * example, see the documentation for the `redux-thunk` package. Even the
2348   * middleware will eventually dispatch plain object actions using this method.
2349   *
2350   * @param {Object} action A plain object representing “what changed”. It is
2351   * a good idea to keep actions serializable so you can record and replay user
2352   * sessions, or use the time travelling `redux-devtools`. An action must have
2353   * a `type` property which may not be `undefined`. It is a good idea to use
2354   * string constants for action types.
2355   *
2356   * @returns {Object} For convenience, the same action object you dispatched.
2357   *
2358   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
2359   * return something else (for example, a Promise you can await).
2360   */
2361  function dispatch(action) {
2362    if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(action)) {
2363      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
2364    }
2365
2366    if (typeof action.type === 'undefined') {
2367      throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
2368    }
2369
2370    if (isDispatching) {
2371      throw new Error('Reducers may not dispatch actions.');
2372    }
2373
2374    try {
2375      isDispatching = true;
2376      currentState = currentReducer(currentState, action);
2377    } finally {
2378      isDispatching = false;
2379    }
2380
2381    var listeners = currentListeners = nextListeners;
2382    for (var i = 0; i < listeners.length; i++) {
2383      listeners[i]();
2384    }
2385
2386    return action;
2387  }
2388
2389  /**
2390   * Replaces the reducer currently used by the store to calculate the state.
2391   *
2392   * You might need this if your app implements code splitting and you want to
2393   * load some of the reducers dynamically. You might also need this if you
2394   * implement a hot reloading mechanism for Redux.
2395   *
2396   * @param {Function} nextReducer The reducer for the store to use instead.
2397   * @returns {void}
2398   */
2399  function replaceReducer(nextReducer) {
2400    if (typeof nextReducer !== 'function') {
2401      throw new Error('Expected the nextReducer to be a function.');
2402    }
2403
2404    currentReducer = nextReducer;
2405    dispatch({ type: ActionTypes.INIT });
2406  }
2407
2408  /**
2409   * Interoperability point for observable/reactive libraries.
2410   * @returns {observable} A minimal observable of state changes.
2411   * For more information, see the observable proposal:
2412   * https://github.com/zenparsing/es-observable
2413   */
2414  function observable() {
2415    var _ref;
2416
2417    var outerSubscribe = subscribe;
2418    return _ref = {
2419      /**
2420       * The minimal observable subscription method.
2421       * @param {Object} observer Any object that can be used as an observer.
2422       * The observer object should have a `next` method.
2423       * @returns {subscription} An object with an `unsubscribe` method that can
2424       * be used to unsubscribe the observable from the store, and prevent further
2425       * emission of values from the observable.
2426       */
2427      subscribe: function subscribe(observer) {
2428        if (typeof observer !== 'object') {
2429          throw new TypeError('Expected the observer to be an object.');
2430        }
2431
2432        function observeState() {
2433          if (observer.next) {
2434            observer.next(getState());
2435          }
2436        }
2437
2438        observeState();
2439        var unsubscribe = outerSubscribe(observeState);
2440        return { unsubscribe: unsubscribe };
2441      }
2442    }, _ref[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = function () {
2443      return this;
2444    }, _ref;
2445  }
2446
2447  // When a store is created, an "INIT" action is dispatched so that every
2448  // reducer returns their initial state. This effectively populates
2449  // the initial state tree.
2450  dispatch({ type: ActionTypes.INIT });
2451
2452  return _ref2 = {
2453    dispatch: dispatch,
2454    subscribe: subscribe,
2455    getState: getState,
2456    replaceReducer: replaceReducer
2457  }, _ref2[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = observable, _ref2;
2458}
2459
2460/***/ }),
2461/* 47 */
2462/***/ (function(module, __webpack_exports__, __webpack_require__) {
2463
2464"use strict";
2465__webpack_require__.r(__webpack_exports__);
2466/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return compose; });
2467/**
2468 * Composes single-argument functions from right to left. The rightmost
2469 * function can take multiple arguments as it provides the signature for
2470 * the resulting composite function.
2471 *
2472 * @param {...Function} funcs The functions to compose.
2473 * @returns {Function} A function obtained by composing the argument functions
2474 * from right to left. For example, compose(f, g, h) is identical to doing
2475 * (...args) => f(g(h(...args))).
2476 */
2477
2478function compose() {
2479  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
2480    funcs[_key] = arguments[_key];
2481  }
2482
2483  if (funcs.length === 0) {
2484    return function (arg) {
2485      return arg;
2486    };
2487  }
2488
2489  if (funcs.length === 1) {
2490    return funcs[0];
2491  }
2492
2493  var last = funcs[funcs.length - 1];
2494  var rest = funcs.slice(0, -1);
2495  return function () {
2496    return rest.reduceRight(function (composed, f) {
2497      return f(composed);
2498    }, last.apply(undefined, arguments));
2499  };
2500}
2501
2502/***/ }),
2503/* 48 */
2504/***/ (function(module, exports, __webpack_require__) {
2505
2506"use strict";
2507
2508
2509var _interopRequireDefault = __webpack_require__(0);
2510
2511Object.defineProperty(exports, "__esModule", {
2512  value: true
2513});
2514exports.TRANSFORM_STYLE_PREFIXED = exports.TRANSFORM_PREFIXED = exports.FLEX_PREFIXED = exports.ELEMENT_MATCHES = exports.withBrowser = exports.IS_BROW
2514SER_ENV = void 0;
2515
2516var _find = _interopRequireDefault(__webpack_require__(95));
2517/* eslint-env browser */
2518
2519
2520var IS_BROWSER_ENV = typeof window !== 'undefined'; // $FlowFixMe
2521
2522exports.IS_BROWSER_ENV = IS_BROWSER_ENV;
2523
2524var withBrowser = function withBrowser(fn, fallback) {
2525  if (IS_BROWSER_ENV) {
2526    return fn();
2527  }
2528
2529  return fallback;
2530};
2531
2532exports.withBrowser = withBrowser;
2533var ELEMENT_MATCHES = withBrowser(function () {
2534  return (0, _find["default"])(['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'], function (key) {
2535    return key in Element.prototype;
2536  });
2537});
2538exports.ELEMENT_MATCHES = ELEMENT_MATCHES;
2539var FLEX_PREFIXED = withBrowser(function () {
2540  var el = document.createElement('i');
2541  var values = ['flex', '-webkit-flex', '-ms-flexbox', '-moz-box', '-webkit-box'];
2542  var none = '';
2543
2544  try {
2545    var length = values.length;
2546
2547    for (var i = 0; i < length; i++) {
2548      var value = values[i];
2549      el.style.display = value;
2550
2551      if (el.style.display === value) {
2552        return value;
2553      }
2554    }
2555
2556    return none;
2557  } catch (err) {
2558    return none;
2559  }
2560}, 'flex');
2561exports.FLEX_PREFIXED = FLEX_PREFIXED;
2562var TRANSFORM_PREFIXED = withBrowser(function () {
2563  var el = document.createElement('i');
2564
2565  if (el.style.transform == null) {
2566    var prefixes = ['Webkit', 'Moz', 'ms'];
2567    var suffix = 'Transform';
2568    var length = prefixes.length;
2569
2570    for (var i = 0; i < length; i++) {
2571      var prop = prefixes[i] + suffix; // $FlowFixMe
2572
2573      if (el.style[prop] !== undefined) {
2574        return prop;
2575      }
2576    }
2577  }
2578
2579  return 'transform';
2580}, 'transform'); // $FlowFixMe
2581
2582exports.TRANSFORM_PREFIXED = TRANSFORM_PREFIXED;
2583var TRANSFORM_PREFIX = TRANSFORM_PREFIXED.split('transform')[0];
2584var TRANSFORM_STYLE_PREFIXED = TRANSFORM_PREFIX ? TRANSFORM_PREFIX + 'TransformStyle' : 'transformStyle';
2585exports.TRANSFORM_STYLE_PREFIXED = TRANSFORM_STYLE_PREFIXED;
2586
2587/***/ }),
2588/* 49 */
2589/***/ (function(module, exports) {
2590
2591/**
2592 * Performs a
2593 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2594 * comparison between two values to determine if they are equivalent.
2595 *
2596 * @static
2597 * @memberOf _
2598 * @since 4.0.0
2599 * @category Lang
2600 * @param {*} value The value to compare.
2601 * @param {*} other The other value to compare.
2602 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2603 * @example
2604 *
2605 * var object = { 'a': 1 };
2606 * var other = { 'a': 1 };
2607 *
2608 * _.eq(object, object);
2609 * // => true
2610 *
2611 * _.eq(object, other);
2612 * // => false
2613 *
2614 * _.eq('a', 'a');
2615 * // => true
2616 *
2617 * _.eq('a', Object('a'));
2618 * // => false
2619 *
2620 * _.eq(NaN, NaN);
2621 * // => true
2622 */
2623function eq(value, other) {
2624  return value === other || (value !== value && other !== other);
2625}
2626
2627module.exports = eq;
2628
2629
2630/***/ }),
2631/* 50 */
2632/***/ (function(module, exports, __webpack_require__) {
2633
2634var getNative = __webpack_require__(11),
2635    root = __webpack_require__(6);
2636
2637/* Built-in method references that are verified to be native. */
2638var Map = getNative(root, 'Map');
2639
2640module.exports = Map;
2641
2642
2643/***/ }),
2644/* 51 */
2645/***/ (function(module, exports, __webpack_require__) {
2646
2647var mapCacheClear = __webpack_require__(215),
2648    mapCacheDelete = __webpack_require__(222),
2649    mapCacheGet = __webpack_require__(224),
2650    mapCacheHas = __webpack_require__(225),
2651    mapCacheSet = __webpack_require__(226);
2652
2653/**
2654 * Creates a map cache object to store key-value pairs.
2655 *
2656 * @private
2657 * @constructor
2658 * @param {Array} [entries] The key-value pairs to cache.
2659 */
2660function MapCache(entries) {
2661  var index = -1,
2662      length = entries == null ? 0 : entries.length;
2663
2664  this.clear();
2665  while (++index < length) {
2666    var entry = entries[index];
2667    this.set(entry[0], entry[1]);
2668  }
2669}
2670
2671// Add methods to `MapCache`.
2672MapCache.prototype.clear = mapCacheClear;
2673MapCache.prototype['delete'] = mapCacheDelete;
2674MapCache.prototype.get = mapCacheGet;
2675MapCache.prototype.has = mapCacheHas;
2676MapCache.prototype.set = mapCacheSet;
2677
2678module.exports = MapCache;
2679
2680
2681/***/ }),
2682/* 52 */
2683/***/ (function(module, exports) {
2684
2685/**
2686 * Appends the elements of `values` to `array`.
2687 *
2688 * @private
2689 * @param {Array} array The array to modify.
2690 * @param {Array} values The values to append.
2691 * @returns {Array} Returns `array`.
2692 */
2693function arrayPush(array, values) {
2694  var index = -1,
2695      length = values.length,
2696      offset = array.length;
2697
2698  while (++index < length) {
2699    array[offset + index] = values[index];
2700  }
2701  return array;
2702}
2703
2704module.exports = arrayPush;
2705
2706
2707/***/ }),
2708/* 53 */
2709/***/ (function(module, exports, __webpack_require__) {
2710
2711/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(6),
2712    stubFalse = __webpack_require__(242);
2713
2714/** Detect free variable `exports`. */
2715var freeExports =  true && exports && !exports.nodeType && exports;
2716
2717/** Detect free variable `module`. */
2718var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
2719
2720/** Detect the popular CommonJS extension `module.exports`. */
2721var moduleExports = freeModule && freeModule.exports === freeExports;
2722
2723/** Built-in value references. */
2724var Buffer = moduleExports ? root.Buffer : undefined;
2725
2726/* Built-in method references for those with the same name as other `lodash` methods. */
2727var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
2728
2729/**
2730 * Checks if `value` is a buffer.
2731 *
2732 * @static
2733 * @memberOf _
2734 * @since 4.3.0
2735 * @category Lang
2736 * @param {*} value The value to check.
2737 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
2738 * @example
2739 *
2740 * _.isBuffer(new Buffer(2));
2741 * // => true
2742 *
2743 * _.isBuffer(new Uint8Array(2));
2744 * // => false
2745 */
2746var isBuffer = nativeIsBuffer || stubFalse;
2747
2748module.exports = isBuffer;
2749
2750/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))
2751
2752/***/ }),
2753/* 54 */
vendor: 5,344 bytes, lines 2754-2962
2754/***/ (function(module, exports) {
2755
2756/** Used as references for various `Number` constants. */
2757var MAX_SAFE_INTEGER = 9007199254740991;
2758
2759/** Used to detect unsigned integer values. */
2760var reIsUint = /^(?:0|[1-9]\d*)$/;
2761
2762/**
2763 * Checks if `value` is a valid array-like index.
2764 *
2765 * @private
2766 * @param {*} value The value to check.
2767 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
2768 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
2769 */
2770function isIndex(value, length) {
2771  var type = typeof value;
2772  length = length == null ? MAX_SAFE_INTEGER : length;
2773
2774  return !!length &&
2775    (type == 'number' ||
2776      (type != 'symbol' && reIsUint.test(value))) &&
2777        (value > -1 && value % 1 == 0 && value < length);
2778}
2779
2780module.exports = isIndex;
2781
2782
2783/***/ }),
2784/* 55 */
2785/***/ (function(module, exports, __webpack_require__) {
2786
2787var baseIsTypedArray = __webpack_require__(243),
2788    baseUnary = __webpack_require__(244),
2789    nodeUtil = __webpack_require__(245);
2790
2791/* Node.js helper references. */
2792var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
2793
2794/**
2795 * Checks if `value` is classified as a typed array.
2796 *
2797 * @static
2798 * @memberOf _
2799 * @since 3.0.0
2800 * @category Lang
2801 * @param {*} value The value to check.
2802 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
2803 * @example
2804 *
2805 * _.isTypedArray(new Uint8Array);
2806 * // => true
2807 *
2808 * _.isTypedArray([]);
2809 * // => false
2810 */
2811var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
2812
2813module.exports = isTypedArray;
2814
2815
2816/***/ }),
2817/* 56 */
2818/***/ (function(module, exports) {
2819
2820/** Used as references for various `Number` constants. */
2821var MAX_SAFE_INTEGER = 9007199254740991;
2822
2823/**
2824 * Checks if `value` is a valid array-like length.
2825 *
2826 * **Note:** This method is loosely based on
2827 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
2828 *
2829 * @static
2830 * @memberOf _
2831 * @since 4.0.0
2832 * @category Lang
2833 * @param {*} value The value to check.
2834 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2835 * @example
2836 *
2837 * _.isLength(3);
2838 * // => true
2839 *
2840 * _.isLength(Number.MIN_VALUE);
2841 * // => false
2842 *
2843 * _.isLength(Infinity);
2844 * // => false
2845 *
2846 * _.isLength('3');
2847 * // => false
2848 */
2849function isLength(value) {
2850  return typeof value == 'number' &&
2851    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2852}
2853
2854module.exports = isLength;
2855
2856
2857/***/ }),
2858/* 57 */
2859/***/ (function(module, exports, __webpack_require__) {
2860
2861var isPrototype = __webpack_require__(58),
2862    nativeKeys = __webpack_require__(246);
2863
2864/** Used for built-in method references. */
2865var objectProto = Object.prototype;
2866
2867/** Used to check objects for own properties. */
2868var hasOwnProperty = objectProto.hasOwnProperty;
2869
2870/**
2871 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
2872 *
2873 * @private
2874 * @param {Object} object The object to query.
2875 * @returns {Array} Returns the array of property names.
2876 */
2877function baseKeys(object) {
2878  if (!isPrototype(object)) {
2879    return nativeKeys(object);
2880  }
2881  var result = [];
2882  for (var key in Object(object)) {
2883    if (hasOwnProperty.call(object, key) && key != 'constructor') {
2884      result.push(key);
2885    }
2886  }
2887  return result;
2888}
2889
2890module.exports = baseKeys;
2891
2892
2893/***/ }),
2894/* 58 */
2895/***/ (function(module, exports) {
2896
2897/** Used for built-in method references. */
2898var objectProto = Object.prototype;
2899
2900/**
2901 * Checks if `value` is likely a prototype object.
2902 *
2903 * @private
2904 * @param {*} value The value to check.
2905 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
2906 */
2907function isPrototype(value) {
2908  var Ctor = value && value.constructor,
2909      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
2910
2911  return value === proto;
2912}
2913
2914module.exports = isPrototype;
2915
2916
2917/***/ }),
2918/* 59 */
2919/***/ (function(module, exports, __webpack_require__) {
2920
2921var DataView = __webpack_require__(247),
2922    Map = __webpack_require__(50),
2923    Promise = __webpack_require__(248),
2924    Set = __webpack_require__(249),
2925    WeakMap = __webpack_require__(109),
2926    baseGetTag = __webpack_require__(16),
2927    toSource = __webpack_require__(100);
2928
2929/** `Object#toString` result references. */
2930var mapTag = '[object Map]',
2931    objectTag = '[object Object]',
2932    promiseTag = '[object Promise]',
2933    setTag = '[object Set]',
2934    weakMapTag = '[object WeakMap]';
2935
2936var dataViewTag = '[object DataView]';
2937
2938/** Used to detect maps, sets, and weakmaps. */
2939var dataViewCtorString = toSource(DataView),
2940    mapCtorString = toSource(Map),
2941    promiseCtorString = toSource(Promise),
2942    setCtorString = toSource(Set),
2943    weakMapCtorString = toSource(WeakMap);
2944
2945/**
2946 * Gets the `toStringTag` of `value`.
2947 *
2948 * @private
2949 * @param {*} value The value to query.
2950 * @returns {string} Returns the `toStringTag`.
2951 */
2952var getTag = baseGetTag;
2953
2954// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
2955if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
2956    (Map && getTag(new Map) != mapTag) ||
2957    (Promise && getTag(Promise.resolve()) != promiseTag) ||
2958    (Set && getTag(new Set) != setTag) ||
2959    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
2960  getTag = function(value) {
2961    var result = baseGetTag(value),
2962        Ctor = result == objectTag ? value.constructor : undefined,
vendor: 6,048 bytes, lines 2963-3202
2963        ctorString = Ctor ? toSource(Ctor) : '';
2964
2965    if (ctorString) {
2966      switch (ctorString) {
2967        case dataViewCtorString: return dataViewTag;
2968        case mapCtorString: return mapTag;
2969        case promiseCtorString: return promiseTag;
2970        case setCtorString: return setTag;
2971        case weakMapCtorString: return weakMapTag;
2972      }
2973    }
2974    return result;
2975  };
2976}
2977
2978module.exports = getTag;
2979
2980
2981/***/ }),
2982/* 60 */
2983/***/ (function(module, exports, __webpack_require__) {
2984
2985var baseGet = __webpack_require__(61);
2986
2987/**
2988 * Gets the value at `path` of `object`. If the resolved value is
2989 * `undefined`, the `defaultValue` is returned in its place.
2990 *
2991 * @static
2992 * @memberOf _
2993 * @since 3.7.0
2994 * @category Object
2995 * @param {Object} object The object to query.
2996 * @param {Array|string} path The path of the property to get.
2997 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
2998 * @returns {*} Returns the resolved value.
2999 * @example
3000 *
3001 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
3002 *
3003 * _.get(object, 'a[0].b.c');
3004 * // => 3
3005 *
3006 * _.get(object, ['a', '0', 'b', 'c']);
3007 * // => 3
3008 *
3009 * _.get(object, 'a.b.c', 'default');
3010 * // => 'default'
3011 */
3012function get(object, path, defaultValue) {
3013  var result = object == null ? undefined : baseGet(object, path);
3014  return result === undefined ? defaultValue : result;
3015}
3016
3017module.exports = get;
3018
3019
3020/***/ }),
3021/* 61 */
3022/***/ (function(module, exports, __webpack_require__) {
3023
3024var castPath = __webpack_require__(37),
3025    toKey = __webpack_require__(24);
3026
3027/**
3028 * The base implementation of `_.get` without support for default values.
3029 *
3030 * @private
3031 * @param {Object} object The object to query.
3032 * @param {Array|string} path The path of the property to get.
3033 * @returns {*} Returns the resolved value.
3034 */
3035function baseGet(object, path) {
3036  path = castPath(path, object);
3037
3038  var index = 0,
3039      length = path.length;
3040
3041  while (object != null && index < length) {
3042    object = object[toKey(path[index++])];
3043  }
3044  return (index && index == length) ? object : undefined;
3045}
3046
3047module.exports = baseGet;
3048
3049
3050/***/ }),
3051/* 62 */
3052/***/ (function(module, exports, __webpack_require__) {
3053
3054var isArray = __webpack_require__(2),
3055    isSymbol = __webpack_require__(38);
3056
3057/** Used to match property names within property paths. */
3058var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
3059    reIsPlainProp = /^\w*$/;
3060
3061/**
3062 * Checks if `value` is a property name and not a property path.
3063 *
3064 * @private
3065 * @param {*} value The value to check.
3066 * @param {Object} [object] The object to query keys on.
3067 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
3068 */
3069function isKey(value, object) {
3070  if (isArray(value)) {
3071    return false;
3072  }
3073  var type = typeof value;
3074  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
3075      value == null || isSymbol(value)) {
3076    return true;
3077  }
3078  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
3079    (object != null && value in Object(object));
3080}
3081
3082module.exports = isKey;
3083
3084
3085/***/ }),
3086/* 63 */
3087/***/ (function(module, exports) {
3088
3089/**
3090 * This method returns the first argument it receives.
3091 *
3092 * @static
3093 * @since 0.1.0
3094 * @memberOf _
3095 * @category Util
3096 * @param {*} value Any value.
3097 * @returns {*} Returns `value`.
3098 * @example
3099 *
3100 * var object = { 'a': 1 };
3101 *
3102 * console.log(_.identity(object) === object);
3103 * // => true
3104 */
3105function identity(value) {
3106  return value;
3107}
3108
3109module.exports = identity;
3110
3111
3112/***/ }),
3113/* 64 */
3114/***/ (function(module, exports, __webpack_require__) {
3115
3116var baseTrim = __webpack_require__(264),
3117    isObject = __webpack_require__(8),
3118    isSymbol = __webpack_require__(38);
3119
3120/** Used as references for various `Number` constants. */
3121var NAN = 0 / 0;
3122
3123/** Used to detect bad signed hexadecimal string values. */
3124var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
3125
3126/** Used to detect binary string values. */
3127var reIsBinary = /^0b[01]+$/i;
3128
3129/** Used to detect octal string values. */
3130var reIsOctal = /^0o[0-7]+$/i;
3131
3132/** Built-in method references without a dependency on `root`. */
3133var freeParseInt = parseInt;
3134
3135/**
3136 * Converts `value` to a number.
3137 *
3138 * @static
3139 * @memberOf _
3140 * @since 4.0.0
3141 * @category Lang
3142 * @param {*} value The value to process.
3143 * @returns {number} Returns the number.
3144 * @example
3145 *
3146 * _.toNumber(3.2);
3147 * // => 3.2
3148 *
3149 * _.toNumber(Number.MIN_VALUE);
3150 * // => 5e-324
3151 *
3152 * _.toNumber(Infinity);
3153 * // => Infinity
3154 *
3155 * _.toNumber('3.2');
3156 * // => 3.2
3157 */
3158function toNumber(value) {
3159  if (typeof value == 'number') {
3160    return value;
3161  }
3162  if (isSymbol(value)) {
3163    return NAN;
3164  }
3165  if (isObject(value)) {
3166    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
3167    value = isObject(other) ? (other + '') : other;
3168  }
3169  if (typeof value != 'string') {
3170    return value === 0 ? value : +value;
3171  }
3172  value = baseTrim(value);
3173  var isBinary = reIsBinary.test(value);
3174  return (isBinary || reIsOctal.test(value))
3175    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
3176    : (reIsBadHex.test(value) ? NAN : +value);
3177}
3178
3179module.exports = toNumber;
3180
3181
3182/***/ }),
3183/* 65 */
3184/***/ (function(module, exports, __webpack_require__) {
3185
3186"use strict";
3187
3188
3189var _interopRequireDefault = __webpack_require__(0);
3190
3191Object.defineProperty(exports, "__esModule", {
3192  value: true
3193});
3194exports.mediaQueriesDefined = exports.viewportWidthChanged = exports.actionListPlaybackChanged = exports.elementStateChanged = exports.instanceRemoved = exports.instanceStarted = exports.instanceAdded = exports.parameterChanged = exports.animationFrameChanged = exports.eventStateChanged = exports.testFrameRendered = exports.eventListenerAdded = exports.clearRequested = exports.stopRequested = exports.playbackRequested = exports.previewRequested = exports.sessionStopped = exports.sessionStarted = exports.sessionInitialized = exports.rawDataImported = void 0;
3195
3196var _extends2 = _interopRequireDefault(__webpack_require__(30));
3197
3198var _constants = __webpack_require__(4);
3199
3200var _shared = __webpack_require__(15);
3201
3202var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
3203    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
3204    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
3205    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
3206    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
3207    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
3208    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
3209    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
3210    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED,
3211    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
3212    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
3213    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
3214    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
3215    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED,
3216    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
3217    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
3218    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
3219    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED,
3220    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
3221    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
3222    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
3223var reifyState = _shared.IX2VanillaUtils.reifyState; // TODO: Figure out what this is and elevate it
3224
3225var rawDataImported = function rawDataImported(rawData) {
3226  return {
3227    type: IX2_RAW_DATA_IMPORTED,
3228    payload: (0, _extends2["default"])({}, reifyState(rawData))
3229  };
3230};
3231
3232exports.rawDataImported = rawDataImported;
3233
3234var sessionInitialized = function sessionInitialized(_ref) {
3235  var hasBoundaryNodes = _ref.hasBoundaryNodes,
3236      reducedMotion = _ref.reducedMotion;
3237  return {
3238    type: IX2_SESSION_INITIALIZED,
3239    payload: {
3240      hasBoundaryNodes: hasBoundaryNodes,
3241      reducedMotion: reducedMotion
3242    }
3243  };
3244};
3245
3246exports.sessionInitialized = sessionInitialized;
3247
3248var sessionStarted = function sessionStarted() {
3249  return {
3250    type: IX2_SESSION_STARTED
3251  };
3252};
3253
3254exports.sessionStarted = sessionStarted;
3255
3256var sessionStopped = function sessionStopped() {
3257  return {
3258    type: IX2_SESSION_STOPPED
3259  };
3260};
3261
3262exports.sessionStopped = sessionStopped;
3263
3264var previewRequested = function previewRequested(_ref2) {
3265  var rawData = _ref2.rawData,
3266      defer = _ref2.defer;
3267  return {
3268    type: IX2_PREVIEW_REQUESTED,
3269    payload: {
3270      defer: defer,
3271      rawData: rawData
3272    }
3273  };
3274};
3275
3276exports.previewRequested = previewRequested;
3277
3278var playbackRequested = function playbackRequested(_ref3) {
3279  var _ref3$actionTypeId = _ref3.actionTypeId,
3280      actionTypeId = _ref3$actionTypeId === void 0 ? _constants.ActionTypeConsts.GENERAL_START_ACTION : _ref3$actionTypeId,
3281      actionListId = _ref3.actionListId,
3282      actionItemId = _ref3.actionItemId,
3283      eventId = _ref3.eventId,
3284      allowEvents = _ref3.allowEvents,
3285      immediate = _ref3.immediate,
3286      testManual = _ref3.testManual,
3287      verbose = _ref3.verbose,
3288      rawData = _ref3.rawData;
3289  return {
3290    type: IX2_PLAYBACK_REQUESTED,
3291    payload: {
3292      actionTypeId: actionTypeId,
3293      actionListId: actionListId,
3294      actionItemId: actionItemId,
3295      testManual: testManual,
3296      eventId: eventId,
3297      allowEvents: allowEvents,
3298      immediate: immediate,
3299      verbose: verbose,
3300      rawData: rawData
3301    }
3302  };
3303};
3304
3305exports.playbackRequested = playbackRequested;
3306
3307var stopRequested = function stopRequested(actionListId) {
3308  return {
3309    type: IX2_STOP_REQUESTED,
3310    payload: {
3311      actionListId: actionListId
3312    }
3313  };
3314};
3315
3316exports.stopRequested = stopRequested;
3317
3318var clearRequested = function clearRequested() {
3319  return {
3320    type: IX2_CLEAR_REQUESTED
3321  };
3322};
3323
3324exports.clearRequested = clearRequested;
3325
3326var eventListenerAdded = function eventListenerAdded(target, listenerParams) {
3327  return {
3328    type: IX2_EVENT_LISTENER_ADDED,
3329    payload: {
3330      target: target,
3331      listenerParams: listenerParams
3332    }
3333  };
3334};
3335
3336exports.eventListenerAdded = eventListenerAdded;
3337
3338var testFrameRendered = function testFrameRendered() {
3339  var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
3340  return {
3341    type: IX2_TEST_FRAME_RENDERED,
3342    payload: {
3343      step: step
3344    }
3345  };
3346};
3347
3348exports.testFrameRendered = testFrameRendered;
3349
3350var eventStateChanged = function eventStateChanged(stateKey, newState) {
3351  return {
3352    type: IX2_EVENT_STATE_CHANGED,
3353    payload: {
3354      stateKey: stateKey,
3355      newState: newState
3356    }
3357  };
3358};
3359
3360exports.eventStateChanged = eventStateChanged;
3361
3362var animationFrameChanged = function animationFrameChanged(now, parameters) {
3363  return {
3364    type: IX2_ANIMATION_FRAME_CHANGED,
3365    payload: {
3366      now: now,
3367      parameters: parameters
3368    }
3369  };
3370};
3371
3372exports.animationFrameChanged = animationFrameChanged;
3373
3374var parameterChanged = function parameterChanged(key, value) {
3375  return {
3376    type: IX2_PARAMETER_CHANGED,
3377    payload: {
3378      key: key,
3379      value: value
3380    }
3381  };
3382};
3383
3384exports.parameterChanged = parameterChanged;
3385
3386var instanceAdded = function instanceAdded(options) {
3387  return {
3388    type: IX2_INSTANCE_ADDED,
3389    payload: (0, _extends2["default"])({}, options)
3390  };
3391};
3392
3393exports.instanceAdded = instanceAdded;
3394
3395var instanceStarted = function instanceStarted(instanceId, time) {
3396  return {
3397    type: IX2_INSTANCE_STARTED,
3398    payload: {
3399      instanceId: instanceId,
3400      time: time
3401    }
3402  };
3403};
3404
3405exports.instanceStarted = instanceStarted;
3406
3407var instanceRemoved = function instanceRemoved(instanceId) {
3408  return {
3409    type: IX2_INSTANCE_REMOVED,
3410    payload: {
3411      instanceId: instanceId
3412    }
3413  };
3414};
3415
3416exports.instanceRemoved = instanceRemoved;
3417
3418var elementStateChanged = function elementStateChanged(elementId, actionTypeId, current, actionItem) {
3419  return {
3420    type: IX2_ELEMENT_STATE_CHANGED,
3421    payload: {
3422      elementId: elementId,
3423      actionTypeId: actionTypeId,
3424      current: current,
3425      actionItem: actionItem
3426    }
3427  };
3428};
3429
3430exports.elementStateChanged = elementStateChanged;
3431
3432var actionListPlaybackChanged = function actionListPlaybackChanged(_ref4) {
3433  var actionListId = _ref4.actionListId,
3434      isPlaying = _ref4.isPlaying;
3435  return {
3436    type: IX2_ACTION_LIST_PLAYBACK_CHANGED,
3437    payload: {
3438      actionListId: actionListId,
3439      isPlaying: isPlaying
3440    }
3441  };
3442};
3443
3444exports.actionListPlaybackChanged = actionListPlaybackChanged;
3445
3446var viewportWidthChanged = function viewportWidthChanged(_ref5) {
3447  var width = _ref5.width,
3448      mediaQueries = _ref5.mediaQueries;
3449  return {
3450    type: IX2_VIEWPORT_WIDTH_CHANGED,
3451    payload: {
3452      width: width,
3453      mediaQueries: mediaQueries
3454    }
3455  };
3456};
3457
3458exports.viewportWidthChanged = viewportWidthChanged;
3459
3460var mediaQueriesDefined = function mediaQueriesDefined() {
3461  return {
3462    type: IX2_MEDIA_QUERIES_DEFINED
3463  };
3464};
3465
3466exports.mediaQueriesDefined = mediaQueriesDefined;
3467
3468/***/ }),
3469/* 66 */
3470/***/ (function(module, exports, __webpack_require__) {
3471
3472var baseCreate = __webpack_require__(126),
3473    baseLodash = __webpack_require__(67);
3474
3475/**
3476 * The base constructor for creating `lodash` wrapper objects.
3477 *
3478 * @private
3479 * @param {*} value The value to wrap.
3480 * @param {boolean} [chainAll] Enable explicit method chain sequences.
3481 */
3482function LodashWrapper(value, chainAll) {
3483  this.__wrapped__ = value;
3484  this.__actions__ = [];
3485  this.__chain__ = !!chainAll;
3486  this.__index__ = 0;
3487  this.__values__ = undefined;
3488}
3489
3490LodashWrapper.prototype = baseCreate(baseLodash.prototype);
3491LodashWrapper.prototype.constructor = LodashWrapper;
3492
3493module.exports = LodashWrapper;
3494
3495
3496/***/ }),
3497/* 67 */
3498/***/ (function(module, exports) {
3499
3500/**
3501 * The function whose prototype chain sequence wrappers inherit from.
3502 *
3503 * @private
3504 */
3505function baseLodash() {
3506  // No operation performed.
3507}
3508
3509module.exports = baseLodash;
3510
3511
3512/***/ }),
3513/* 68 */
3514/***/ (function(module, exports, __webpack_require__) {
3515
3516var baseCreate = __webpack_require__(126),
3517    baseLodash = __webpack_require__(67);
3518
3519/** Used as references for the maximum length and index of an array. */
3520var MAX_ARRAY_LENGTH = 4294967295;
3521
3522/**
3523 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
3524 *
3525 * @private
3526 * @constructor
3527 * @param {*} value The value to wrap.
3528 */
3529function LazyWrapper(value) {
3530  this.__wrapped__ = value;
3531  this.__actions__ = [];
3532  this.__dir__ = 1;
3533  this.__filtered__ = false;
3534  this.__iteratees__ = [];
3535  this.__takeCount__ = MAX_ARRAY_LENGTH;
3536  this.__views__ = [];
3537}
3538
3539// Ensure `LazyWrapper` is an instance of `baseLodash`.
3540LazyWrapper.prototype = baseCreate(baseLodash.prototype);
3541LazyWrapper.prototype.constructor = LazyWrapper;
3542
3543module.exports = LazyWrapper;
3544
3545
3546/***/ }),
3547/* 69 */
3548/***/ (function(module, exports, __webpack_require__) {
3549
3550"use strict";
3551 // @wf-will-never-add-flow-to-this-file
3552
3553/* eslint-disable eslint-comments/no-unlimited-disable */
3554
3555/* eslint-disable */
3556
3557/*!
3558 * tram.js v0.8.2-global
3559 * Cross-browser CSS3 transitions in JavaScript
3560 * https://github.com/bkwld/tram
3561 * MIT License
3562 */
3563
3564/* prettier-ignore */
3565
3566var _interopRequireDefault = __webpack_require__(0);
3567
3568var _typeof2 = _interopRequireDefault(__webpack_require__(13));
3569
3570window.tram = function (a) {
3571  function b(a, b) {
3572    var c = new M.Bare();
3573    return c.init(a, b);
3574  }
3575
3576  function c(a) {
3577    return a.replace(/[A-Z]/g, function (a) {
3578      return "-" + a.toLowerCase();
3579    });
3580  }
3581
3582  function d(a) {
3583    var b = parseInt(a.slice(1), 16),
3584        c = b >> 16 & 255,
3585        d = b >> 8 & 255,
3586        e = 255 & b;
3587    return [c, d, e];
3588  }
3589
3590  function e(a, b, c) {
3591    return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1);
3592  }
3593
3594  function f() {}
3595
3596  function g(a, b) {
3597    j("Type warning: Expected: [" + a + "] Got: [" + (0, _typeof2["default"])(b) + "] " + b);
3598  }
3599
3600  function h(a, b, c) {
3601    j("Units do not match [" + a + "]: " + b + ", " + c);
3602  }
3603
3604  function i(a, b, c) {
3605    if (void 0 !== b && (c = b), void 0 === a) return c;
3606    var d = c;
3607    return $.test(a) || !_.test(a) ? d = parseInt(a, 10) : _.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c;
3608  }
3609
3610  function j(a) {
3611    U.debug && window && window.console.warn(a);
3612  }
3613
3614  function k(a) {
3615    for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) {
3616      var e = a[b];
3617      e && d.push(e);
3618    }
3619
3620    return d;
3621  }
3622
3623  var l = function (a, b, c) {
3624    function d(a) {
3625      return "object" == (0, _typeof2["default"])(a);
3626    }
3627
3628    function e(a) {
3629      return "function" == typeof a;
3630    }
3631
3632    function f() {}
3633
3634    function g(h, i) {
3635      function j() {
3636        var a = new k();
3637        return e(a.init) && a.init.apply(a, arguments), a;
3638      }
3639
3640      function k() {}
3641
3642      i === c && (i = h, h = Object), j.Bare = k;
3643      var l,
3644          m = f[a] = h[a],
3645          n = k[a] = j[a] = new f();
3646      return n.constructor = j, j.mixin = function (b) {
3647        return k[a] = j[a] = g(j, b)[a], j;
3648      }, j.open = function (a) {
3649        if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l)) for (var c in l) {
3650          b.call(l, c) && (n[c] = l[c]);
3651        }
3652        return e(n.init) || (n.init = h), j;
3653      }, j.open(i);
3654    }
3655
3656    return g;
3657  }("prototype", {}.hasOwnProperty),
3658      m = {
3659    ease: ["ease", function (a, b, c, d) {
3660      var e = (a /= d) * a,
3661          f = e * a;
3662      return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a);
3663    }],
3664    "ease-in": ["ease-in", function (a, b, c, d) {
3665      var e = (a /= d) * a,
3666          f = e * a;
3667      return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e);
3668    }],
3669    "ease-out": ["ease-out", function (a, b, c, d) {
3670      var e = (a /= d) * a,
3671          f = e * a;
3672      return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a);
3673    }],
3674    "ease-in-out": ["ease-in-out", function (a, b, c, d) {
3675      var e = (a /= d) * a,
3676          f = e * a;
3677      return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e);
3678    }],
3679    linear: ["linear", function (a, b, c, d) {
3680      return c * a / d + b;
3681    }],
3682    "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function (a, b, c, d) {
3683      return c * (a /= d) * a + b;
3684    }],
3685    "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function (a, b, c, d) {
3686      return -c * (a /= d) * (a - 2) + b;
3687    }],
3688    "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function (a, b, c, d) {
3689      return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b;
3690    }],
3691    "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function (a, b, c, d) {
3692      return c * (a /= d) * a * a + b;
3693    }],
3694    "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function (a, b, c, d) {
3695      return c * ((a = a / d - 1) * a * a + 1) + b;
3696    }],
3697    "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function (a, b, c, d) {
3698      return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b;
3699    }],
3700    "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function (a, b, c, d) {
3701      return c * (a /= d) * a * a * a + b;
3702    }],
3703    "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function (a, b, c, d) {
3704      return -c * ((a = a / d - 1) * a * a * a - 1) + b;
3705    }],
3706    "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function (a, b, c, d) {
3707      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b;
3708    }],
3709    "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function (a, b, c, d) {
3710      return c * (a /= d) * a * a * a * a + b;
3711    }],
3712    "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function (a, b, c, d) {
3713      return c * ((a = a / d - 1) * a * a * a * a + 1) + b;
3714    }],
3715    "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function (a, b, c, d) {
3716      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b;
3717    }],
3718    "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function (a, b, c, d) {
3719      return -c * Math.cos(a / d * (Math.PI / 2)) + c + b;
3720    }],
3721    "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function (a, b, c, d) {
3722      return c * Math.sin(a / d * (Math.PI / 2)) + b;
3723    }],
3724    "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function (a, b, c, d) {
3725      return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b;
3726    }],
3727    "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function (a, b, c, d) {
3728      return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b;
3729    }],
3730    "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function (a, b, c, d) {
3731      return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b;
3732    }],
3733    "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function (a, b, c, d) {
3734      return 0 === a ? b : a === d ? b + c : (a /= d / 2) < 1 ? c / 2 * Math.pow(2, 10 * (a - 1)) + b : c / 2 * (-Math.pow(2, -10 * --a) + 2) + b;
3735    }],
3736    "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function (a, b, c, d) {
3737      return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b;
3738    }],
3739    "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function (a, b, c, d) {
3740      return c * Math.sqrt(1 - (a = a / d - 1) * a) + b;
3741    }],
3742    "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function (a, b, c, d) {
3743      return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b;
3744    }],
3745    "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function (a, b, c, d, e) {
3746      return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b;
3747    }],
3748    "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function (a, b, c, d, e) {
3749      return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b;
3750    }],
3751    "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function (a, b, c, d, e) {
3752      return void 0 === e && (e = 1.70158), (a /= d / 2) < 1 ? c / 2 * a * a * (((e *= 1.525) + 1) * a - e) + b : c / 2 * ((a -= 2) * a * (((e *= 1.525) + 1) * a + e) + 2) + b;
3753    }]
3754  },
3755      n = {
3756    "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)",
3757    "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)",
3758    "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)"
3759  },
3760      o = document,
3761      p = window,
3762      q = "bkwld-tram",
3763      r = /[\-\.0-9]/g,
3764      s = /[A-Z]/,
3765      t = "number",
3766      u = /^(rgb|#)/,
3767      v = /(em|cm|mm|in|pt|pc|px)$/,
3768      w = /(em|cm|mm|in|pt|pc|px|%)$/,
3769      x = /(deg|rad|turn)$/,
3770      y = "unitless",
3771      z = /(all|none) 0s ease 0s/,
3772      A = /^(width|height)$/,
3773      B = " ",
3774      C = o.createElement("a"),
3775      D = ["Webkit", "Moz", "O", "ms"],
3776      E = ["-webkit-", "-moz-", "-o-", "-ms-"],
3777      F = function F(a) {
3778    if (a in C.style) return {
3779      dom: a,
3780      css: a
3781    };
3782    var b,
3783        c,
3784        d = "",
3785        e = a.split("-");
3786
3787    for (b = 0; b < e.length; b++) {
3788      d += e[b].charAt(0).toUpperCase() + e[b].slice(1);
3789    }
3790
3791    for (b = 0; b < D.length; b++) {
3792      if (c = D[b] + d, c in C.style) return {
3793        dom: c,
3794        css: E[b] + a
3795      };
3796    }
3797  },
3798      G = b.support = {
3799    bind: Function.prototype.bind,
3800    transform: F("transform"),
3801    transition: F("transition"),
3802    backface: F("backface-visibility"),
3803    timing: F("transition-timing-function")
3804  };
3805
3806  if (G.transition) {
3807    var H = G.timing.dom;
3808    if (C.style[H] = m["ease-in-back"][0], !C.style[H]) for (var I in n) {
3809      m[I][0] = n[I];
3810    }
3811  }
3812
3813  var J = b.frame = function () {
3814    var a = p.requestAnimationFrame || p.webkitRequestAnimationFrame || p.mozRequestAnimationFrame || p.oRequestAnimationFrame || p.msRequestAnimationFrame;
3815    return a && G.bind ? a.bind(p) : function (a) {
3816      p.setTimeout(a, 16);
3817    };
3818  }(),
3819      K = b.now = function () {
3820    var a = p.performance,
3821        b = a && (a.now || a.webkitNow || a.msNow || a.mozNow);
3822    return b && G.bind ? b.bind(a) : Date.now || function () {
3823      return +new Date();
3824    };
3825  }(),
3826      L = l(function (b) {
3827    function d(a, b) {
3828      var c = k(("" + a).split(B)),
3829          d = c[0];
3830      b = b || {};
3831      var e = Y[d];
3832      if (!e) return j("Unsupported property: " + d);
3833
3834      if (!b.weak || !this.props[d]) {
3835        var f = e[0],
3836            g = this.props[d];
3837        return g || (g = this.props[d] = new f.Bare()), g.init(this.$el, c, e, b), g;
3838      }
3839    }
3840
3841    function e(a, b, c) {
3842      if (a) {
3843        var e = (0, _typeof2["default"])(a);
3844        if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new S({
3845          duration: a,
3846          context: this,
3847          complete: h
3848        }), void (this.active = !0);
3849
3850        if ("string" == e && b) {
3851          switch (a) {
3852            case "hide":
3853              o.call(this);
3854              break;
3855
3856            case "stop":
3857              l.call(this);
3858              break;
3859
3860            case "redraw":
3861              p.call(this);
3862              break;
3863
3864            default:
3865              d.call(this, a, c && c[1]);
3866          }
3867
3868          return h.call(this);
3869        }
3870
3871        if ("function" == e) return void a.call(this, this);
3872
3873        if ("object" == e) {
3874          var f = 0;
3875          u.call(this, a, function (a, b) {
3876            a.span > f && (f = a.span), a.stop(), a.animate(b);
3877          }, function (a) {
3878            "wait" in a && (f = i(a.wait, 0));
3879          }), t.call(this), f > 0 && (this.timer = new S({
3880            duration: f,
3881            context: this
3882          }), this.active = !0, b && (this.timer.complete = h));
3883          var g = this,
3884              j = !1,
3885              k = {};
3886          J(function () {
3887            u.call(g, a, function (a) {
3888              a.active && (j = !0, k[a.name] = a.nextStyle);
3889            }), j && g.$el.css(k);
3890          });
3891        }
3892      }
3893    }
3894
3895    function f(a) {
3896      a = i(a, 0), this.active ? this.queue.push({
3897        options: a
3898      }) : (this.timer = new S({
3899        duration: a,
3900        context: this,
3901        complete: h
3902      }), this.active = !0);
3903    }
3904
3905    function g(a) {
3906      return this.active ? (this.queue.push({
3907        options: a,
3908        args: arguments
3909      }), void (this.timer.complete = h)) : j("No active transition timer. Use start() or wait() before then().");
3910    }
3911
3912    function h() {
3913      if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) {
3914        var a = this.queue.shift();
3915        e.call(this, a.options, !0, a.args);
3916      }
3917    }
3918
3919    function l(a) {
3920      this.timer && this.timer.destroy(), this.queue = [], this.active = !1;
3921      var b;
3922      "string" == typeof a ? (b = {}, b[a] = 1) : b = "object" == (0, _typeof2["default"])(a) && null != a ? a : this.props, u.call(this, b, v), t.call(this);
3923    }
3924
3925    function m(a) {
3926      l.call(this, a), u.call(this, a, w, x);
3927    }
3928
3929    function n(a) {
3930      "string" != typeof a && (a = "block"), this.el.style.display = a;
3931    }
3932
3933    function o() {
3934      l.call(this), this.el.style.display = "none";
3935    }
3936
3937    function p() {
3938      this.el.offsetHeight;
3939    }
3940
3941    function r() {
3942      l.call(this), a.removeData(this.el, q), this.$el = this.el = null;
3943    }
3944
3945    function t() {
3946      var a,
3947          b,
3948          c = [];
3949      this.upstream && c.push(this.upstream);
3950
3951      for (a in this.props) {
3952        b = this.props[a], b.active && c.push(b.string);
3953      }
3954
3955      c = c.join(","), this.style !== c && (this.style = c, this.el.style[G.transition.dom] = c);
3956    }
3957
3958    function u(a, b, e) {
3959      var f,
3960          g,
3961          h,
3962          i,
3963          j = b !== v,
3964          k = {};
3965
3966      for (f in a) {
3967        h = a[f], f in Z ? (k.transform || (k.transform = {}), k.transform[f] = h) : (s.test(f) && (f = c(f)), f in Y ? k[f] = h : (i || (i = {}), i[f] = h));
3968      }
3969
3970      for (f in k) {
3971        if (h = k[f], g = this.props[f], !g) {
3972          if (!j) continue;
3973          g = d.call(this, f);
3974        }
3975
3976        b.call(this, g, h);
3977      }
3978
3979      e && i && e.call(this, i);
3980    }
3981
3982    function v(a) {
3983      a.stop();
3984    }
3985
3986    function w(a, b) {
3987      a.set(b);
3988    }
3989
3990    function x(a) {
3991      this.$el.css(a);
3992    }
3993
3994    function y(a, c) {
3995      b[a] = function () {
3996        return this.children ? A.call(this, c, arguments) : (this.el && c.apply(this, arguments), this);
3997      };
3998    }
3999
4000    function A(a, b) {
4001      var c,
4002          d = this.children.length;
4003
4004      for (c = 0; d > c; c++) {
4005        a.apply(this.children[c], b);
4006      }
4007
4008      return this;
4009    }
4010
4011    b.init = function (b) {
4012      if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, U.keepInherited && !U.fallback) {
4013        var c = W(this.el, "transition");
4014        c && !z.test(c) && (this.upstream = c);
4015      }
4016
4017      G.backface && U.hideBackface && V(this.el, G.backface.css, "hidden");
4018    }, y("add", d), y("start", e), y("wait", f), y("then", g), y("next", h), y("stop", l), y("set", m), y("show", n), y("hide", o), y("redraw", p), y("destroy", r);
4019  }),
4020      M = l(L, function (b) {
4021    function c(b, c) {
4022      var d = a.data(b, q) || a.data(b, q, new L.Bare());
4023      return d.el || d.init(b), c ? d.start(c) : d;
4024    }
4025
4026    b.init = function (b, d) {
4027      var e = a(b);
4028      if (!e.length) return this;
4029      if (1 === e.length) return c(e[0], d);
4030      var f = [];
4031      return e.each(function (a, b) {
4032        f.push(c(b, d));
4033      }), this.children = f, this;
4034    };
4035  }),
4036      N = l(function (a) {
4037    function b() {
4038      var a = this.get();
4039      this.update("auto");
4040      var b = this.get();
4041      return this.update(a), b;
4042    }
4043
4044    function c(a, b, c) {
4045      return void 0 !== b && (c = b), a in m ? a : c;
4046    }
4047
4048    function d(a) {
4049      var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a);
4050      return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3");
4051    }
4052
4053    var f = {
4054      duration: 500,
4055      ease: "ease",
4056      delay: 0
4057    };
4058    a.init = function (a, b, d, e) {
4059      this.$el = a, this.el = a[0];
4060      var g = b[0];
4061      d[2] && (g = d[2]), X[g] && (g = X[g]), this.name = g, this.type = d[1], this.duration = i(b[1], this.duration, f.duration), this.ease = c(b[2], this.ease, f.ease), this.delay = i(b[3], this.delay, f.delay), this.span = this.duration + this.delay, this.active = !1, this.nextStyle = null, this.auto = A.test(this.name), this.unit = e.unit || this.unit || U.defaultUnit, this.angle = e.angle || this.angle || U.defaultAngle, U.fallback || e.fallback ? this.animate = this.fallback : (this.animate = this.transition, this.string = this.name + B + this.duration + "ms" + ("ease" != this.ease ? B + m[this.ease][0] : "") + (this.delay ? B + this.delay + "ms" : ""));
4062    }, a.set = function (a) {
4063      a = this.convert(a, this.type), this.update(a), this.redraw();
4064    }, a.transition = function (a) {
4065      this.active = !0, a = this.convert(a, this.type), this.auto && ("auto" == this.el.style[this.name] && (this.update(this.get()), this.redraw()), "auto" == a && (a = b.call(this))), this.nextStyle = a;
4066    }, a.fallback = function (a) {
4067      var c = this.el.style[this.name] || this.convert(this.get(), this.type);
4068      a = this.convert(a, this.type), this.auto && ("auto" == c && (c = this.convert(this.get(), this.type)), "auto" == a && (a = b.call(this))), this.tween = new R({
4069        from: c,
4070        to: a,
4071        duration: this.duration,
4072        delay: this.delay,
4073        ease: this.ease,
4074        update: this.update,
4075        context: this
4076      });
4077    }, a.get = function () {
4078      return W(this.el, this.name);
4079    }, a.update = function (a) {
4080      V(this.el, this.name, a);
4081    }, a.stop = function () {
4082      (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, V(this.el, this.name, this.get()));
4083      var a = this.tween;
4084      a && a.context && a.destroy();
4085    }, a.convert = function (a, b) {
4086      if ("auto" == a && this.auto) return a;
4087      var c,
4088          e = "number" == typeof a,
4089          f = "string" == typeof a;
4090
4091      switch (b) {
4092        case t:
4093          if (e) return a;
4094          if (f && "" === a.replace(r, "")) return +a;
4095          c = "number(unitless)";
4096          break;
4097
4098        case u:
4099          if (f) {
4100            if ("" === a && this.original) return this.original;
4101            if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a);
4102          }
4103
4104          c = "hex or rgb string";
4105          break;
4106
4107        case v:
4108          if (e) return a + this.unit;
4109          if (f && b.test(a)) return a;
4110          c = "number(px) or string(unit)";
4111          break;
4112
4113        case w:
4114          if (e) return a + this.unit;
4115          if (f && b.test(a)) return a;
4116          c = "number(px) or string(unit or %)";
4117          break;
4118
4119        case x:
4120          if (e) return a + this.angle;
4121          if (f && b.test(a)) return a;
4122          c = "number(deg) or string(angle)";
4123          break;
4124
4125        case y:
4126          if (e) return a;
4127          if (f && w.test(a)) return a;
4128          c = "number(unitless) or string(unit or %)";
4129      }
4130
4131      return g(c, a), a;
4132    }, a.redraw = function () {
4133      this.el.offsetHeight;
4134    };
4135  }),
4136      O = l(N, function (a, b) {
4137    a.init = function () {
4138      b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), u));
4139    };
4140  }),
4141      P = l(N, function (a, b) {
4142    a.init = function () {
4143      b.init.apply(this, arguments), this.animate = this.fallback;
4144    }, a.get = function () {
4145      return this.$el[this.name]();
4146    }, a.update = function (a) {
4147      this.$el[this.name](a);
4148    };
4149  }),
4150      Q = l(N, function (a, b) {
4151    function c(a, b) {
4152      var c, d, e, f, g;
4153
4154      for (c in a) {
4155        f = Z[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e);
4156      }
4157    }
4158
4159    a.init = function () {
4160      b.init.apply(this, arguments), this.current || (this.current = {}, Z.perspective && U.perspective && (this.current.perspective = U.perspective, V(this.el, this.name, this.style(this.current)), this.redraw()));
4161    }, a.set = function (a) {
4162      c.call(this, a, function (a, b) {
4163        this.current[a] = b;
4164      }), V(this.el, this.name, this.style(this.current)), this.redraw();
4165    }, a.transition = function (a) {
4166      var b = this.values(a);
4167      this.tween = new T({
4168        current: this.current,
4169        values: b,
4170        duration: this.duration,
4171        delay: this.delay,
4172        ease: this.ease
4173      });
4174      var c,
4175          d = {};
4176
4177      for (c in this.current) {
4178        d[c] = c in b ? b[c] : this.current[c];
4179      }
4180
4181      this.active = !0, this.nextStyle = this.style(d);
4182    }, a.fallback = function (a) {
4183      var b = this.values(a);
4184      this.tween = new T({
4185        current: this.current,
4186        values: b,
4187        duration: this.duration,
4188        delay: this.delay,
4189        ease: this.ease,
4190        update: this.update,
4191        context: this
4192      });
4193    }, a.update = function () {
4194      V(this.el, this.name, this.style(this.current));
4195    }, a.style = function (a) {
4196      var b,
4197          c = "";
4198
4199      for (b in a) {
4200        c += b + "(" + a[b] + ") ";
4201      }
4202
4203      return c;
4204    }, a.values = function (a) {
4205      var b,
4206          d = {};
4207      return c.call(this, a, function (a, c, e) {
4208        d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e));
4209      }), d;
4210    };
4211  }),
4212      R = l(function (b) {
4213    function c(a) {
4214      1 === n.push(a) && J(g);
4215    }
4216
4217    function g() {
4218      var a,
4219          b,
4220          c,
4221          d = n.length;
4222      if (d) for (J(g), b = K(), a = d; a--;) {
4223        c = n[a], c && c.render(b);
4224      }
4225    }
4226
4227    function i(b) {
4228      var c,
4229          d = a.inArray(b, n);
4230      d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c)));
4231    }
4232
4233    function j(a) {
4234      return Math.round(a * o) / o;
4235    }
4236
4237    function k(a, b, c) {
4238      return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2]));
4239    }
4240
4241    var l = {
4242      ease: m.ease[1],
4243      from: 0,
4244      to: 1
4245    };
4246    b.init = function (a) {
4247      this.duration = a.duration || 0, this.delay = a.delay || 0;
4248      var b = a.ease || l.ease;
4249      m[b] && (b = m[b][1]), "function" != typeof b && (b = l.ease), this.ease = b, this.update = a.update || f, this.complete = a.complete || f, this.context = a.context || this, this.name = a.name;
4250      var c = a.from,
4251          d = a.to;
4252      void 0 === c && (c = l.from), void 0 === d && (d = l.to), this.unit = a.unit || "", "number" == typeof c && "number" == typeof d ? (this.begin = c, this.change = d - c) : this.format(d, c), this.value = this.begin + this.unit, this.start = K(), a.autoplay !== !1 && this.play();
4253    }, b.play = function () {
4254      this.active || (this.start || (this.start = K()), this.active = !0, c(this));
4255    }, b.stop = function () {
4256      this.active && (this.active = !1, i(this));
4257    }, b.render = function (a) {
4258      var b,
4259          c = a - this.start;
4260
4261      if (this.delay) {
4262        if (c <= this.delay) return;
4263        c -= this.delay;
4264      }
4265
4266      if (c < this.duration) {
4267        var d = this.ease(c, 0, 1, this.duration);
4268        return b = this.startRGB ? k(this.startRGB, this.endRGB, d) : j(this.begin + d * this.change), this.value = b + this.unit, void this.update.call(this.context, this.value);
4269      }
4270
4271      b = this.endHex || this.begin + this.change, this.value = b + this.unit, this.update.call(this.context, this.value), this.complete.call(this.context), this.destroy();
4272    }, b.format = function (a, b) {
4273      if (b += "", a += "", "#" == a.charAt(0)) return this.startRGB = d(b), this.endRGB = d(a), this.endHex = a, this.begin = 0, void (this.change = 1);
4274
4275      if (!this.unit) {
4276        var c = b.replace(r, ""),
4277            e = a.replace(r, "");
4278        c !== e && h("tween", b, a), this.unit = c;
4279      }
4280
4281      b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b;
4282    }, b.destroy = function () {
4283      this.stop(), this.context = null, this.ease = this.update = this.complete = f;
4284    };
4285    var n = [],
4286        o = 1e3;
4287  }),
4288      S = l(R, function (a) {
4289    a.init = function (a) {
4290      this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play();
4291    }, a.render = function (a) {
4292      var b = a - this.start;
4293      b < this.duration || (this.complete.call(this.context), this.destroy());
4294    };
4295  }),
4296      T = l(R, function (a, b) {
4297    a.init = function (a) {
4298      this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current;
4299      var b, c;
4300
4301      for (b in a.values) {
4302        c = a.values[b], this.current[b] !== c && this.tweens.push(new R({
4303          name: b,
4304          from: this.current[b],
4305          to: c,
4306          duration: a.duration,
4307          delay: a.delay,
4308          ease: a.ease,
4309          autoplay: !1
4310        }));
4311      }
4312
4313      this.play();
4314    }, a.render = function (a) {
4315      var b,
4316          c,
4317          d = this.tweens.length,
4318          e = !1;
4319
4320      for (b = d; b--;) {
4321        c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0);
4322      }
4323
4324      return e ? void (this.update && this.update.call(this.context)) : this.destroy();
4325    }, a.destroy = function () {
4326      if (b.destroy.call(this), this.tweens) {
4327        var a,
4328            c = this.tweens.length;
4329
4330        for (a = c; a--;) {
4331          this.tweens[a].destroy();
4332        }
4333
4334        this.tweens = null, this.current = null;
4335      }
4336    };
4337  }),
4338      U = b.config = {
4339    debug: !1,
4340    defaultUnit: "px",
4341    defaultAngle: "deg",
4342    keepInherited: !1,
4343    hideBackface: !1,
4344    perspective: "",
4345    fallback: !G.transition,
4346    agentTests: []
4347  };
4348
4349  b.fallback = function (a) {
4350    if (!G.transition) return U.fallback = !0;
4351    U.agentTests.push("(" + a + ")");
4352    var b = new RegExp(U.agentTests.join("|"), "i");
4353    U.fallback = b.test(navigator.userAgent);
4354  }, b.fallback("6.0.[2-5] Safari"), b.tween = function (a) {
4355    return new R(a);
4356  }, b.delay = function (a, b, c) {
4357    return new S({
4358      complete: b,
4359      duration: a,
4360      context: c
4361    });
4362  }, a.fn.tram = function (a) {
4363    return b.call(null, this, a);
4364  };
4365  var V = a.style,
4366      W = a.css,
4367      X = {
4368    transform: G.transform && G.transform.css
4369  },
4370      Y = {
4371    color: [O, u],
4372    background: [O, u, "background-color"],
4373    "outline-color": [O, u],
4374    "border-color": [O, u],
4375    "border-top-color": [O, u],
4376    "border-right-color": [O, u],
4377    "border-bottom-color": [O, u],
4378    "border-left-color": [O, u],
4379    "border-width": [N, v],
4380    "border-top-width": [N, v],
4381    "border-right-width": [N, v],
4382    "border-bottom-width": [N, v],
4383    "border-left-width": [N, v],
4384    "border-spacing": [N, v],
4385    "letter-spacing": [N, v],
4386    margin: [N, v],
4387    "margin-top": [N, v],
4388    "margin-right": [N, v],
4389    "margin-bottom": [N, v],
4390    "margin-left": [N, v],
4391    padding: [N, v],
4392    "padding-top": [N, v],
4393    "padding-right": [N, v],
4394    "padding-bottom": [N, v],
4395    "padding-left": [N, v],
4396    "outline-width": [N, v],
4397    opacity: [N, t],
4398    top: [N, w],
4399    right: [N, w],
4400    bottom: [N, w],
4401    left: [N, w],
4402    "font-size": [N, w],
4403    "text-indent": [N, w],
4404    "word-spacing": [N, w],
4405    width: [N, w],
4406    "min-width": [N, w],
4407    "max-width": [N, w],
4408    height: [N, w],
4409    "min-height": [N, w],
4410    "max-height": [N, w],
4411    "line-height": [N, y],
4412    "scroll-top": [P, t, "scrollTop"],
4413    "scroll-left": [P, t, "scrollLeft"]
4414  },
4415      Z = {};
4416  G.transform && (Y.transform = [Q], Z = {
4417    x: [w, "translateX"],
4418    y: [w, "translateY"],
4419    rotate: [x],
4420    rotateX: [x],
4421    rotateY: [x],
4422    scale: [t],
4423    scaleX: [t],
4424    scaleY: [t],
4425    skew: [x],
4426    skewX: [x],
4427    skewY: [x]
4428  }), G.transform && G.backface && (Z.z = [w, "translateZ"], Z.rotateZ = [x], Z.scaleZ = [t], Z.perspective = [v]);
4429  var $ = /ms/,
4430      _ = /s|\./;
4431  return a.tram = b;
4432}(window.jQuery);
4433
4434/***/ }),
4435/* 70 */
4436/***/ (function(module, exports, __webpack_require__) {
4437
4438var DESCRIPTORS = __webpack_require__(14);
4439var call = __webpack_require__(40);
4440var propertyIsEnumerableModule = __webpack_require__(146);
4441var createPropertyDescriptor = __webpack_require__(71);
4442var toIndexedObject = __webpack_require__(26);
4443var toPropertyKey = __webpack_require__(73);
4444var hasOwn = __webpack_require__(9);
4445var IE8_DOM_DEFINE = __webpack_require__(80);
4446
4447// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
4448var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
4449
4450// `Object.getOwnPropertyDescriptor` method
4451// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
4452exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
4453  O = toIndexedObject(O);
4454  P = toPropertyKey(P);
4455  if (IE8_DOM_DEFINE) try {
4456    return $getOwnPropertyDescriptor(O, P);
4457  } catch (error) { /* empty */ }
4458  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
4459};
4460
4461
4462/***/ }),
4463/* 71 */
vendor: 7,337 bytes, lines 4464-4728
4464/***/ (function(module, exports) {
4465
4466module.exports = function (bitmap, value) {
4467  return {
4468    enumerable: !(bitmap & 1),
4469    configurable: !(bitmap & 2),
4470    writable: !(bitmap & 4),
4471    value: value
4472  };
4473};
4474
4475
4476/***/ }),
4477/* 72 */
4478/***/ (function(module, exports, __webpack_require__) {
4479
4480var global = __webpack_require__(1);
4481
4482var TypeError = global.TypeError;
4483
4484// `RequireObjectCoercible` abstract operation
4485// https://tc39.es/ecma262/#sec-requireobjectcoercible
4486module.exports = function (it) {
4487  if (it == undefined) throw TypeError("Can't call method on " + it);
4488  return it;
4489};
4490
4491
4492/***/ }),
4493/* 73 */
4494/***/ (function(module, exports, __webpack_require__) {
4495
4496var toPrimitive = __webpack_require__(149);
4497var isSymbol = __webpack_require__(74);
4498
4499// `ToPropertyKey` abstract operation
4500// https://tc39.es/ecma262/#sec-topropertykey
4501module.exports = function (argument) {
4502  var key = toPrimitive(argument, 'string');
4503  return isSymbol(key) ? key : key + '';
4504};
4505
4506
4507/***/ }),
4508/* 74 */
4509/***/ (function(module, exports, __webpack_require__) {
4510
4511var global = __webpack_require__(1);
4512var getBuiltIn = __webpack_require__(27);
4513var isCallable = __webpack_require__(7);
4514var isPrototypeOf = __webpack_require__(150);
4515var USE_SYMBOL_AS_UID = __webpack_require__(75);
4516
4517var Object = global.Object;
4518
4519module.exports = USE_SYMBOL_AS_UID ? function (it) {
4520  return typeof it == 'symbol';
4521} : function (it) {
4522  var $Symbol = getBuiltIn('Symbol');
4523  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));
4524};
4525
4526
4527/***/ }),
4528/* 75 */
4529/***/ (function(module, exports, __webpack_require__) {
4530
4531/* eslint-disable es/no-symbol -- required for testing */
4532var NATIVE_SYMBOL = __webpack_require__(76);
4533
4534module.exports = NATIVE_SYMBOL
4535  && !Symbol.sham
4536  && typeof Symbol.iterator == 'symbol';
4537
4538
4539/***/ }),
4540/* 76 */
4541/***/ (function(module, exports, __webpack_require__) {
4542
4543/* eslint-disable es/no-symbol -- required for testing */
4544var V8_VERSION = __webpack_require__(151);
4545var fails = __webpack_require__(19);
4546
4547// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
4548module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
4549  var symbol = Symbol();
4550  // Chrome 38 Symbol has incorrect toString conversion
4551  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
4552  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||
4553    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
4554    !Symbol.sham && V8_VERSION && V8_VERSION < 41;
4555});
4556
4557
4558/***/ }),
4559/* 77 */
4560/***/ (function(module, exports, __webpack_require__) {
4561
4562var global = __webpack_require__(1);
4563var shared = __webpack_require__(78);
4564var hasOwn = __webpack_require__(9);
4565var uid = __webpack_require__(79);
4566var NATIVE_SYMBOL = __webpack_require__(76);
4567var USE_SYMBOL_AS_UID = __webpack_require__(75);
4568
4569var WellKnownSymbolsStore = shared('wks');
4570var Symbol = global.Symbol;
4571var symbolFor = Symbol && Symbol['for'];
4572var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
4573
4574module.exports = function (name) {
4575  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {
4576    var description = 'Symbol.' + name;
4577    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {
4578      WellKnownSymbolsStore[name] = Symbol[name];
4579    } else if (USE_SYMBOL_AS_UID && symbolFor) {
4580      WellKnownSymbolsStore[name] = symbolFor(description);
4581    } else {
4582      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);
4583    }
4584  } return WellKnownSymbolsStore[name];
4585};
4586
4587
4588/***/ }),
4589/* 78 */
4590/***/ (function(module, exports, __webpack_require__) {
4591
4592var IS_PURE = __webpack_require__(157);
4593var store = __webpack_require__(41);
4594
4595(module.exports = function (key, value) {
4596  return store[key] || (store[key] = value !== undefined ? value : {});
4597})('versions', []).push({
4598  version: '3.19.0',
4599  mode: IS_PURE ? 'pure' : 'global',
4600  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
4601});
4602
4603
4604/***/ }),
4605/* 79 */
4606/***/ (function(module, exports, __webpack_require__) {
4607
4608var uncurryThis = __webpack_require__(5);
4609
4610var id = 0;
4611var postfix = Math.random();
4612var toString = uncurryThis(1.0.toString);
4613
4614module.exports = function (key) {
4615  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
4616};
4617
4618
4619/***/ }),
4620/* 80 */
4621/***/ (function(module, exports, __webpack_require__) {
4622
4623var DESCRIPTORS = __webpack_require__(14);
4624var fails = __webpack_require__(19);
4625var createElement = __webpack_require__(81);
4626
4627// Thank's IE8 for his funny defineProperty
4628module.exports = !DESCRIPTORS && !fails(function () {
4629  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing
4630  return Object.defineProperty(createElement('div'), 'a', {
4631    get: function () { return 7; }
4632  }).a != 7;
4633});
4634
4635
4636/***/ }),
4637/* 81 */
4638/***/ (function(module, exports, __webpack_require__) {
4639
4640var global = __webpack_require__(1);
4641var isObject = __webpack_require__(20);
4642
4643var document = global.document;
4644// typeof document.createElement is 'object' in old IE
4645var EXISTS = isObject(document) && isObject(document.createElement);
4646
4647module.exports = function (it) {
4648  return EXISTS ? document.createElement(it) : {};
4649};
4650
4651
4652/***/ }),
4653/* 82 */
4654/***/ (function(module, exports, __webpack_require__) {
4655
4656var uncurryThis = __webpack_require__(5);
4657var isCallable = __webpack_require__(7);
4658var store = __webpack_require__(41);
4659
4660var functionToString = uncurryThis(Function.toString);
4661
4662// this helper broken in `[email protected]`, so we can't use `shared` helper
4663if (!isCallable(store.inspectSource)) {
4664  store.inspectSource = function (it) {
4665    return functionToString(it);
4666  };
4667}
4668
4669module.exports = store.inspectSource;
4670
4671
4672/***/ }),
4673/* 83 */
4674/***/ (function(module, exports, __webpack_require__) {
4675
4676var shared = __webpack_require__(78);
4677var uid = __webpack_require__(79);
4678
4679var keys = shared('keys');
4680
4681module.exports = function (key) {
4682  return keys[key] || (keys[key] = uid(key));
4683};
4684
4685
4686/***/ }),
4687/* 84 */
4688/***/ (function(module, exports, __webpack_require__) {
4689
4690var uncurryThis = __webpack_require__(5);
4691var hasOwn = __webpack_require__(9);
4692var toIndexedObject = __webpack_require__(26);
4693var indexOf = __webpack_require__(85).indexOf;
4694var hiddenKeys = __webpack_require__(44);
4695
4696var push = uncurryThis([].push);
4697
4698module.exports = function (object, names) {
4699  var O = toIndexedObject(object);
4700  var i = 0;
4701  var result = [];
4702  var key;
4703  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
4704  // Don't enum bug & hidden keys
4705  while (names.length > i) if (hasOwn(O, key = names[i++])) {
4706    ~indexOf(result, key) || push(result, key);
4707  }
4708  return result;
4709};
4710
4711
4712/***/ }),
4713/* 85 */
4714/***/ (function(module, exports, __webpack_require__) {
4715
4716var toIndexedObject = __webpack_require__(26);
4717var toAbsoluteIndex = __webpack_require__(166);
4718var lengthOfArrayLike = __webpack_require__(167);
4719
4720// `Array.prototype.{ indexOf, includes }` methods implementation
4721var createMethod = function (IS_INCLUDES) {
4722  return function ($this, el, fromIndex) {
4723    var O = toIndexedObject($this);
4724    var length = lengthOfArrayLike(O);
4725    var index = toAbsoluteIndex(fromIndex, length);
4726    var value;
4727    // Array#includes uses SameValueZero equality algorithm
4728    // eslint-disable-next-line no-self-compare -- NaN check
4729    if (IS_INCLUDES && el != el) while (length > index) {
4730      value = O[index++];
4731      // eslint-disable-next-line no-self-compare -- NaN check
4732      if (value != value) return true;
4733    // Array#indexOf ignores holes, Array#includes - not
4734    } else for (;length > index; index++) {
4735      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
4736    } return !IS_INCLUDES && -1;
4737  };
4738};
4739
4740module.exports = {
4741  // `Array.prototype.includes` method
4742  // https://tc39.es/ecma262/#sec-array.prototype.includes
4743  includes: createMethod(true),
4744  // `Array.prototype.indexOf` method
4745  // https://tc39.es/ecma262/#sec-array.prototype.indexof
4746  indexOf: createMethod(false)
4747};
4748
4749
4750/***/ }),
4751/* 86 */
4752/***/ (function(module, exports) {
4753
4754var ceil = Math.ceil;
4755var floor = Math.floor;
4756
4757// `ToIntegerOrInfinity` abstract operation
4758// https://tc39.es/ecma262/#sec-tointegerorinfinity
4759module.exports = function (argument) {
4760  var number = +argument;
4761  // eslint-disable-next-line no-self-compare -- safe
4762  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);
4763};
4764
4765
4766/***/ }),
4767/* 87 */
4768/***/ (function(module, __webpack_exports__, __webpack_require__) {
4769
4770"use strict";
4771__webpack_require__.r(__webpack_exports__);
4772/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46);
4773/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return _createStore__WEBPACK_IMPORTED_MODULE_0__["default"]; });
4774
4775/* harmony import */ var _combineReducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(90);
4776/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return _combineReducers__WEBPACK_IMPORTED_MODULE_1__["default"]; });
4777
4778/* harmony import */ var _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(92);
4779/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__["default"]; });
4780
4781/* harmony import */ var _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93);
4782/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__["default"]; });
4783
4784/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(47);
4785/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _compose__WEBPACK_IMPORTED_MODULE_4__["default"]; });
4786
4787/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(91);
4788
4789
4790
4791
4792
4793
4794
4795/*
4796* This is a dummy function to check if the function name has been altered by minification.
4797* If the function has been minified and NODE_ENV !== 'production', warn the user.
4798*/
4799function isCrushed() {}
4800
4801if (false) {}
4802
4803
4804
4805/***/ }),
4806/* 88 */
4807/***/ (function(module, __webpack_exports__, __webpack_require__) {
4808
4809"use strict";
4810__webpack_require__.r(__webpack_exports__);
4811/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(177);
4812/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(182);
4813/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(184);
4814
4815
4816
4817
4818/** `Object#toString` result references. */
4819var objectTag = '[object Object]';
4820
4821/** Used for built-in method references. */
4822var funcProto = Function.prototype,
4823    objectProto = Object.prototype;
4824
4825/** Used to resolve the decompiled source of functions. */
4826var funcToString = funcProto.toString;
4827
4828/** Used to check objects for own properties. */
4829var hasOwnProperty = objectProto.hasOwnProperty;
4830
4831/** Used to infer the `Object` constructor. */
4832var objectCtorString = funcToString.call(Object);
4833
4834/**
4835 * Checks if `value` is a plain object, that is, an object created by the
4836 * `Object` constructor or one with a `[[Prototype]]` of `null`.
4837 *
4838 * @static
4839 * @memberOf _
4840 * @since 0.8.0
4841 * @category Lang
4842 * @param {*} value The value to check.
4843 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
4844 * @example
4845 *
4846 * function Foo() {
4847 *   this.a = 1;
4848 * }
4849 *
4850 * _.isPlainObject(new Foo);
4851 * // => false
4852 *
4853 * _.isPlainObject([1, 2, 3]);
4854 * // => false
4855 *
4856 * _.isPlainObject({ 'x': 0, 'y': 0 });
4857 * // => true
4858 *
4859 * _.isPlainObject(Object.create(null));
4860 * // => true
4861 */
4862function isPlainObject(value) {
4863  if (!Object(_isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value) || Object(_baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) != objectTag) {
4864    return false;
4865  }
4866  var proto = Object(_getPrototype_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value);
4867  if (proto === null) {
4868    return true;
4869  }
4870  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
4871  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
4872    funcToString.call(Ctor) == objectCtorString;
4873}
4874
4875/* harmony default export */ __webpack_exports__["default"] = (isPlainObject);
4876
4877
4878/***/ }),
4879/* 89 */
4880/***/ (function(module, __webpack_exports__, __webpack_require__) {
4881
4882"use strict";
4883__webpack_require__.r(__webpack_exports__);
4884/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(178);
4885
4886
4887/** Built-in value references. */
4888var Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__["default"].Symbol;
4889
4890/* harmony default export */ __webpack_exports__["default"] = (Symbol);
4891
4892
4893/***/ }),
4894/* 90 */
4895/***/ (function(module, __webpack_exports__, __webpack_require__) {
4896
4897"use strict";
4898__webpack_require__.r(__webpack_exports__);
4899/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return combineReducers; });
4900/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46);
4901/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(88);
4902/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91);
4903
4904
4905
4906
4907function getUndefinedStateErrorMessage(key, action) {
4908  var actionType = action && action.type;
4909  var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
4910
4911  return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';
4912}
4913
4914function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unex
4914pectedKeyCache) {
4915  var reducerKeys = Object.keys(reducers);
4916  var argumentName = action && action.type === _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
4917
4918  if (reducerKeys.length === 0) {
4919    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
4920  }
4921
4922  if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(inputState)) {
4923    return 'The ' + argumentName + ' has unexpected type of "' + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"');
4924  }
4925
4926  var unexpectedKeys = Object.keys(inputState).filter(function (key) {
4927    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
4928  });
4929
4930  unexpectedKeys.forEach(function (key) {
4931    unexpectedKeyCache[key] = true;
4932  });
4933
4934  if (unexpectedKeys.length > 0) {
4935    return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('"' + unexpectedKeys.join('", "') + '" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('"' + reducerKeys.join('", "') + '". Unexpected keys will be ignored.');
4936  }
4937}
4938
4939function assertReducerSanity(reducers) {
4940  Object.keys(reducers).forEach(function (key) {
4941    var reducer = reducers[key];
4942    var initialState = reducer(undefined, { type: _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT });
4943
4944    if (typeof initialState === 'undefined') {
4945      throw new Error('Reducer "' + key + '" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');
4946    }
4947
4948    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');
4949    if (typeof reducer(undefined, { type: type }) === 'undefined') {
4950      throw new Error('Reducer "' + key + '" returned undefined when probed with a random type. ' + ('Don\'t try to handle ' + _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT + ' or other actions in "redux/*" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');
4951    }
4952  });
4953}
4954
4955/**
4956 * Turns an object whose values are different reducer functions, into a single
4957 * reducer function. It will call every child reducer, and gather their results
4958 * into a single state object, whose keys correspond to the keys of the passed
4959 * reducer functions.
4960 *
4961 * @param {Object} reducers An object whose values correspond to different
4962 * reducer functions that need to be combined into one. One handy way to obtain
4963 * it is to use ES6 `import * as reducers` syntax. The reducers may never return
4964 * undefined for any action. Instead, they should return their initial state
4965 * if the state passed to them was undefined, and the current state for any
4966 * unrecognized action.
4967 *
4968 * @returns {Function} A reducer function that invokes every reducer inside the
4969 * passed object, and builds a state object with the same shape.
4970 */
4971function combineReducers(reducers) {
4972  var reducerKeys = Object.keys(reducers);
4973  var finalReducers = {};
4974  for (var i = 0; i < reducerKeys.length; i++) {
4975    var key = reducerKeys[i];
4976
4977    if (false) {}
4978
4979    if (typeof reducers[key] === 'function') {
4980      finalReducers[key] = reducers[key];
4981    }
4982  }
4983  var finalReducerKeys = Object.keys(finalReducers);
4984
4985  if (false) { var unexpectedKeyCache; }
4986
4987  var sanityError;
4988  try {
4989    assertReducerSanity(finalReducers);
4990  } catch (e) {
4991    sanityError = e;
4992  }
4993
4994  return function combination() {
4995    var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
4996    var action = arguments[1];
4997
4998    if (sanityError) {
4999      throw sanityError;
5000    }
5001
5002    if (false) { var warningMessage; }
5003
5004    var hasChanged = false;
5005    var nextState = {};
5006    for (var i = 0; i < finalReducerKeys.length; i++) {
5007      var key = finalReducerKeys[i];
5008      var reducer = finalReducers[key];
5009      var previousStateForKey = state[key];
5010      var nextStateForKey = reducer(previousStateForKey, action);
5011      if (typeof nextStateForKey === 'undefined') {
5012        var errorMessage = getUndefinedStateErrorMessage(key, action);
5013        throw new Error(errorMessage);
5014      }
5015      nextState[key] = nextStateForKey;
5016      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
5017    }
5018    return hasChanged ? nextState : state;
5019  };
5020}
5021
5022/***/ }),
5023/* 91 */
5024/***/ (function(module, __webpack_exports__, __webpack_require__) {
5025
5026"use strict";
5027__webpack_require__.r(__webpack_exports__);
5028/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return warning; });
5029/**
5030 * Prints a warning in the console if it exists.
5031 *
5032 * @param {String} message The warning message.
5033 * @returns {void}
5034 */
5035function warning(message) {
5036  /* eslint-disable no-console */
5037  if (typeof console !== 'undefined' && typeof console.error === 'function') {
5038    console.error(message);
5039  }
5040  /* eslint-enable no-console */
5041  try {
5042    // This error was thrown as a convenience so that if you enable
5043    // "break on all exceptions" in your console,
5044    // it would pause the execution at this line.
5045    throw new Error(message);
5046    /* eslint-disable no-empty */
5047  } catch (e) {}
5048  /* eslint-enable no-empty */
5049}
5050
5051/***/ }),
5052/* 92 */
5053/***/ (function(module, __webpack_exports__, __webpack_require__) {
5054
5055"use strict";
5056__webpack_require__.r(__webpack_exports__);
5057/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return bindActionCreators; });
5058function bindActionCreator(actionCreator, dispatch) {
5059  return function () {
5060    return dispatch(actionCreator.apply(undefined, arguments));
5061  };
5062}
5063
5064/**
5065 * Turns an object whose values are action creators, into an object with the
5066 * same keys, but with every function wrapped into a `dispatch` call so they
5067 * may be invoked directly. This is just a convenience method, as you can call
5068 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
5069 *
5070 * For convenience, you can also pass a single function as the first argument,
5071 * and get a function in return.
5072 *
5073 * @param {Function|Object} actionCreators An object whose values are action
5074 * creator functions. One handy way to obtain it is to use ES6 `import * as`
5075 * syntax. You may also pass a single function.
5076 *
5077 * @param {Function} dispatch The `dispatch` function available on your Redux
5078 * store.
5079 *
5080 * @returns {Function|Object} The object mimicking the original object, but with
5081 * every action creator wrapped into the `dispatch` call. If you passed a
5082 * function as `actionCreators`, the return value will also be a single
5083 * function.
5084 */
5085function bindActionCreators(actionCreators, dispatch) {
5086  if (typeof actionCreators === 'function') {
5087    return bindActionCreator(actionCreators, dispatch);
5088  }
5089
5090  if (typeof actionCreators !== 'object' || actionCreators === null) {
5091    throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');
5092  }
5093
5094  var keys = Object.keys(actionCreators);
5095  var boundActionCreators = {};
5096  for (var i = 0; i < keys.length; i++) {
5097    var key = keys[i];
5098    var actionCreator = actionCreators[key];
5099    if (typeof actionCreator === 'function') {
5100      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
5101    }
5102  }
5103  return boundActionCreators;
5104}
5105
5106/***/ }),
5107/* 93 */
5108/***/ (function(module, __webpack_exports__, __webpack_require__) {
5109
5110"use strict";
5111__webpack_require__.r(__webpack_exports__);
5112/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return applyMiddleware; });
5113/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(47);
5114var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
5115
5116
5117
5118/**
5119 * Creates a store enhancer that applies middleware to the dispatch method
5120 * of the Redux store. This is handy for a variety of tasks, such as expressing
5121 * asynchronous actions in a concise manner, or logging every action payload.
5122 *
5123 * See `redux-thunk` package as an example of the Redux middleware.
5124 *
5125 * Because middleware is potentially asynchronous, this should be the first
5126 * store enhancer in the composition chain.
5127 *
5128 * Note that each middleware will be given the `dispatch` and `getState` functions
5129 * as named arguments.
5130 *
5131 * @param {...Function} middlewares The middleware chain to be applied.
5132 * @returns {Function} A store enhancer applying the middleware.
5133 */
5134function applyMiddleware() {
5135  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
5136    middlewares[_key] = arguments[_key];
5137  }
5138
5139  return function (createStore) {
5140    return function (reducer, preloadedState, enhancer) {
5141      var store = createStore(reducer, preloadedState, enhancer);
5142      var _dispatch = store.dispatch;
5143      var chain = [];
5144
5145      var middlewareAPI = {
5146        getState: store.getState,
5147        dispatch: function dispatch(action) {
5148          return _dispatch(action);
5149        }
5150      };
5151      chain = middlewares.map(function (middleware) {
5152        return middleware(middlewareAPI);
5153      });
5154      _dispatch = _compose__WEBPACK_IMPORTED_MODULE_0__["default"].apply(undefined, chain)(store.dispatch);
5155
5156      return _extends({}, store, {
5157        dispatch: _dispatch
5158      });
5159    };
5160  };
5161}
5162
5163/***/ }),
5164/* 94 */
5165/***/ (function(module, exports, __webpack_require__) {
5166
5167"use strict";
5168
5169
5170Object.defineProperty(exports, "__esModule", {
5171  value: true
5172});
5173exports.ActionAppliesTo = exports.ActionTypeConsts = void 0;
5174var ActionTypeConsts = {
5175  TRANSFORM_MOVE: 'TRANSFORM_MOVE',
5176  TRANSFORM_SCALE: 'TRANSFORM_SCALE',
5177  TRANSFORM_ROTATE: 'TRANSFORM_ROTATE',
5178  TRANSFORM_SKEW: 'TRANSFORM_SKEW',
5179  STYLE_OPACITY: 'STYLE_OPACITY',
5180  STYLE_SIZE: 'STYLE_SIZE',
5181  STYLE_FILTER: 'STYLE_FILTER',
5182  STYLE_FONT_VARIATION: 'STYLE_FONT_VARIATION',
5183  STYLE_BACKGROUND_COLOR: 'STYLE_BACKGROUND_COLOR',
5184  STYLE_BORDER: 'STYLE_BORDER',
5185  STYLE_TEXT_COLOR: 'STYLE_TEXT_COLOR',
5186  PLUGIN_LOTTIE: 'PLUGIN_LOTTIE',
5187  GENERAL_DISPLAY: 'GENERAL_DISPLAY',
5188  GENERAL_START_ACTION: 'GENERAL_START_ACTION',
5189  GENERAL_CONTINUOUS_ACTION: 'GENERAL_CONTINUOUS_ACTION',
5190  // TODO: Clean these up below because they're not used at this time
5191  GENERAL_COMBO_CLASS: 'GENERAL_COMBO_CLASS',
5192  GENERAL_STOP_ACTION: 'GENERAL_STOP_ACTION',
5193  GENERAL_LOOP: 'GENERAL_LOOP',
5194  STYLE_BOX_SHADOW: 'STYLE_BOX_SHADOW'
5195};
5196exports.ActionTypeConsts = ActionTypeConsts;
5197var ActionAppliesTo = {
5198  ELEMENT: 'ELEMENT',
5199  ELEMENT_CLASS: 'ELEMENT_CLASS',
5200  TRIGGER_ELEMENT: 'TRIGGER_ELEMENT'
5201};
5202exports.ActionAppliesTo = ActionAppliesTo;
5203
5204/***/ }),
5205/* 95 */
5206/***/ (function(module, exports, __webpack_require__) {
5207
5208var createFind = __webpack_require__(96),
5209    findIndex = __webpack_require__(262);
5210
5211/**
5212 * Iterates over elements of `collection`, returning the first element
5213 * `predicate` returns truthy for. The predicate is invoked with three
5214 * arguments: (value, index|key, collection).
5215 *
5216 * @static
5217 * @memberOf _
5218 * @since 0.1.0
5219 * @category Collection
5220 * @param {Array|Object} collection The collection to inspect.
5221 * @param {Function} [predicate=_.identity] The function invoked per iteration.
5222 * @param {number} [fromIndex=0] The index to search from.
5223 * @returns {*} Returns the matched element, else `undefined`.
5224 * @example
5225 *
5226 * var users = [
5227 *   { 'user': 'barney',  'age': 36, 'active': true },
5228 *   { 'user': 'fred',    'age': 40, 'active': false },
5229 *   { 'user': 'pebbles', 'age': 1,  'active': true }
5230 * ];
5231 *
5232 * _.find(users, function(o) { return o.age < 40; });
5233 * // => object for 'barney'
5234 *
5235 * // The `_.matches` iteratee shorthand.
5236 * _.find(users, { 'age': 1, 'active': true });
5237 * // => object for 'pebbles'
5238 *
5239 * // The `_.matchesProperty` iteratee shorthand.
5240 * _.find(users, ['active', false]);
5241 * // => object for 'fred'
5242 *
5243 * // The `_.property` iteratee shorthand.
5244 * _.find(users, 'active');
5245 * // => object for 'barney'
5246 */
5247var find = createFind(findIndex);
5248
5249module.exports = find;
5250
5251
5252/***/ }),
5253/* 96 */
5254/***/ (function(module, exports, __webpack_require__) {
5255
5256var baseIteratee = __webpack_require__(10),
5257    isArrayLike = __webpack_require__(17),
5258    keys = __webpack_require__(35);
5259
5260/**
5261 * Creates a `_.find` or `_.findLast` function.
5262 *
5263 * @private
5264 * @param {Function} findIndexFunc The function to find the collection index.
5265 * @returns {Function} Returns the new find function.
5266 */
5267function createFind(findIndexFunc) {
5268  return function(collection, predicate, fromIndex) {
5269    var iterable = Object(collection);
5270    if (!isArrayLike(collection)) {
5271      var iteratee = baseIteratee(predicate, 3);
5272      collection = keys(collection);
5273      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
5274    }
5275    var index = findIndexFunc(collection, predicate, fromIndex);
5276    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
5277  };
5278}
5279
5280module.exports = createFind;
5281
5282
5283/***/ }),
5284/* 97 */
5285/***/ (function(module, exports, __webpack_require__) {
5286
5287var ListCache = __webpack_require__(31),
5288    stackClear = __webpack_require__(204),
5289    stackDelete = __webpack_require__(205),
5290    stackGet = __webpack_require__(206),
5291    stackHas = __webpack_require__(207),
5292    stackSet = __webpack_require__(208);
5293
5294/**
5295 * Creates a stack cache object to store key-value pairs.
5296 *
5297 * @private
5298 * @constructor
5299 * @param {Array} [entries] The key-value pairs to cache.
5300 */
5301function Stack(entries) {
vendor: 3,645 bytes, lines 5302-5442
5302  var data = this.__data__ = new ListCache(entries);
5303  this.size = data.size;
5304}
5305
5306// Add methods to `Stack`.
5307Stack.prototype.clear = stackClear;
5308Stack.prototype['delete'] = stackDelete;
5309Stack.prototype.get = stackGet;
5310Stack.prototype.has = stackHas;
5311Stack.prototype.set = stackSet;
5312
5313module.exports = Stack;
5314
5315
5316/***/ }),
5317/* 98 */
5318/***/ (function(module, exports, __webpack_require__) {
5319
5320var baseGetTag = __webpack_require__(16),
5321    isObject = __webpack_require__(8);
5322
5323/** `Object#toString` result references. */
5324var asyncTag = '[object AsyncFunction]',
5325    funcTag = '[object Function]',
5326    genTag = '[object GeneratorFunction]',
5327    proxyTag = '[object Proxy]';
5328
5329/**
5330 * Checks if `value` is classified as a `Function` object.
5331 *
5332 * @static
5333 * @memberOf _
5334 * @since 0.1.0
5335 * @category Lang
5336 * @param {*} value The value to check.
5337 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
5338 * @example
5339 *
5340 * _.isFunction(_);
5341 * // => true
5342 *
5343 * _.isFunction(/abc/);
5344 * // => false
5345 */
5346function isFunction(value) {
5347  if (!isObject(value)) {
5348    return false;
5349  }
5350  // The use of `Object#toString` avoids issues with the `typeof` operator
5351  // in Safari 9 which returns 'object' for typed arrays and other constructors.
5352  var tag = baseGetTag(value);
5353  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
5354}
5355
5356module.exports = isFunction;
5357
5358
5359/***/ }),
5360/* 99 */
5361/***/ (function(module, exports, __webpack_require__) {
5362
5363/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
5364var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
5365
5366module.exports = freeGlobal;
5367
5368/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
5369
5370/***/ }),
5371/* 100 */
5372/***/ (function(module, exports) {
5373
5374/** Used for built-in method references. */
5375var funcProto = Function.prototype;
5376
5377/** Used to resolve the decompiled source of functions. */
5378var funcToString = funcProto.toString;
5379
5380/**
5381 * Converts `func` to its source code.
5382 *
5383 * @private
5384 * @param {Function} func The function to convert.
5385 * @returns {string} Returns the source code.
5386 */
5387function toSource(func) {
5388  if (func != null) {
5389    try {
5390      return funcToString.call(func);
5391    } catch (e) {}
5392    try {
5393      return (func + '');
5394    } catch (e) {}
5395  }
5396  return '';
5397}
5398
5399module.exports = toSource;
5400
5401
5402/***/ }),
5403/* 101 */
5404/***/ (function(module, exports, __webpack_require__) {
5405
5406var baseIsEqualDeep = __webpack_require__(227),
5407    isObjectLike = __webpack_require__(12);
5408
5409/**
5410 * The base implementation of `_.isEqual` which supports partial comparisons
5411 * and tracks traversed objects.
5412 *
5413 * @private
5414 * @param {*} value The value to compare.
5415 * @param {*} other The other value to compare.
5416 * @param {boolean} bitmask The bitmask flags.
5417 *  1 - Unordered comparison
5418 *  2 - Partial comparison
5419 * @param {Function} [customizer] The function to customize comparisons.
5420 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
5421 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
5422 */
5423function baseIsEqual(value, other, bitmask, customizer, stack) {
5424  if (value === other) {
5425    return true;
5426  }
5427  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
5428    return value !== value && other !== other;
5429  }
5430  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
5431}
5432
5433module.exports = baseIsEqual;
5434
5435
5436/***/ }),
5437/* 102 */
5438/***/ (function(module, exports, __webpack_require__) {
5439
5440var SetCache = __webpack_require__(228),
5441    arraySome = __webpack_require__(231),
5442    cacheHas = __webpack_require__(232
vendor: 2,558 bytes, lines 5442-5526
5442);
5443
5444/** Used to compose bitmasks for value comparisons. */
5445var COMPARE_PARTIAL_FLAG = 1,
5446    COMPARE_UNORDERED_FLAG = 2;
5447
5448/**
5449 * A specialized version of `baseIsEqualDeep` for arrays with support for
5450 * partial deep comparisons.
5451 *
5452 * @private
5453 * @param {Array} array The array to compare.
5454 * @param {Array} other The other array to compare.
5455 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5456 * @param {Function} customizer The function to customize comparisons.
5457 * @param {Function} equalFunc The function to determine equivalents of values.
5458 * @param {Object} stack Tracks traversed `array` and `other` objects.
5459 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
5460 */
5461function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
5462  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
5463      arrLength = array.length,
5464      othLength = other.length;
5465
5466  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
5467    return false;
5468  }
5469  // Check that cyclic values are equal.
5470  var arrStacked = stack.get(array);
5471  var othStacked = stack.get(other);
5472  if (arrStacked && othStacked) {
5473    return arrStacked == other && othStacked == array;
5474  }
5475  var index = -1,
5476      result = true,
5477      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
5478
5479  stack.set(array, other);
5480  stack.set(other, array);
5481
5482  // Ignore non-index properties.
5483  while (++index < arrLength) {
5484    var arrValue = array[index],
5485        othValue = other[index];
5486
5487    if (customizer) {
5488      var compared = isPartial
5489        ? customizer(othValue, arrValue, index, other, array, stack)
5490        : customizer(arrValue, othValue, index, array, other, stack);
5491    }
5492    if (compared !== undefined) {
5493      if (compared) {
5494        continue;
5495      }
5496      result = false;
5497      break;
5498    }
5499    // Recursively compare arrays (susceptible to call stack limits).
5500    if (seen) {
5501      if (!arraySome(other, function(othValue, othIndex) {
5502            if (!cacheHas(seen, othIndex) &&
5503                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
5504              return seen.push(othIndex);
5505            }
5506          })) {
5507        result = false;
5508        break;
5509      }
5510    } else if (!(
5511          arrValue === othValue ||
5512            equalFunc(arrValue, othValue, bitmask, customizer, stack)
5513        )) {
5514      result = false;
5515      break;
5516    }
5517  }
5518  stack['delete'](array);
5519  stack['delete'](other);
5520  return result;
5521}
5522
5523module.exports = equalArrays;
5524
5525
5526/***/ }),
vendor: 3,119 bytes, lines 5527-5644
5527/* 103 */
5528/***/ (function(module, exports, __webpack_require__) {
5529
5530var arrayPush = __webpack_require__(52),
5531    isArray = __webpack_require__(2);
5532
5533/**
5534 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
5535 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
5536 * symbols of `object`.
5537 *
5538 * @private
5539 * @param {Object} object The object to query.
5540 * @param {Function} keysFunc The function to get the keys of `object`.
5541 * @param {Function} symbolsFunc The function to get the symbols of `object`.
5542 * @returns {Array} Returns the array of property names and symbols.
5543 */
5544function baseGetAllKeys(object, keysFunc, symbolsFunc) {
5545  var result = keysFunc(object);
5546  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
5547}
5548
5549module.exports = baseGetAllKeys;
5550
5551
5552/***/ }),
5553/* 104 */
5554/***/ (function(module, exports, __webpack_require__) {
5555
5556var arrayFilter = __webpack_require__(239),
5557    stubArray = __webpack_require__(105);
5558
5559/** Used for built-in method references. */
5560var objectProto = Object.prototype;
5561
5562/** Built-in value references. */
5563var propertyIsEnumerable = objectProto.propertyIsEnumerable;
5564
5565/* Built-in method references for those with the same name as other `lodash` methods. */
5566var nativeGetSymbols = Object.getOwnPropertySymbols;
5567
5568/**
5569 * Creates an array of the own enumerable symbols of `object`.
5570 *
5571 * @private
5572 * @param {Object} object The object to query.
5573 * @returns {Array} Returns the array of symbols.
5574 */
5575var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
5576  if (object == null) {
5577    return [];
5578  }
5579  object = Object(object);
5580  return arrayFilter(nativeGetSymbols(object), function(symbol) {
5581    return propertyIsEnumerable.call(object, symbol);
5582  });
5583};
5584
5585module.exports = getSymbols;
5586
5587
5588/***/ }),
5589/* 105 */
5590/***/ (function(module, exports) {
5591
5592/**
5593 * This method returns a new empty array.
5594 *
5595 * @static
5596 * @memberOf _
5597 * @since 4.13.0
5598 * @category Util
5599 * @returns {Array} Returns the new empty array.
5600 * @example
5601 *
5602 * var arrays = _.times(2, _.stubArray);
5603 *
5604 * console.log(arrays);
5605 * // => [[], []]
5606 *
5607 * console.log(arrays[0] === arrays[1]);
5608 * // => false
5609 */
5610function stubArray() {
5611  return [];
5612}
5613
5614module.exports = stubArray;
5615
5616
5617/***/ }),
5618/* 106 */
5619/***/ (function(module, exports, __webpack_require__) {
5620
5621var baseTimes = __webpack_require__(240),
5622    isArguments = __webpack_require__(36),
5623    isArray = __webpack_require__(2),
5624    isBuffer = __webpack_require__(53),
5625    isIndex = __webpack_require__(54),
5626    isTypedArray = __webpack_require__(55);
5627
5628/** Used for built-in method references. */
5629var objectProto = Object.prototype;
5630
5631/** Used to check objects for own properties. */
5632var hasOwnProperty = objectProto.hasOwnProperty;
5633
5634/**
5635 * Creates an array of the enumerable property names of the array-like `value`.
5636 *
5637 * @private
5638 * @param {*} value The value to query.
5639 * @param {boolean} inherited Specify returning inherited property names.
5640 * @returns {Array} Returns the array of property names.
5641 */
5642function arrayLikeKeys(value, inherited) {
5643  var isArr = isArray(value),
5644      isArg = !isArr && isArguments(value),
vendor: 4,429 bytes, lines 5645-5829
5645      isBuff = !isArr && !isArg && isBuffer(value),
5646      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
5647      skipIndexes = isArr || isArg || isBuff || isType,
5648      result = skipIndexes ? baseTimes(value.length, String) : [],
5649      length = result.length;
5650
5651  for (var key in value) {
5652    if ((inherited || hasOwnProperty.call(value, key)) &&
5653        !(skipIndexes && (
5654           // Safari 9 has enumerable `arguments.length` in strict mode.
5655           key == 'length' ||
5656           // Node.js 0.10 has enumerable non-index properties on buffers.
5657           (isBuff && (key == 'offset' || key == 'parent')) ||
5658           // PhantomJS 2 has enumerable non-index properties on typed arrays.
5659           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
5660           // Skip index properties.
5661           isIndex(key, length)
5662        ))) {
5663      result.push(key);
5664    }
5665  }
5666  return result;
5667}
5668
5669module.exports = arrayLikeKeys;
5670
5671
5672/***/ }),
5673/* 107 */
5674/***/ (function(module, exports) {
5675
5676module.exports = function(module) {
5677	if (!module.webpackPolyfill) {
5678		module.deprecate = function() {};
5679		module.paths = [];
5680		// module.parent = undefined by default
5681		if (!module.children) module.children = [];
5682		Object.defineProperty(module, "loaded", {
5683			enumerable: true,
5684			get: function() {
5685				return module.l;
5686			}
5687		});
5688		Object.defineProperty(module, "id", {
5689			enumerable: true,
5690			get: function() {
5691				return module.i;
5692			}
5693		});
5694		module.webpackPolyfill = 1;
5695	}
5696	return module;
5697};
5698
5699
5700/***/ }),
5701/* 108 */
5702/***/ (function(module, exports) {
5703
5704/**
5705 * Creates a unary function that invokes `func` with its argument transformed.
5706 *
5707 * @private
5708 * @param {Function} func The function to wrap.
5709 * @param {Function} transform The argument transform.
5710 * @returns {Function} Returns the new function.
5711 */
5712function overArg(func, transform) {
5713  return function(arg) {
5714    return func(transform(arg));
5715  };
5716}
5717
5718module.exports = overArg;
5719
5720
5721/***/ }),
5722/* 109 */
5723/***/ (function(module, exports, __webpack_require__) {
5724
5725var getNative = __webpack_require__(11),
5726    root = __webpack_require__(6);
5727
5728/* Built-in method references that are verified to be native. */
5729var WeakMap = getNative(root, 'WeakMap');
5730
5731module.exports = WeakMap;
5732
5733
5734/***/ }),
5735/* 110 */
5736/***/ (function(module, exports, __webpack_require__) {
5737
5738var isObject = __webpack_require__(8);
5739
5740/**
5741 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
5742 *
5743 * @private
5744 * @param {*} value The value to check.
5745 * @returns {boolean} Returns `true` if `value` if suitable for strict
5746 *  equality comparisons, else `false`.
5747 */
5748function isStrictComparable(value) {
5749  return value === value && !isObject(value);
5750}
5751
5752module.exports = isStrictComparable;
5753
5754
5755/***/ }),
5756/* 111 */
5757/***/ (function(module, exports) {
5758
5759/**
5760 * A specialized version of `matchesProperty` for source values suitable
5761 * for strict equality comparisons, i.e. `===`.
5762 *
5763 * @private
5764 * @param {string} key The key of the property to get.
5765 * @param {*} srcValue The value to match.
5766 * @returns {Function} Returns the new spec function.
5767 */
5768function matchesStrictComparable(key, srcValue) {
5769  return function(object) {
5770    if (object == null) {
5771      return false;
5772    }
5773    return object[key] === srcValue &&
5774      (srcValue !== undefined || (key in Object(object)));
5775  };
5776}
5777
5778module.exports = matchesStrictComparable;
5779
5780
5781/***/ }),
5782/* 112 */
5783/***/ (function(module, exports) {
5784
5785/**
5786 * A specialized version of `_.map` for arrays without support for iteratee
5787 * shorthands.
5788 *
5789 * @private
5790 * @param {Array} [array] The array to iterate over.
5791 * @param {Function} iteratee The function invoked per iteration.
5792 * @returns {Array} Returns the new mapped array.
5793 */
5794function arrayMap(array, iteratee) {
5795  var index = -1,
5796      length = array == null ? 0 : array.length,
5797      result = Array(length);
5798
5799  while (++index < length) {
5800    result[index] = iteratee(array[index], index, array);
5801  }
5802  return result;
5803}
5804
5805module.exports = arrayMap;
5806
5807
5808/***/ }),
5809/* 113 */
5810/***/ (function(module, exports) {
5811
5812/**
5813 * The base implementation of `_.property` without support for deep paths.
5814 *
5815 * @private
5816 * @param {string} key The key of the property to get.
5817 * @returns {Function} Returns the new accessor function.
5818 */
5819function baseProperty(key) {
5820  return function(object) {
5821    return object == null ? undefined : object[key];
5822  };
5823}
5824
5825module.exports = baseProperty;
5826
5827
5828/***/ }),
5829/* 114 */
5830/***/ (function(module, exports) {
5831
5832/**
5833 * The base implementation of `_.findIndex` and `_.findLastIndex` without
5834 * support for iteratee shorthands.
5835 *
5836 * @private
5837 * @param {Array} array The array to inspect.
5838 * @param {Function} predicate The function invoked per iteration.
5839 * @param {number} fromIndex The index to search from.
5840 * @param {boolean} [fromRight] Specify iterating from right to left.
5841 * @returns {number} Returns the index of the matched value, else `-1`.
5842 */
5843function baseFindIndex(array, predicate, fromIndex, fromRight) {
5844  var length = array.length,
5845      index = fromIndex + (fromRight ? 1 : -1);
5846
5847  while ((fromRight ? index-- : ++index < length)) {
5848    if (predicate(array[index], index, array)) {
5849      return index;
5850    }
5851  }
5852  return -1;
5853}
5854
5855module.exports = baseFindIndex;
5856
5857
5858/***/ }),
5859/* 115 */
5860/***/ (function(module, exports, __webpack_require__) {
5861
5862var toFinite = __webpack_require__(263);
5863
5864/**
5865 * Converts `value` to an integer.
5866 *
5867 * **Note:** This method is loosely based on
5868 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
5869 *
5870 * @static
5871 * @memberOf _
5872 * @since 4.0.0
5873 * @category Lang
5874 * @param {*} value The value to convert.
5875 * @returns {number} Returns the converted integer.
5876 * @example
5877 *
5878 * _.toInteger(3.2);
5879 * // => 3
5880 *
5881 * _.toInteger(Number.MIN_VALUE);
5882 * // => 0
5883 *
5884 * _.toInteger(Infinity);
5885 * // => 1.7976931348623157e+308
5886 *
5887 * _.toInteger('3.2');
5888 * // => 3
5889 */
5890function toInteger(value) {
5891  var result = toFinite(value),
5892      remainder = result % 1;
5893
5894  return result === result ? (remainder ? result - remainder : result) : 0;
5895}
5896
5897module.exports = toInteger;
5898
5899
5900/***/ }),
5901/* 116 */
5902/***/ (function(module, exports, __webpack_require__) {
5903
5904"use strict";
5905
5906
5907var _interopRequireDefault = __webpack_require__(0);
5908
5909Object.defineProperty(exports, "__esModule", {
5910  value: true
5911});
5912exports.inQuad = inQuad;
5913exports.outQuad = outQuad;
5914exports.inOutQuad = inOutQuad;
5915exports.inCubic = inCubic;
5916exports.outCubic = outCubic;
5917exports.inOutCubic = inOutCubic;
5918exports.inQuart = inQuart;
5919exports.outQuart = outQuart;
5920exports.inOutQuart = inOutQuart;
5921exports.inQuint = inQuint;
5922exports.outQuint = outQuint;
5923exports.inOutQuint = inOutQuint;
5924exports.inSine = inSine;
5925exports.outSine = outSine;
5926exports.inOutSine = inOutSine;
5927exports.inExpo = inExpo;
5928exports.outExpo = outExpo;
5929exports.inOutExpo = inOutExpo;
5930exports.inCirc = inCirc;
5931exports.outCirc = outCirc;
5932exports.inOutCirc = inOutCirc;
5933exports.outBounce = outBounce;
5934exports.inBack = inBack;
5935exports.outBack = outBack;
5936exports.inOutBack = inOutBack;
5937exports.inElastic = inElastic;
5938exports.outElastic = outElastic;
5939exports.inOutElastic = inOutElastic;
5940exports.swingFromTo = swingFromTo;
5941exports.swingFrom = swingFrom;
5942exports.swingTo = swingTo;
5943exports.bounce = bounce;
5944exports.bouncePast = bouncePast;
5945exports.easeInOut = exports.easeOut = exports.easeIn = exports.ease = void 0;
5946
5947var _bezierEasing = _interopRequireDefault(__webpack_require__(117)); // Easing functions adapted from Thomas Fuchs & Jeremy Kahn
5948// Easing Equations (c) 2003 Robert Penner, BSD license
5949// https://raw.github.com/danro/easing-js/master/LICENSE
5950
5951
5952var magicSwing = 1.70158;
5953var ease = (0, _bezierEasing["default"])(0.25, 0.1, 0.25, 1.0);
5954exports.ease = ease;
5955var easeIn = (0, _bezierEasing["default"])(0.42, 0.0, 1.0, 1.0);
5956exports.easeIn = easeIn;
5957var easeOut = (0, _bezierEasing["default"])(0.0, 0.0, 0.58, 1.0);
5958exports.easeOut = easeOut;
5959var easeInOut = (0, _bezierEasing["default"])(0.42, 0.0, 0.58, 1.0);
5960exports.easeInOut = easeInOut;
5961
5962function inQuad(pos) {
5963  return Math.pow(pos, 2);
5964}
5965
5966function outQuad(pos) {
5967  return -(Math.pow(pos - 1, 2) - 1);
5968}
5969
5970function inOutQuad(pos) {
5971  if ((pos /= 0.5) < 1) {
5972    return 0.5 * Math.pow(pos, 2);
5973  }
5974
5975  return -0.5 * ((pos -= 2) * pos - 2);
5976}
5977
5978function inCubic(pos) {
5979  return Math.pow(pos, 3);
5980}
5981
5982function outCubic(pos) {
5983  return Math.pow(pos - 1, 3) + 1;
5984}
5985
5986function inOutCubic(pos) {
5987  if ((pos /= 0.5) < 1) {
5988    return 0.5 * Math.pow(pos, 3);
5989  }
5990
5991  return 0.5 * (Math.pow(pos - 2, 3) + 2);
5992}
5993
5994function inQuart(pos) {
5995  return Math.pow(pos, 4);
5996}
5997
5998function outQuart(pos) {
5999  return -(Math.pow(pos - 1, 4) - 1);
6000}
6001
6002function inOutQuart(pos) {
6003  if ((pos /= 0.5) < 1) {
6004    return 0.5 * Math.pow(pos, 4);
6005  }
6006
6007  return -0.5 * ((pos -= 2) * Math.pow(pos, 3) - 2);
6008}
6009
6010function inQuint(pos) {
6011  return Math.pow(pos, 5);
6012}
6013
6014function outQuint(pos) {
6015  return Math.pow(pos - 1, 5) + 1;
6016}
6017
6018function inOutQuint(pos) {
6019  if ((pos /= 0.5) < 1) {
6020    return 0.5 * Math.pow(pos, 5);
6021  }
6022
6023  return 0.5 * (Math.pow(pos - 2, 5) + 2);
6024}
6025
6026function inSine(pos) {
6027  return -Math.cos(pos * (Math.PI / 2)) + 1;
6028}
6029
6030function outSine(pos) {
6031  return Math.sin(pos * (Math.PI / 2));
6032}
6033
6034function inOutSine(pos) {
6035  return -0.5 * (Math.cos(Math.PI * pos) - 1);
6036}
6037
6038function inExpo(pos) {
6039  return pos === 0 ? 0 : Math.pow(2, 10 * (pos - 1));
6040}
6041
6042function outExpo(pos) {
6043  return pos === 1 ? 1 : -Math.pow(2, -10 * pos) + 1;
6044}
6045
6046function inOutExpo(pos) {
6047  if (pos === 0) {
6048    return 0;
6049  }
6050
6051  if (pos === 1) {
6052    return 1;
6053  }
6054
6055  if ((pos /= 0.5) < 1) {
6056    return 0.5 * Math.pow(2, 10 * (pos - 1));
6057  }
6058
6059  return 0.5 * (-Math.pow(2, -10 * --pos) + 2);
6060}
6061
6062function inCirc(pos) {
6063  return -(Math.sqrt(1 - pos * pos) - 1);
6064}
6065
6066function outCirc(pos) {
6067  return Math.sqrt(1 - Math.pow(pos - 1, 2));
6068}
6069
6070function inOutCirc(pos) {
6071  if ((pos /= 0.5) < 1) {
6072    return -0.5 * (Math.sqrt(1 - pos * pos) - 1);
6073  }
6074
6075  return 0.5 * (Math.sqrt(1 - (pos -= 2) * pos) + 1);
6076}
6077
6078function outBounce(pos) {
6079  if (pos < 1 / 2.75) {
6080    return 7.5625 * pos * pos;
6081  } else if (pos < 2 / 2.75) {
6082    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
6083  } else if (pos < 2.5 / 2.75) {
6084    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
6085  } else {
6086    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
6087  }
6088}
6089
6090function inBack(pos) {
6091  var s = magicSwing;
6092  return pos * pos * ((s + 1) * pos - s);
6093}
6094
6095function outBack(pos) {
6096  var s = magicSwing;
6097  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
6098}
6099
6100function inOutBack(pos) {
6101  var s = magicSwing;
6102
6103  if ((pos /= 0.5) < 1) {
6104    return 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s));
6105  }
6106
6107  return 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
6108}
6109
6110function inElastic(pos) {
6111  var s = magicSwing;
6112  var p = 0;
6113  var a = 1;
6114
6115  if (pos === 0) {
6116    return 0;
6117  }
6118
6119  if (pos === 1) {
6120    return 1;
6121  }
6122
6123  if (!p) {
6124    p = 0.3;
6125  }
6126
6127  if (a < 1) {
6128    a = 1;
6129    s = p / 4;
6130  } else {
6131    s = p / (2 * Math.PI) * Math.asin(1 / a);
6132  }
6133
6134  return -(a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
6135}
6136
6137function outElastic(pos) {
6138  var s = magicSwing;
6139  var p = 0;
6140  var a = 1;
6141
6142  if (pos === 0) {
6143    return 0;
6144  }
6145
6146  if (pos === 1) {
6147    return 1;
6148  }
6149
6150  if (!p) {
6151    p = 0.3;
6152  }
6153
6154  if (a < 1) {
6155    a = 1;
6156    s = p / 4;
6157  } else {
6158    s = p / (2 * Math.PI) * Math.asin(1 / a);
6159  }
6160
6161  return a * Math.pow(2, -10 * pos) * Math.sin((pos - s) * (2 * Math.PI) / p) + 1;
6162}
6163
6164function inOutElastic(pos) {
6165  var s = magicSwing;
6166  var p = 0;
6167  var a = 1;
6168
6169  if (pos === 0) {
6170    return 0;
6171  }
6172
6173  if ((pos /= 1 / 2) === 2) {
6174    return 1;
6175  }
6176
6177  if (!p) {
6178    p = 0.3 * 1.5;
6179  }
6180
6181  if (a < 1) {
6182    a = 1;
6183    s = p / 4;
6184  } else {
6185    s = p / (2 * Math.PI) * Math.asin(1 / a);
6186  }
6187
6188  if (pos < 1) {
6189    return -0.5 * (a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
6190  }
6191
6192  return a * Math.pow(2, -10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p) * 0.5 + 1;
6193}
6194
6195function swingFromTo(pos) {
6196  var s = magicSwing;
6197  return (pos /= 0.5) < 1 ? 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s)) : 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
6198}
6199
6200function swingFrom(pos) {
6201  var s = magicSwing;
6202  return pos * pos * ((s + 1) * pos - s);
6203}
6204
6205function swingTo(pos) {
6206  var s = magicSwing;
6207  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
6208}
6209
6210function bounce(pos) {
6211  if (pos < 1 / 2.75) {
6212    return 7.5625 * pos * pos;
6213  } else if (pos < 2 / 2.75) {
6214    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
6215  } else if (pos < 2.5 / 2.75) {
6216    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
6217  } else {
6218    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
6219  }
6220}
6221
6222function bouncePast(pos) {
6223  if (pos < 1 / 2.75) {
6224    return 7.5625 * pos * pos;
6225  } else if (pos < 2 / 2.75) {
6226    return 2 - (7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75);
6227  } else if (pos < 2.5 / 2.75) {
6228    return 2 - (7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375);
6229  } else {
6230    return 2 - (7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375);
6231  }
6232}
6233
6234/***/ }),
6235/* 117 */
6236/***/ (function(module, exports) {
6237
6238/**
6239 * https://github.com/gre/bezier-easing
6240 * BezierEasing - use bezier curve for transition easing function
6241 * by Gaëtan Renaudeau 2014 - 2015 – MIT License
6242 */
6243
6244// These values are established by empiricism with tests (tradeoff: performance VS precision)
6245var NEWTON_ITERATIONS = 4;
6246var NEWTON_MIN_SLOPE = 0.001;
6247var SUBDIVISION_PRECISION = 0.0000001;
6248var SUBDIVISION_MAX_ITERATIONS = 10;
6249
6250var kSplineTableSize = 11;
6251var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
6252
6253var float32ArraySupported = typeof Float32Array === 'function';
6254
6255function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
6256function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
6257function C (aA1)      { return 3.0 * aA1; }
6258
6259// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
6260function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
6261
6262// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
6263function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
6264
6265function binarySubdivide (aX, aA, aB, mX1, mX2) {
6266  var currentX, currentT, i = 0;
6267  do {
6268    currentT = aA + (aB - aA) / 2.0;
6269    currentX = calcBezier(currentT, mX1, mX2) - aX;
6270    if (currentX > 0.0) {
6271      aB = currentT;
6272    } else {
6273      aA = currentT;
6274    }
6275  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
6276  return currentT;
6277}
6278
6279function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
6280 for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
6281   var currentSlope = getSlope(aGuessT, mX1, mX2);
6282   if (currentSlope === 0.0) {
6283     return aGuessT;
6284   }
6285   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
6286   aGuessT -= currentX / currentSlope;
6287 }
6288 return aGuessT;
6289}
6290
6291module.exports = function bezier (mX1, mY1, mX2, mY2) {
6292  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
6293    throw new Error('bezier x values must be in [0, 1] range');
6294  }
6295
6296  // Precompute samples table
6297  var sampleValues = float32ArraySupported ? new Float32Array(kS
6297plineTableSize) : new Array(kSplineTableSize);
6298  if (mX1 !== mY1 || mX2 !== mY2) {
6299    for (var i = 0; i < kSplineTableSize; ++i) {
6300      sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
6301    }
6302  }
6303
6304  function getTForX (aX) {
6305    var intervalStart = 0.0;
6306    var currentSample = 1;
6307    var lastSample = kSplineTableSize - 1;
6308
6309    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
6310      intervalStart += kSampleStepSize;
6311    }
6312    --currentSample;
6313
6314    // Interpolate to provide an initial guess for t
6315    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
6316    var guessForT = intervalStart + dist * kSampleStepSize;
6317
6318    var initialSlope = getSlope(guessForT, mX1, mX2);
6319    if (initialSlope >= NEWTON_MIN_SLOPE) {
6320      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
6321    } else if (initialSlope === 0.0) {
6322      return guessForT;
6323    } else {
6324      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
6325    }
6326  }
6327
6328  return function BezierEasing (x) {
6329    if (mX1 === mY1 && mX2 === mY2) {
6330      return x; // linear
6331    }
6332    // Because JavaScript number are imprecise, we should guarantee the extremes are right.
6333    if (x === 0) {
6334      return 0;
6335    }
6336    if (x === 1) {
6337      return 1;
6338    }
6339    return calcBezier(getTForX(x), mY1, mY2);
6340  };
6341};
6342
6343
6344/***/ }),
6345/* 118 */
6346/***/ (function(module, exports, __webpack_require__) {
6347
6348"use strict";
6349
6350
6351var _interopRequireDefault2 = __webpack_require__(0);
6352
6353var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(119));
6354
6355var _interopRequireDefault = __webpack_require__(0);
6356
6357var _interopRequireWildcard = __webpack_require__(18);
6358
6359Object.defineProperty(exports, "__esModule", {
6360  value: true
6361});
6362exports.optimizeFloat = optimizeFloat;
6363exports.createBezierEasing = createBezierEasing;
6364exports.applyEasing = applyEasing;
6365
6366var easings = _interopRequireWildcard(__webpack_require__(116));
6367
6368var _bezierEasing = _interopRequireDefault(__webpack_require__(117));
6369
6370function optimizeFloat(value) {
6371  var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
6372  var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
6373  var pow = Math.pow(base, digits);
6374
6375  var _float = Number(Math.round(value * pow) / pow);
6376
6377  return Math.abs(_float) > 0.0001 ? _float : 0;
6378}
6379
6380function createBezierEasing(easing) {
6381  return (0, _bezierEasing["default"]).apply(void 0, (0, _toConsumableArray2["default"])(easing));
6382}
6383
6384function applyEasing(easing, position, customEasingFn) {
6385  if (position === 0) {
6386    return 0;
6387  }
6388
6389  if (position === 1) {
6390    return 1;
6391  }
6392
6393  if (customEasingFn) {
6394    return optimizeFloat(position > 0 ? customEasingFn(position) : position);
6395  }
6396
6397  return optimizeFloat(position > 0 && easing && easings[easing] ? easings[easing](position) : position);
6398}
6399
6400/***/ }),
6401/* 119 */
6402/***/ (function(module, exports, __webpack_require__) {
6403
6404var arrayWithoutHoles = __webpack_require__(266);
6405
6406var iterableToArray = __webpack_require__(267);
6407
6408var nonIterableSpread = __webpack_require__(268);
6409
6410function _toConsumableArray(arr) {
6411  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
6412}
6413
6414module.exports = _toConsumableArray;
6415
6416/***/ }),
6417/* 120 */
6418/***/ (function(module, exports, __webpack_require__) {
6419
6420"use strict";
6421
6422
6423var _interopRequireDefault = __webpack_require__(0);
6424
6425var _defineProperty2 = _interopRequireDefault(__webpack_require__(21));
6426
6427Object.defineProperty(exports, "__esModule", {
6428  value: true
6429});
6430exports.isPluginType = isPluginType;
6431exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginDuration = exports.getPluginOrigin = exports.getPluginConfig = void 0;
6432
6433var _IX2LottieUtils = __webpack_require__(270);
6434
6435var _constants = __webpack_require__(4);
6436
6437var _IX2BrowserSupport = __webpack_require__(48); // eslint-disable-next-line webflow/module-top-level-imports, webflow/packages-must-be-defined
6438
6439
6440var pluginMethodMap = (0, _defineProperty2["default"])({}, _constants.ActionTypeConsts.PLUGIN_LOTTIE, {
6441  getConfig: _IX2LottieUtils.getPluginConfig,
6442  getOrigin: _IX2LottieUtils.getPluginOrigin,
6443  getDuration: _IX2LottieUtils.getPluginDuration,
6444  getDestination: _IX2LottieUtils.getPluginDestination,
6445  createInstance: _IX2LottieUtils.createPluginInstance,
6446  render: _IX2LottieUtils.renderPlugin,
6447  clear: _IX2LottieUtils.clearPlugin
6448});
6449
6450function isPluginType(actionTypeId) {
6451  return actionTypeId === _constants.ActionTypeConsts.PLUGIN_LOTTIE;
6452}
6453
6454var pluginMethod = function pluginMethod(methodName) {
6455  return function (actionTypeId) {
6456    if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
6457      // IX2 plugins require browser libs for now
6458      return function () {
6459        return null;
6460      };
6461    }
6462
6463    var plugin = pluginMethodMap[actionTypeId];
6464
6465    if (!plugin) {
6466      throw new Error("IX2 no plugin configured for: ".concat(actionTypeId));
6467    }
6468
6469    var method = plugin[methodName];
6470
6471    if (!method) {
6472      throw new Error("IX2 invalid plugin method: ".concat(methodName));
6473    }
6474
6475    return method;
6476  };
6477};
6478
6479var getPluginConfig = pluginMethod('getConfig');
6480exports.getPluginConfig = getPluginConfig;
6481var getPluginOrigin = pluginMethod('getOrigin');
6482exports.getPluginOrigin = getPluginOrigin;
6483var getPluginDuration = pluginMethod('getDuration');
6484exports.getPluginDuration = getPluginDuration;
6485var getPluginDestination = pluginMethod('getDestination');
6486exports.getPluginDestination = getPluginDestination;
6487var createPluginInstance = pluginMethod('createInstance');
6488exports.createPluginInstance = createPluginInstance;
6489var renderPlugin = pluginMethod('render');
6490exports.renderPlugin = renderPlugin;
6491var clearPlugin = pluginMethod('clear');
6492exports.clearPlugin = clearPlugin;
6493
6494/***/ }),
6495/* 121 */
6496/***/ (function(module, exports, __webpack_require__) {
6497
6498var baseForOwn = __webpack_require__(122),
6499    createBaseEach = __webpack_require__(277);
6500
6501/**
6502 * The base implementation of `_.forEach` without support for iteratee shorthands.
6503 *
6504 * @private
6505 * @param {Array|Object} collection The collection to iterate over.
6506 * @param {Function} iteratee The function invoked per iteration.
6507 * @returns {Array|Object} Returns `collection`.
6508 */
6509var baseEach = createBaseEach(baseForOwn);
6510
6511module.exports = baseEach;
6512
6513
6514/***/ }),
6515/* 122 */
6516/***/ (function(module, exports, __webpack_require__) {
6517
6518var baseFor = __webpack_require__(275),
6519    keys = __webpack_require__(35);
6520
6521/**
6522 * The base implementation of `_.forOwn` without support for iteratee shorthands.
6523 *
6524 * @private
6525 * @param {Object} object The object to iterate over.
6526 * @param {Function} iteratee The function invoked per iteration.
6527 * @returns {Object} Returns `object`.
6528 */
6529function baseForOwn(object, iteratee) {
6530  return object && baseFor(object, iteratee, keys);
6531}
6532
6533module.exports = baseForOwn;
6534
6535
6536/***/ }),
6537/* 123 */
6538/***/ (function(module, exports, __webpack_require__) {
6539
6540"use strict";
6541
6542
6543var _interopRequireDefault2 = __webpack_require__(0);
6544
6545var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(119));
6546
6547var _interopRequireWildcard = __webpack_require__(18);
6548
6549var _interopRequireDefault = __webpack_require__(0);
6550
6551Object.defineProperty(exports, "__esModule", {
6552  value: true
6553});
6554exports.observeRequests = observeRequests;
6555exports.startEngine = startEngine;
6556exports.stopEngine = stopEngine;
6557exports.stopAllActionGroups = stopAllActionGroups;
6558exports.stopActionGroup = stopActionGroup;
6559exports.startActionGroup = startActionGroup;
6560
6561var _extends2 = _interopRequireDefault(__webpack_require__(30));
6562
6563var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(284));
6564
6565var _find = _interopRequireDefault(__webpack_require__(95));
6566
6567var _get = _interopRequireDefault(__webpack_require__(60));
6568
6569var _size = _interopRequireDefault(__webpack_require__(285));
6570
6571var _omitBy = _interopRequireDefault(__webpack_require__(291));
6572
6573var _isEmpty = _interopRequireDefault(__webpack_require__(303));
6574
6575var _mapValues = _interopRequireDefault(__webpack_require__(304));
6576
6577var _forEach = _interopRequireDefault(__webpack_require__(305));
6578
6579var _throttle = _interopRequireDefault(__webpack_require__(308));
6580
6581var _constants = __webpack_require__(4);
6582
6583var _shared = __webpack_require__(15);
6584
6585var _IX2EngineActions = __webpack_require__(65);
6586
6587var elementApi = _interopRequireWildcard(__webpack_require__(311));
6588
6589var _IX2VanillaEvents = _interopRequireDefault(__webpack_require__(312));
6590/* eslint-env browser */
6591
6592
6593var QuickEffectsIdList = Object.keys(_constants.QuickEffectIds);
6594
6595var isQuickEffect = function isQuickEffect(actionTypeId) {
6596  return QuickEffectsIdList.includes(actionTypeId);
6597};
6598
6599var _constants$IX2EngineC = _constants.IX2EngineConstants,
6600    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
6601    BOUNDARY_SELECTOR = _constants$IX2EngineC.BOUNDARY_SELECTOR,
6602    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
6603    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
6604    W_MOD_IX = _constants$IX2EngineC.W_MOD_IX;
6605var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
6606    getAffectedElements = _shared$IX2VanillaUti.getAffectedElements,
6607    getElementId = _shared$IX2VanillaUti.getElementId,
6608    getDestinationValues = _shared$IX2VanillaUti.getDestinationValues,
6609    observeStore = _shared$IX2VanillaUti.observeStore,
6610    getInstanceId = _shared$IX2VanillaUti.getInstanceId,
6611    renderHTMLElement = _shared$IX2VanillaUti.renderHTMLElement,
6612    clearAllStyles = _shared$IX2VanillaUti.clearAllStyles,
6613    getMaxDurationItemIndex = _shared$IX2VanillaUti.getMaxDurationItemIndex,
6614    getComputedStyle = _shared$IX2VanillaUti.getComputedStyle,
6615    getInstanceOrigin = _shared$IX2VanillaUti.getInstanceOrigin,
6616    reduceListToGroup = _shared$IX2VanillaUti.reduceListToGroup,
6617    shouldNamespaceEventParameter = _shared$IX2VanillaUti.shouldNamespaceEventParameter,
6618    getNamespacedParameterId = _shared$IX2VanillaUti.getNamespacedParameterId,
6619    shouldAllowMediaQuery = _shared$IX2VanillaUti.shouldAllowMediaQuery,
6620    cleanupHTMLElement = _shared$IX2VanillaUti.cleanupHTMLElement,
6621    stringifyTarget = _shared$IX2VanillaUti.stringifyTarget,
6622    mediaQueriesEqual = _shared$IX2VanillaUti.mediaQueriesEqual,
6623    shallowEqual = _shared$IX2VanillaUti.shallowEqual;
6624var _shared$IX2VanillaPlu = _shared.IX2VanillaPlugins,
6625    isPluginType = _shared$IX2VanillaPlu.isPluginType,
6626    createPluginInstance = _shared$IX2VanillaPlu.createPluginInstance,
6627    getPluginDuration = _shared$IX2VanillaPlu.getPluginDuration;
6628var ua = navigator.userAgent;
6629var IS_MOBILE_SAFARI = ua.match(/iPad/i) || ua.match(/iPhone/); // Keep throttled events at ~80fps to reduce reflows while maintaining render accuracy
6630
6631var THROTTLED_EVENT_WAIT = 12; // $FlowFixMe
6632
6633function observeRequests(store) {
6634  observeStore({
6635    store: store,
6636    select: function select(_ref) {
6637      var ixRequest = _ref.ixRequest;
6638      return ixRequest.preview;
6639    },
6640    onChange: handlePreviewRequest
6641  });
6642  observeStore({
6643    store: store,
6644    select: function select(_ref2) {
6645      var ixRequest = _ref2.ixRequest;
6646      return ixRequest.playback;
6647    },
6648    onChange: handlePlaybackRequest
6649  });
6650  observeStore({
6651    store: store,
6652    select: function select(_ref3) {
6653      var ixRequest = _ref3.ixRequest;
6654      return ixRequest.stop;
6655    },
6656    onChange: handleStopRequest
6657  });
6658  observeStore({
6659    store: store,
6660    select: function select(_ref4) {
6661      var ixRequest = _ref4.ixRequest;
6662      return ixRequest.clear;
6663    },
6664    onChange: handleClearRequest
6665  });
6666}
6667
6668function observeMediaQueryChange(store) {
6669  observeStore({
6670    store: store,
6671    select: function select(_ref5) {
6672      var ixSession = _ref5.ixSession;
6673      return ixSession.mediaQueryKey;
6674    },
6675    onChange: function onChange() {
6676      stopEngine(store);
6677      clearAllStyles({
6678        store: store,
6679        elementApi: elementApi
6680      });
6681      startEngine({
6682        store: store,
6683        allowEvents: true
6684      });
6685      dispatchPageUpdateEvent();
6686    }
6687  });
6688}
6689
6690function observeOneRenderTick(store, onTick) {
6691  var unsubscribe = observeStore({
6692    store: store,
6693    select: function select(_ref6) {
6694      var ixSession = _ref6.ixSession;
6695      return ixSession.tick;
6696    },
6697    onChange: function onChange(tick) {
6698      onTick(tick);
6699      unsubscribe();
6700    }
6701  });
6702}
6703
6704function handlePreviewRequest(_ref7, store) {
6705  var rawData = _ref7.rawData,
6706      defer = _ref7.defer;
6707
6708  var start = function start() {
6709    startEngine({
6710      store: store,
6711      rawData: rawData,
6712      allowEvents: true
6713    });
6714    dispatchPageUpdateEvent();
6715  };
6716
6717  defer ? setTimeout(start, 0) : start();
6718}
6719
6720function dispatchPageUpdateEvent() {
6721  document.dispatchEvent(new CustomEvent('IX2_PAGE_UPDATE'));
6722}
6723
6724function handlePlaybackRequest(playback, store) {
6725  var actionTypeId = playback.actionTypeId,
6726      actionListId = playback.actionListId,
6727      actionItemId = playback.actionItemId,
6728      eventId = playback.eventId,
6729      allowEvents = playback.allowEvents,
6730      immediate = playback.immediate,
6731      testManual = playback.testManual,
6732      _playback$verbose = playback.verbose,
6733      verbose = _playback$verbose === void 0 ? true : _playback$verbose;
6734  var rawData = playback.rawData;
6735
6736  if (actionListId && actionItemId && rawData && immediate) {
6737    var actionList = rawData.actionLists[actionListId];
6738
6739    if (actionList) {
6740      rawData = reduceListToGroup({
6741        actionList: actionList,
6742        actionItemId: actionItemId,
6743        rawData: rawData
6744      });
6745    }
6746  }
6747
6748  startEngine({
6749    store: store,
6750    rawData: rawData,
6751    allowEvents: allowEvents,
6752    testManual: testManual
6753  });
6754
6755  if (actionListId && actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(actionTypeId)) {
6756    stopActionGroup({
6757      store: store,
6758      actionListId: actionListId
6759    });
6760    renderInitialGroup({
6761      store: store,
6762      actionListId: actionListId,
6763      eventId: eventId
6764    });
6765    var started = startActionGroup({
6766      store: store,
6767      eventId: eventId,
6768      actionListId: actionListId,
6769      immediate: immediate,
6770      verbose: verbose
6771    });
6772
6773    if (verbose && started) {
6774      store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
6775        actionListId: actionListId,
6776        isPlaying: !immediate
6777      }));
6778    }
6779  }
6780}
6781
6782function handleStopRequest(_ref8, store) {
6783  var actionListId = _ref8.actionListId;
6784
6785  if (actionListId) {
6786    stopActionGroup({
6787      store: store,
6788      actionListId: actionListId
6789    });
6790  } else {
6791    stopAllActionGroups({
6792      store: store
6793    });
6794  }
6795
6796  stopEngine(store);
6797}
6798
6799function handleClearRequest(state, store) {
6800  stopEngine(store);
6801  clearAllStyles({
6802    store: store,
6803    elementApi: elementApi
6804  });
6805} // $FlowFixMe
6806
6807
6808function startEngine(_ref9) {
6809  var store = _ref9.store,
6810      rawData = _ref9.rawData,
6811      allowEvents = _ref9.allowEvents,
6812      testManual = _ref9.testManual;
6813
6814  var _store$getState = store.getState(),
6815      ixSession = _store$getState.ixSession;
6816
6817  if (rawData) {
6818    store.dispatch((0, _IX2EngineActions.rawDataImported)(rawData));
6819  }
6820
6821  if (!ixSession.active) {
6822    store.dispatch((0, _IX2EngineActions.sessionInitialized)({
6823      hasBoundaryNodes: Boolean(document.querySelector(BOUNDARY_SELECTOR)),
6824      reducedMotion: // $FlowFixMe - Remove this attribute on beta launch
6825      document.body.hasAttribute('data-wf-ix-vacation') && window.matchMedia('(prefers-reduced-motion)').matches
6826    }));
6827
6828    if (allowEvents) {
6829      bindEvents(store);
6830      addDocumentClass();
6831
6832      if (store.getState().ixSession.hasDefinedMediaQueries) {
6833        observeMediaQueryChange(store);
6834      }
6835    }
6836
6837    store.dispatch((0, _IX2EngineActions.sessionStarted)());
6838    startRenderLoop(store, testManual);
6839  }
6840}
6841
6842function addDocumentClass() {
6843  var _document = document,
6844      documentElement = _document.documentElement; // $FlowFixMe
6845
6846  if (documentElement.className.indexOf(W_MOD_IX) === -1) {
6847    // $FlowFixMe
6848    documentElement.className += " ".concat(W_MOD_IX);
6849  }
6850}
6851
6852function startRenderLoop(store, testManual) {
6853  var handleFrame = function handleFrame(now) {
6854    var _store$getState2 = store.getState(),
6855        ixSession = _store$getState2.ixSession,
6856        ixParameters = _store$getState2.ixParameters;
6857
6858    if (ixSession.active) {
6859      store.dispatch((0, _IX2EngineActions.animationFrameChanged)(now, ixParameters));
6860
6861      if (testManual) {
6862        observeOneRenderTick(store, handleFrame);
6863      } else {
6864        requestAnimationFrame(handleFrame);
6865      }
6866    }
6867  };
6868
6869  handleFrame(window.performance.now());
6870} // $FlowFixMe
6871
6872
6873function stopEngine(store) {
6874  var _store$getState3 = store.getState(),
6875      ixSession = _store$getState3.ixSession;
6876
6877  if (ixSession.active) {
6878    var eventListeners = ixSession.eventListeners;
6879    eventListeners.forEach(clearEventListener);
6880    store.dispatch((0, _IX2EngineActions.sessionStopped)());
6881  }
6882}
6883
6884function clearEventListener(_ref10) {
6885  var target = _ref10.target,
6886      listenerParams = _ref10.listenerParams;
6887  target.removeEventListener.apply(target, listenerParams);
6888}
6889
6890function createGroupInstances(_ref11) {
6891  var store = _ref11.store,
6892      eventStateKey = _ref11.eventStateKey,
6893      eventTarget = _ref11.eventTarget,
6894      eventId = _ref11.eventId,
6895      eventConfig = _ref11.eventConfig,
6896      actionListId = _ref11.actionListId,
6897      parameterGroup = _ref11.parameterGroup,
6898      smoothing = _ref11.smoothing,
6899      restingValue = _ref11.restingValue;
6900
6901  var _store$getState4 = store.getState(),
6902      ixData = _store$getState4.ixData,
6903      ixSession = _store$getState4.ixSession;
6904
6905  var events = ixData.events;
6906  var event = events[eventId];
6907  var eventTypeId = event.eventTypeId;
6908  var targetCache = {};
6909  var instanceActionGroups = {};
6910  var instanceConfigs = [];
6911  var continuousActionGroups = parameterGroup.continuousActionGroups;
6912  var parameterId = parameterGroup.id;
6913
6914  if (shouldNamespaceEventParameter(eventTypeId, eventConfig)) {
6915    parameterId = getNamespacedParameterId(eventStateKey, parameterId);
6916  } // Limit affected elements when event target is within a boundary node
6917
6918
6919  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
6920  continuousActionGroups.forEach(function (actionGroup) {
6921    var keyframe = actionGroup.keyframe,
6922        actionItems = actionGroup.actionItems;
6923    actionItems.forEach(function (actionItem) {
6924      var actionTypeId = actionItem.actionTypeId;
6925      var target = actionItem.config.target;
6926
6927      if (!target) {
6928        return;
6929      }
6930
6931      var elementRoot = target.boundaryMode ? eventElementRoot : null;
6932      var key = stringifyTarget(target) + COLON_DELIMITER + actionTypeId;
6933      instanceActionGroups[key] = appendActionItem(instanceActionGroups[key], keyframe, actionItem);
6934
6935      if (!targetCache[key]) {
6936        targetCache[key] = true;
6937        var config = actionItem.config;
6938        getAffectedElements({
6939          config: config,
6940          event: event,
6941          eventTarget: eventTarget,
6942          elementRoot: elementRoot,
6943          elementApi: elementApi
6944        }).forEach(function (element) {
6945          instanceConfigs.push({
6946            element: element,
6947            key: key
6948          });
6949        });
6950      }
6951    });
6952  });
6953  instanceConfigs.forEach(function (_ref12) {
6954    var element = _ref12.element,
6955        key = _ref12.key;
6956    var actionGroups = instanceActionGroups[key];
6957    var actionItem = (0, _get["default"])(actionGroups, "[0].actionItems[0]", {});
6958    var actionTypeId = actionItem.actionTypeId;
6959    var pluginInstance = isPluginType(actionTypeId) ? // $FlowFixMe
6960    createPluginInstance(actionTypeId)(element, actionItem) : null;
6961    var destination = getDestinationValues({
6962      element: element,
6963      actionItem: actionItem,
6964      elementApi: elementApi
6965    }, // $FlowFixMe
6966    pluginInstance);
6967    createInstance({
6968      store: store,
6969      element: element,
6970      eventId: eventId,
6971      actionListId: actionListId,
6972      actionItem: actionItem,
6973      destination: destination,
6974      continuous: true,
6975      parameterId: parameterId,
6976      actionGroups: actionGroups,
6977      smoothing: smoothing,
6978      restingValue: restingValue,
6979      pluginInstance: pluginInstance
6980    });
6981  });
6982}
6983
6984function appendActionItem() {
6985  var actionGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6986  var keyframe = arguments.length > 1 ? arguments[1] : undefined;
6987  var actionItem = arguments.length > 2 ? arguments[2] : undefined;
6988  var newActionGroups = (0, _toConsumableArray2["default"])(actionGroups);
6989  var groupIndex;
6990  newActionGroups.some(function (group, index) {
6991    if (group.keyframe === keyframe) {
6992      groupIndex = index;
6993      return true;
6994    }
6995
6996    return false;
6997  });
6998
6999  if (groupIndex == null) {
7000    groupIndex = newActionGroups.length;
7001    newActionGroups.push({
7002      keyframe: keyframe,
7003      actionItems: []
7004    });
7005  }
7006
7007  newActionGroups[groupIndex].actionItems.push(actionItem);
7008  return newActionGroups;
7009}
7010
7011function bindEvents(store) {
7012  var _store$getState5 = store.getState(),
7013      ixData = _store$getState5.ixData;
7014
7015  var eventTypeMap = ixData.eventTypeMap;
7016  updateViewportWidth(store);
7017  (0, _forEach["default"])(eventTypeMap, function (events, key) {
7018    var logic = _IX2VanillaEvents["default"][key];
7019
7020    if (!logic) {
7021      console.warn("IX2 event type not configured: ".concat(key));
7022      return;
7023    }
7024
7025    bindEventType({
7026      logic: logic,
7027      store: store,
7028      events: events
7029    });
7030  });
7031
7032  var _store$getState6 = store.getState(),
7033      ixSession = _store$getState6.ixSession;
7034
7035  if (ixSession.eventListeners.length) {
7036    bindResizeEvents(store);
7037  }
7038}
7039
7040var WINDOW_RESIZE_EVENTS = ['resize', 'orientationchange'];
7041
7042function bindResizeEvents(store) {
7043  var handleResize = function handleResize() {
7044    updateViewportWidth(store);
7045  };
7046
7047  WINDOW_RESIZE_EVENTS.forEach(function (type) {
7048    window.addEventListener(type, handleResize);
7049    store.dispatch((0, _IX2EngineActions.eventListenerAdded)(window, [type, handleResize]));
7050  });
7051  handleResize();
7052}
7053
7054function updateViewportWidth(store) {
7055  var _store$getState7 = store.getState(),
7056      ixSession = _store$getState7.ixSession,
7057      ixData = _store$getState7.ixData;
7058
7059  var width = window.innerWidth;
7060
7061  if (width !== ixSession.viewportWidth) {
7062    var mediaQueries = ixData.mediaQueries;
7063    store.dispatch((0, _IX2EngineActions.viewportWidthChanged)({
7064      width: width,
7065      mediaQueries: mediaQueries
7066    }));
7067  }
7068}
7069
7070var mapFoundValues = function mapFoundValues(object, iteratee) {
7071  return (0, _omitBy["default"])((0, _mapValues["default"])(object, iteratee), _isEmpty["default"]);
7072};
7073
7074var forEachEventTarget = function forEachEventTarget(eventTargets, eventCallback) {
7075  (0, _forEach["default"])(eventTargets, function (elements, eventId) {
7076    elements.forEach(function (element, index) {
7077      var eventStateKey = eventId + COLON_DELIMITER + index;
7078      eventCallback(element, eventId, eventStateKey);
7079    });
7080  });
7081};
7082
7083var getAffectedForEvent = function getAffectedForEvent(event) {
7084  var config = {
7085    target: event.target,
7086    targets: event.targets
7087  };
7088  return getAffectedElements({
7089    config: config,
7090    elementApi: elementApi
7091  });
7092};
7093
7094function bindEventType(_ref13) {
7095  var logic = _ref13.logic,
7096      store = _ref13.store,
7097      events = _ref13.events;
7098  injectBehaviorCSSFixes(events);
7099  var eventTypes = logic.types,
7100      eventHandler = logic.handler;
7101
7102  var _store$getState8 = store.getState(),
7103      ixData = _store$getState8.ixData;
7104
7105  var actionLists = ixData.actionLists;
7106  var eventTargets = mapFoundValues(events, getAffectedForEvent);
7107
7108  if (!(0, _size["default"])(eventTargets)) {
7109    return;
7110  }
7111
7112  (0, _forEach["default"])(eventTargets, function (elements, key) {
7113    var event = events[key];
7114    var eventAction = event.action,
7115        eventId = event.id,
7116        _event$mediaQueries = event.mediaQueries,
7117        mediaQueries = _event$mediaQueries === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries;
7118    var actionListId = eventAction.config.actionListId;
7119
7120    if (!mediaQueriesEqual(mediaQueries, ixData.mediaQueryKeys)) {
7121      store.dispatch((0, _IX2EngineActions.mediaQueriesDefined)());
7122    }
7123
7124    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
7125      var configs = Array.isArray(event.config) ? event.config : [event.config];
7126      configs.forEach(function (eventConfig) {
7127        var continuousParameterGroupId = eventConfig.continuousParameterGroupId;
7128        var paramGroups = (0, _get["default"])(actionLists, "".concat(actionListId, ".continuousParameterGroups"), []);
7129        var parameterGroup = (0, _find["default"])(paramGroups, function (_ref14) {
7130          var id = _ref14.id;
7131          return id === continuousParameterGroupId;
7132        });
7133        var smoothing = (eventConfig.smoothing || 0) / 100;
7134        var restingValue = (eventConfig.restingState || 0) / 100;
7135
7136        if (!parameterGroup) {
7137          return;
7138        }
7139
7140        elements.forEach(function (eventTarget, index) {
7141          var eventStateKey = eventId + COLON_DELIMITER + index;
7142          createGroupInstances({
7143            store: store,
7144            eventStateKey: eventStateKey,
7145            eventTarget: eventTarget,
7146            eventId: eventId,
7147            eventConfig: eventConfig,
7148            actionListId: actionListId,
7149            parameterGroup: parameterGroup,
7150            smoothing: smoothing,
7151            restingValue: restingValue
7152          });
7153        });
7154      });
7155    }
7156
7157    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(eventAction.actionTypeId)) {
7158      renderInitialGroup({
7159        store: store,
7160        actionListId: actionListId,
7161        eventId: eventId
7162      });
7163    }
7164  });
7165
7166  var handleEvent = function handleEvent(nativeEvent) {
7167    var _store$getState9 = store.getState(),
7168        ixSession = _store$getState9.ixSession;
7169
7170    forEachEventTarget(eventTargets, function (element, eventId, eventStateKey) {
7171      var event = events[eventId];
7172      var oldState = ixSession.eventState[eventStateKey];
7173      var eventAction = event.action,
7174          _event$mediaQueries2 = event.mediaQueries,
7175          mediaQueries = _event$mediaQueries2 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries2; // Bypass event handler if current media query is not listed in event config
7176
7177      if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7178        return;
7179      }
7180
7181      var handleEventWithConfig = function handleEventWithConfig() {
7182        var eventConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7183        var newState = eventHandler({
7184          store: store,
7185          element: element,
7186          event: event,
7187          eventConfig: eventConfig,
7188          nativeEvent: nativeEvent,
7189          eventStateKey: eventStateKey
7190        }, oldState);
7191
7192        if (!shallowEqual(newState, oldState)) {
7193          store.dispatch((0, _IX2EngineActions.eventStateChanged)(eventStateKey, newState));
7194        }
7195      };
7196
7197      if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
7198        var configs = Array.isArray(event.config) ? event.config : [event.config];
7199        configs.forEach(handleEventWithConfig);
7200      } else {
7201        handleEventWithConfig();
7202      }
7203    });
7204  };
7205
7206  var handleEventThrottled = (0, _throttle["default"])(handleEvent, THROTTLED_EVENT_WAIT);
7207
7208  var addListeners = function addListeners(_ref15) {
7209    var _ref15$target = _ref15.target,
7210        target = _ref15$target === void 0 ? document : _ref15$target,
7211        types = _ref15.types,
7212        shouldThrottle = _ref15.throttle;
7213    types.split(' ').filter(Boolean).forEach(function (type) {
7214      var handlerFunc = shouldThrottle ? handleEventThrottled : handleEvent; // $FlowFixMe
7215
7216      target.addEventListener(type, handlerFunc);
7217      store.dispatch((0, _IX2EngineActions.eventListenerAdded)(target, [type, handlerFunc]));
7218    });
7219  };
7220
7221  if (Array.isArray(eventTypes)) {
7222    eventTypes.forEach(addListeners);
7223  } else if (typeof eventTypes === 'string') {
7224    addListeners(logic);
7225  }
7226}
7227/**
7228 * Injects CSS into the document to fix behavior issues across
7229 * different devices.
7230 */
7231
7232
7233function injectBehaviorCSSFixes(events) {
7234  if (!IS_MOBILE_SAFARI) {
7235    return;
7236  }
7237
7238  var injectedSelectors = {};
7239  var cssText = '';
7240
7241  for (var eventId in events) {
7242    var _events$eventId = events[eventId],
7243        eventTypeId = _events$eventId.eventTypeId,
7244        target = _events$eventId.target;
7245    var selector = elementApi.getQuerySelector(target); // $FlowFixMe
7246
7247    if (injectedSelectors[selector]) {
7248      continue;
7249    } // add a "cursor: pointer" style rule to ensure that CLICK events get fired for IOS devices
7250
7251
7252    if (eventTypeId === _constants.EventTypeConsts.MOUSE_CLICK || eventTypeId === _constants.EventTypeConsts.MOUSE_SECOND_CLICK) {
7253      // $FlowFixMe
7254      injectedSelectors[selector] = true;
7255      cssText += // $FlowFixMe
7256      selector + '{' + 'cursor: pointer;' + 'touch-action: manipulation;' + '}';
7257    }
7258  }
7259
7260  if (cssText) {
7261    var style = document.createElement('style');
7262    style.textContent = cssText; // $FlowFixMe
7263
7264    document.body.appendChild(style);
7265  }
7266}
7267
7268function renderInitialGroup(_ref16) {
7269  var store = _ref16.store,
7270      actionListId = _ref16.actionListId,
7271      eventId = _ref16.eventId;
7272
7273  var _store$getState10 = store.getState(),
7274      ixData = _store$getState10.ixData,
7275      ixSession = _store$getState10.ixSession;
7276
7277  var actionLists = ixData.actionLists,
7278      events = ixData.events;
7279  var event = events[eventId];
7280  var actionList = actionLists[actionListId];
7281
7282  if (actionList && actionList.useFirstGroupAsInitialState) {
7283    var initialStateItems = (0, _get["default"])(actionList, 'actionItemGroups[0].actionItems', []); // Bypass initial state render if current media query is not listed in event config
7284
7285    var mediaQueries = (0, _get["default"])(event, 'mediaQueries', ixData.mediaQueryKeys);
7286
7287    if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7288      return;
7289    }
7290
7291    initialStateItems.forEach(function (actionItem) {
7292      var _itemConfig$target;
7293
7294      var itemConfig = actionItem.config,
7295          actionTypeId = actionItem.actionTypeId;
7296      var config = // When useEventTarget is explicitly true, use event target/targets to query elements
7297      (itemConfig === null || itemConfig === void 0 ? void 0 : (_itemConfig$target = itemConfig.target) === null || _itemConfig$target === void 0 ? void 0 : _itemConfig$target.useEventTarget) === true ? {
7298        target: event.target,
7299        targets: event.targets
7300      } : itemConfig;
7301      var itemElements = getAffectedElements({
7302        config: config,
7303        event: event,
7304        elementApi: elementApi
7305      });
7306      var shouldUsePlugin = isPluginType(actionTypeId);
7307      itemElements.forEach(function (element) {
7308        var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7309        createPluginInstance(actionTypeId)(element, actionItem) : null;
7310        createInstance({
7311          destination: getDestinationValues({
7312            element: element,
7313            actionItem: actionItem,
7314            elementApi: elementApi
7315          }, // $FlowFixMe
7316          pluginInstance),
7317          immediate: true,
7318          store: store,
7319          element: element,
7320          eventId: eventId,
7321          actionItem: actionItem,
7322          actionListId: actionListId,
7323          pluginInstance: pluginInstance
7324        });
7325      });
7326    });
7327  }
7328} // $FlowFixMe
7329
7330
7331function stopAllActionGroups(_ref17) {
7332  var store = _ref17.store;
7333
7334  var _store$getState11 = store.getState(),
7335      ixInstances = _store$getState11.ixInstances;
7336
7337  (0, _forEach["default"])(ixInstances, function (instance) {
7338    if (!instance.continuous) {
7339      var actionListId = instance.actionListId,
7340          verbose = instance.verbose;
7341      removeInstance(instance, store);
7342
7343      if (verbose) {
7344        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7345          actionListId: actionListId,
7346          isPlaying: false
7347        }));
7348      }
7349    }
7350  });
7351} // $FlowFixMe
7352
7353
7354function stopActionGroup(_ref18) {
7355  var store = _ref18.store,
7356      eventId = _ref18.eventId,
7357      eventTarget = _ref18.eventTarget,
7358      eventStateKey = _ref18.eventStateKey,
7359      actionListId = _ref18.actionListId;
7360
7361  var _store$getState12 = store.getState(),
7362      ixInstances = _store$getState12.ixInstances,
7363      ixSession = _store$getState12.ixSession; // Check for element boundary before stopping engine instances
7364
7365
7366  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7367  (0, _forEach["default"])(ixInstances, function (instance) {
7368    var boundaryMode = (0, _get["default"])(instance, 'actionItem.config.target.boundaryMode'); // Validate event key if eventStateKey was provided, otherwise default to true
7369
7370    var validEventKey = eventStateKey ? instance.eventStateKey === eventStateKey : true; // Remove engine instances that match the required ids
7371
7372    if (instance.actionListId === actionListId && instance.eventId === eventId && validEventKey) {
7373      // Avoid removal when root boundary does not contain instance element
7374      if (eventElementRoot && boundaryMode && !elementApi.elementContains(eventElementRoot, instance.element)) {
7375        return;
7376      }
7377
7378      removeInstance(instance, store);
7379
7380      if (instance.verbose) {
7381        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7382          actionListId: actionListId,
7383          isPlaying: false
7384        }));
7385      }
7386    }
7387  });
7388} // $FlowFixMe
7389
7390
7391function startActionGroup(_ref19) {
7392  var store = _ref19.store,
7393      eventId = _ref19.eventId,
7394      eventTarget = _ref19.eventTarget,
7395      eventStateKey = _ref19.eventStateKey,
7396      actionListId = _ref19.actionListId,
7397      _ref19$groupIndex = _ref19.groupIndex,
7398      groupIndex = _ref19$groupIndex === void 0 ? 0 : _ref19$groupIndex,
7399      immediate = _ref19.immediate,
7400      verbose = _ref19.verbose;
7401
7402  var _event$action;
7403
7404  var _store$getState13 = store.getState(),
7405      ixData = _store$getState13.ixData,
7406      ixSession = _store$getState13.ixSession;
7407
7408  var events = ixData.events;
7409  var event = events[eventId] || {};
7410  var _event$mediaQueries3 = event.mediaQueries,
7411      mediaQueries = _event$mediaQueries3 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries3;
7412  var actionList = (0, _get["default"])(ixData, "actionLists.".concat(actionListId), {});
7413  var actionItemGroups = actionList.actionItemGroups,
7414      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; // Abort playback if no action groups
7415
7416  if (!actionItemGroups || !actionItemGroups.length) {
7417    return false;
7418  } // Reset to first group when event loop is configured
7419
7420
7421  if (groupIndex >= actionItemGroups.length && (0, _get["default"])(event, 'config.loop')) {
7422    groupIndex = 0;
7423  } // Skip initial state group during action list playback, as it should already be applied
7424
7425
7426  if (groupIndex === 0 && useFirstGroupAsInitialState) {
7427    groupIndex++;
7428  } // Identify first animated group and apply the initial QuickEffect delay
7429
7430
7431  var isFirstGroup = groupIndex === 0 || groupIndex === 1 && useFirstGroupAsInitialState;
7432  var instanceDelay = isFirstGroup && isQuickEffect((_event$action = event.action) === null || _event$action === void 0 ? void 0 : _event$action.actionTypeId) ? event.config.delay : undefined; // Abort playback if no action items exist at group index
7433
7434  var actionItems = (0, _get["default"])(actionItemGroups, [groupIndex, 'actionItems'], []);
7435
7436  if (!actionItems.length) {
7437    return false;
7438  } // Abort playback if current media query is not listed in event config
7439
7440
7441  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7442    return false;
7443  } // Limit affected elements when event target is within a boundary node
7444
7445
7446  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7447  var carrierIndex = getMaxDurationItemIndex(actionItems);
7448  var groupStartResult = false;
7449  actionItems.forEach(function (actionItem, actionIndex) {
7450    var config = actionItem.config,
7451        actionTypeId = actionItem.actionTypeId;
7452    var shouldUsePlugin = isPluginType(actionTypeId);
7453    var target = config.target;
7454
7455    if (!target) {
7456      return;
7457    }
7458
7459    var elementRoot = target.boundaryMode ? eventElementRoot : null;
7460    var elements = getAffectedElements({
7461      config: config,
7462      event: event,
7463      eventTarget: eventTarget,
7464      elementRoot: elementRoot,
7465      elementApi: elementApi
7466    });
7467    elements.forEach(function (element, elementIndex) {
7468      var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7469      createPluginInstance(actionTypeId)(element, actionItem) : null;
7470      var pluginDuration = shouldUsePlugin ? // $FlowFixMe
7471      getPluginDuration(actionTypeId)(element, actionItem) : null;
7472      groupStartResult = true;
7473      var isCarrier = carrierIndex === actionIndex && elementIndex === 0;
7474      var computedStyle = getComputedStyle({
7475        element: element,
7476        actionItem: actionItem
7477      });
7478      var destination = getDestinationValues({
7479        element: element,
7480        actionItem: actionItem,
7481        elementApi: elementApi
7482      }, // $FlowFixMe
7483      pluginInstance);
7484      createInstance({
7485        store: store,
7486        element: element,
7487        actionItem: actionItem,
7488        eventId: eventId,
7489        eventTarget: eventTarget,
7490        eventStateKey: eventStateKey,
7491        actionListId: actionListId,
7492        groupIndex: groupIndex,
7493        isCarrier: isCarrier,
7494        computedStyle: computedStyle,
7495        destination: destination,
7496        immediate: immediate,
7497        verbose: verbose,
7498        pluginInstance: pluginInstance,
7499        pluginDuration: pluginDuration,
7500        instanceDelay: instanceDelay
7501      });
7502    });
7503  });
7504  return groupStartResult;
7505}
7506
7507function createInstance(options) {
7508  var _ixData$events$eventI; // $FlowFixMe
7509
7510
7511  var store = options.store,
7512      computedStyle = options.computedStyle,
7513      rest = (0, _objectWithoutPropertiesLoose2["default"])(options, ["store", "computedStyle"]);
7514  var element = rest.element,
7515      actionItem = rest.actionItem,
7516      immediate = rest.immediate,
7517      pluginInstance = rest.pluginInstance,
7518      continuous = rest.continuous,
7519      restingValue = rest.restingValue,
7520      eventId = rest.eventId;
7521  var autoStart = !continuous;
7522  var instanceId = getInstanceId();
7523
7524  var _store$getState14 = store.getState(),
7525      ixElements = _store$getState14.ixElements,
7526      ixSession = _store$getState14.ixSession,
7527      ixData = _store$getState14.ixData;
7528
7529  var elementId = getElementId(ixElements, element);
7530
7531  var _ref20 = ixElements[elementId] || {},
7532      refState = _ref20.refState;
7533
7534  var refType = elementApi.getRefType(element);
7535  var skipMotion = ixSession.reducedMotion && _constants.ReducedMotionTypes[actionItem.actionTypeId];
7536  var skipToValue;
7537
7538  if (skipMotion && continuous) {
7539    switch ((_ixData$events$eventI = ixData.events[eventId]) === null || _ixData$events$eventI === void 0 ? void 0 : _ixData$events$eventI.eventTypeId) {
7540      case _constants.EventTypeConsts.MOUSE_MOVE:
7541      case _constants.EventTypeConsts.MOUSE_MOVE_IN_VIEWPORT:
7542        skipToValue = restingValue;
7543        break;
7544
7545      default:
7546        skipToValue = 0.5;
7547        break;
7548    }
7549  }
7550
7551  var origin = getInstanceOrigin(element, refState, computedStyle, actionItem, elementApi, // $FlowFixMe
7552  pluginInstance);
7553  store.dispatch((0, _IX2EngineActions.instanceAdded)((0, _extends2["default"])({
7554    instanceId: instanceId,
7555    elementId: elementId,
7556    origin: origin,
7557    refType: refType,
7558    skipMotion: skipMotion,
7559    skipToValue: skipToValue
7560  }, rest)));
7561  dispatchCustomEvent(document.body, 'ix2-animation-started', instanceId);
7562
7563  if (immediate) {
7564    renderImmediateInstance(store, instanceId);
7565    return;
7566  }
7567
7568  observeStore({
7569    store: store,
7570    select: function select(_ref21) {
7571      var ixInstances = _ref21.ixInstances;
7572      return ixInstances[instanceId];
7573    },
7574    onChange: handleInstanceChange
7575  });
7576
7577  if (autoStart) {
7578    store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, ixSession.tick));
7579  }
7580}
7581
7582function removeInstance(instance, store) {
7583  dispatchCustomEvent(document.body, 'ix2-animation-stopping', {
7584    instanceId: instance.id,
7585    state: store.getState()
7586  });
7587  var elementId = instance.elementId,
7588      actionItem = instance.actionItem;
7589
7590  var _store$getState15 = store.getState(),
7591      ixElements = _store$getState15.ixElements;
7592
7593  var _ref22 = ixElements[elementId] || {},
7594      ref = _ref22.ref,
7595      refType = _ref22.refType;
7596
7597  if (refType === HTML_ELEMENT) {
7598    cleanupHTMLElement(ref, actionItem, elementApi);
7599  }
7600
7601  store.dispatch((0, _IX2EngineActions.instanceRemoved)(instance.id));
7602}
7603
7604function dispatchCustomEvent(element, eventName, detail) {
7605  var event = document.createEvent('CustomEvent');
7606  event.initCustomEvent(eventName, true, true, detail); // $FlowFixMe
7607
7608  element.dispatchEvent(event);
7609}
7610
7611function renderImmediateInstance(store, instanceId) {
7612  var _store$getState16 = store.getState(),
7613      ixParameters = _store$getState16.ixParameters;
7614
7615  store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, 0));
7616  store.dispatch((0, _IX2EngineActions.animationFrameChanged)(performance.now(), ixParameters));
7617
7618  var _store$getState17 = store.getState(),
7619      ixInstances = _store$getState17.ixInstances;
7620
7621  handleInstanceChange(ixInstances[instanceId], store);
7622}
7623
7624function handleInstanceChange(instance, store) {
7625  var active = instance.active,
7626      continuous = instance.continuous,
7627      complete = instance.complete,
7628      elementId = instance.elementId,
7629      actionItem = instance.actionItem,
7630      actionTypeId = instance.actionTypeId,
7631      renderType = instance.renderType,
7632      current = instance.current,
7633      groupIndex = instance.groupIndex,
7634      eventId = instance.eventId,
7635      eventTarget = instance.eventTarget,
7636      eventStateKey = instance.eventStateKey,
7637      actionListId = instance.actionListId,
7638      isCarrier = instance.isCarrier,
7639      styleProp = instance.styleProp,
7640      verbose = instance.verbose,
7641      pluginInstance = instance.pluginInstance; // Bypass render if current media query is not listed in event config
7642
7643  var _store$getState18 = store.getState(),
7644      ixData = _store$getState18.ixData,
7645      ixSession = _store$getState18.ixSession;
7646
7647  var events = ixData.events;
7648  var event = events[eventId] || {};
7649  var _event$mediaQueries4 = event.mediaQueries,
7650      mediaQueries = _event$mediaQueries4 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries4;
7651
7652  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7653    return;
7654  }
7655
7656  if (continuous || active || complete) {
7657    if (current || renderType === RENDER_GENERAL && complete) {
7658      // Render current values to ref state and grab latest
7659      store.dispatch((0, _IX2EngineActions.elementStateChanged)(elementId, actionTypeId, current, actionItem));
7660
7661      var _store$getState19 = store.getState(),
7662          ixElements = _store$getState19.ixElements;
7663
7664      var _ref23 = ixElements[elementId] || {},
7665          ref = _ref23.ref,
7666          refType = _ref23.refType,
7667          refState = _ref23.refState;
7668
7669      var actionState = refState && refState[actionTypeId]; // Choose render based on ref type
7670
7671      switch (refType) {
7672        case HTML_ELEMENT:
7673          {
7674            renderHTMLElement(ref, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance);
7675            break;
7676          }
7677      }
7678    }
7679
7680    if (complete) {
7681      if (isCarrier) {
7682        var started = startActionGroup({
7683          store: store,
7684          eventId: eventId,
7685          eventTarget: eventTarget,
7686          eventStateKey: eventStateKey,
7687          actionListId: actionListId,
7688          groupIndex: groupIndex + 1,
7689          verbose: verbose
7690        });
7691
7692        if (verbose && !started) {
7693          store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7694            actionListId: actionListId,
7695            isPlaying: false
7696          }));
7697        }
7698      }
7699
7700      removeInstance(instance, store);
7701    }
7702  }
7703}
7704
7705/***/ }),
7706/* 124 */
7707/***/ (function(module, exports, __webpack_require__) {
7708
7709var defineProperty = __webpack_require__(125);
7710
7711/**
7712 * The base implementation of `assignValue` and `assignMergeValue` without
7713 * value checks.
7714 *
7715 * @private
7716 * @param {Object} object The object to modify.
7717 * @param {string} key The key of the property to assign.
7718 * @param {*} value The value to assign.
7719 */
7720function baseAssignValue(object, key, value) {
7721  if (key == '__proto__' && defineProperty) {
7722    defineProperty(object, key, {
7723      'configurable': true,
7724      'enumerable': true,
7725      'value': value,
7726      'writable': true
7727    });
7728  } else {
7729    object[key] = value;
7730  }
7731}
7732
7733module.exports = baseAssignValue;
7734
7735
7736/***/ }),
7737/* 125 */
7738/***/ (function(module, exports, __webpack_require__) {
7739
7740var getNative = __webpack_require__(11);
7741
7742var defineProperty = (function() {
7743  try {
7744    var func = getNative(Object, 'defineProperty');
7745    func({}, '', {});
7746    return func;
7747  } catch (e) {}
7748}());
7749
7750module.exports = defineProperty;
7751
7752
7753/***/ }),
7754/* 126 */
7755/***/ (function(module, exports, __webpack_require__) {
7756
7757var isObject = __webpack_require__(8);
7758
7759/** Built-in value references. */
7760var objectCreate = Object.create;
7761
7762/**
7763 * The base implementation of `_.create` without support for assigning
7764 * properties to the created object.
7765 *
7766 * @private
7767 * @param {Object} proto The object to inherit from.
7768 * @returns {Object} Returns the new object.
7769 */
7770var baseCreate = (function() {
7771  function object() {}
7772  return function(proto) {
7773    if (!isObject(proto)) {
7774      return {};
7775    }
7776    if (objectCreate) {
7777      return objectCreate(proto);
7778    }
7779    object.prototype = proto;
7780    var result = new object;
7781    object.prototype = undefined;
7782    return result;
7783  };
7784}());
7785
7786module.exports = baseCreate;
7787
7788
7789/***/ }),
7790/* 127 */
7791/***/ (function(module, exports, __webpack_require__) {
7792
7793var metaMap = __webpack_require__(325),
7794    noop = __webpack_require__(326);
7795
7796/**
7797 * Gets metadata for `func`.
7798 *
7799 * @private
7800 * @param {Function} func The function to query.
7801 * @returns {*} Returns the metadata for `func`.
7802 */
7803var getData = !metaMap ? noop : function(func) {
7804  return metaMap.get(func);
7805};
7806
7807module.exports = getData;
7808
7809
7810/***/ }),
7811/* 128 */
7812/***/ (function(module, exports, __webpack_require__) {
7813
7814var realNames = __webpack_require__(327);
7815
7816/** Used for built-in method references. */
7817var objectProto = Object.prototype;
7818
7819/** Used to check objects for own properties. */
7820var hasOwnProperty = objectProto.hasOwnProperty;
7821
7822/**
7823 * Gets the name of `func`.
7824 *
7825 * @private
7826 * @param {Function} func The function to query.
7827 * @returns {string} Returns the function name.
7828 */
7829function getFuncName(func) {
7830  var result = (func.name + ''),
7831      array = realNames[result],
7832      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
7833
7834  while (length--) {
7835    var data = array[length],
7836        otherFunc = data.func;
7837    if (otherFunc == null || otherFunc == func) {
7838      return data.name;
7839    }
7840  }
7841  return result;
7842}
7843
7844module.exports = getFuncName;
7845
7846
7847/***/ }),
7848/* 129 */
7849/***/ (function(module, exports, __webpack_require__) {
7850
7851__webpack_require__(130);
7852__webpack_require__(131);
7853__webpack_require__(132);
7854__webpack_require__(134);
7855__webpack_require__(135);
7856__webpack_require__(136);
7857__webpack_require__(137);
7858__webpack_require__(39);
7859__webpack_require__(139);
7860__webpack_require__(334);
7861__webpack_require__(335);
7862__webpack_require__(336);
7863__webpack_require__(337);
7864__webpack_require__(338);
7865module.exports = __webpack_require__(343);
7866
7867
7868/***/ }),
7869/* 130 */
7870/***/ (function(module, exports, __webpack_require__) {
7871
7872"use strict";
7873 // @wf-will-never-add-flow-to-this-file
7874
7875/*
7876 global
7877 window, document, Event
7878*/
7879
7880/*----------------------------------------
7881 * objectFitPolyfill 2.3.0
7882 *
7883 * Basic, no-frills version -
7884 * Defaults to object-fit: cover and object-position: 50% 50%
7885 *
7886 * Made by Constance Chen
7887 * Released under the MIT license
7888 *
7889 * https://github.com/constancecchen/object-fit-polyfill
7890 *--------------------------------------*/
7891
7892var _interopRequireDefault = __webpack_require__(0);
7893
7894var _typeof2 = _interopRequireDefault(__webpack_require__(13));
7895
7896(function () {
7897  // if the page is being rendered on the server, don't continue
7898  if (typeof window === 'undefined') return; // Workaround for Edge 16+, which only implemented object-fit for <img> tags
7899  // TODO: Keep an eye on Edge to determine which version has full final support
7900
7901  var edgeVersion = window.navigator.userAgent.match(/Edge\/(\d{2})\./);
7902  var edgePartialSupport = edgeVersion ? parseInt(edgeVersion[1], 10) >= 16 : false; // If the browser does support object-fit, we don't need to continue
7903
7904  var hasSupport = 'objectFit' in document.documentElement.style !== false;
7905
7906  if (hasSupport && !edgePartialSupport) {
7907    window.objectFitPolyfill = function () {
7908      return false;
7909    };
7910
7911    return;
7912  }
7913  /**
7914   * Check the container's parent element to make sure it will
7915   * correctly handle and clip absolutely positioned children
7916   *
7917   * @param {node} $container - parent element
7918   */
7919
7920
7921  var checkParentContainer = function checkParentContainer($container) {
7922    var styles = window.getComputedStyle($container, null);
7923    var position = styles.getPropertyValue('position');
7924    var overflow = styles.getPropertyValue('overflow');
7925    var display = styles.getPropertyValue('display');
7926
7927    if (!position || position === 'static') {
7928      $container.style.position = 'relative';
7929    }
7930
7931    if (overflow !== 'hidden') {
7932      $container.style.overflow = 'hidden';
7933    } // Guesstimating that people want the parent to act like full width/height wrapper here.
7934    // Mostly attempts to target <picture> elements, which default to inline.
7935
7936
7937    if (!display || display === 'inline') {
7938      $container.style.display = 'block';
7939    }
7940
7941    if ($container.clientHeight === 0) {
7942      $container.style.height = '100%';
7943    } // Add a CSS class hook, in case people need to override styles for any reason.
7944
7945
7946    if ($container.className.indexOf('object-fit-polyfill') === -1) {
7947      $container.className += ' object-fit-polyfill';
7948    }
7949  };
7950  /**
7951   * Check for pre-set max-width/height, min-width/height,
7952   * positioning, or margins, which can mess up image calculations
7953   *
7954   * @param {node} $media - img/video element
7955   */
7956
7957
7958  var checkMediaProperties = function checkMediaProperties($media) {
7959    var styles = window.getComputedStyle($media, null);
7960    var constraints = {
7961      'max-width': 'none',
7962      'max-height': 'none',
7963      'min-width': '0px',
7964      'min-height': '0px',
7965      top: 'auto',
7966      right: 'auto',
7967      bottom: 'auto',
7968      left: 'auto',
7969      'margin-top': '0px',
7970      'margin-right': '0px',
7971      'margin-bottom': '0px',
7972      'margin-left': '0px'
7973    };
7974
7975    for (var property in constraints) {
7976      var constraint = styles.getPropertyValue(property);
7977
7978      if (constraint !== constraints[property]) {
7979        $media.style[property] = constraints[property];
7980      }
7981    }
7982  };
7983  /**
7984   * Calculate & set object-fit
7985   *
7986   * @param {node} $media - img/video/picture element
7987   */
7988
7989
7990  var objectFit = function objectFit($media) {
7991    // If necessary, make the parent container work with absolutely positioned elements
7992    var $container = $media.parentNode;
7993    checkParentContainer($container); // Check for any pre-set CSS which could mess up image calculations
7994
7995    checkMediaProperties($media); // Mathematically figure out which side needs covering, and add CSS positioning & centering
7996
7997    $media.style.position = 'absolute';
7998    $media.style.height = '100%';
7999    $media.style.width = 'auto';
8000
8001    if ($media.clientWidth > $container.clientWidth) {
8002      $media.style.top = '0';
8003      $media.style.marginTop = '0';
8004      $media.style.left = '50%';
8005      $media.style.marginLeft = $media.clientWidth / -2 + 'px';
8006    } else {
8007      $media.style.width = '100%';
8008      $media.style.height = 'auto';
8009      $media.style.left = '0';
8010      $media.style.marginLeft = '0';
8011      $media.style.top = '50%';
8012      $media.style.marginTop = $media.clientHeight / -2 + 'px';
8013    }
8014  };
8015  /**
8016   * Initialize plugin
8017   *
8018   * @param {node} media - Optional specific DOM node(s) to be polyfilled
8019   */
8020
8021
8022  var objectFitPolyfill = function objectFitPolyfill(media) {
8023    if (typeof media === 'undefined' || media instanceof Event) {
8024      // If left blank, or a default event, all media on the page will be polyfilled.
8025      media = document.querySelectorAll('[data-object-fit]');
8026    } else if (media && media.nodeName) {
8027      // If it's a single node, wrap it in an array so it works.
8028      media = [media];
8029    } else if ((0, _typeof2["default"])(media) === 'object' && media.length && media[0].nodeName) {
8030      // If it's an array of DOM nodes (e.g. a jQuery selector), it's fine as-is.
8031      // eslint-disable-next-line no-self-assign
8032      media = media;
8033    } else {
8034      // Otherwise, if it's invalid or an incorrect type, return false to let people know.
8035      return false;
8036    }
8037
8038    for (var i = 0; i < media.length; i++) {
8039      if (!media[i].nodeName) continue;
8040      var mediaType = media[i].nodeName.toLowerCase();
8041
8042      if (mediaType === 'img') {
8043        if (edgePartialSupport) continue; // Edge supports object-fit for images (but nothing else), so no need to polyfill
8044
8045        if (media[i].complete) {
8046          objectFit(media[i]);
8047        } else {
8048          media[i].addEventListener('load', function () {
8049            objectFit(this);
8050          });
8051        }
8052      } else if (mediaType === 'video') {
8053        if (media[i].readyState > 0) {
8054          objectFit(media[i]);
8055        } else {
8056          media[i].addEventListener('loadedmetadata', function () {
8057            objectFit(this);
8058          });
8059        }
8060      } else {
8061        objectFit(media[i]);
8062      }
8063    }
8064
8065    return true;
8066  };
8067
8068  if (document.readyState === 'loading') {
8069    // Loading hasn't finished yet
8070    document.addEventListener('DOMContentLoaded', objectFitPolyfill);
8071  } else {
8072    // `DOMContentLoaded` has already fired
8073    objectFitPolyfill();
8074  }
8075
8076  window.addEventListener('resize', objectFitPolyfill);
8077  window.objectFitPolyfill = objectFitPolyfill;
8078})();
8079
8080/***/ }),
8081/* 131 */
8082/***/ (function(module, exports, __webpack_require__) {
8083
8084"use strict";
8085 // @wf-will-never-add-flow-to-this-file
8086
8087/*
8088  global
8089  window, document, $, Webflow
8090*/
8091
8092(function () {
8093  // if the page is being rendered on the server, don't continue
8094  if (typeof window === 'undefined') return;
8095
8096  function setAllBackgroundVideoStates(shouldPlay) {
8097    if (Webflow.env('design')) {
8098      return;
8099    } // 1. set every video
8100
8101
8102    $('video').each(function () {
8103      shouldPlay && $(this).prop('autoplay') ? this.play() : this.pause();
8104    }); // 2. set every video controller button
8105
8106    $('.w-background-video--control').each(function () {
8107      if (shouldPlay) {
8108        showPauseButton($(this));
8109      } else {
8110        showPlayButton($(this));
8111      }
8112    });
8113  }
8114
8115  function showPlayButton($btn) {
8116    $btn.find('> span').each(function (i) {
8117      $(this).prop('hidden', function () {
8118        return i === 0;
8119      });
8120    });
8121  }
8122
8123  function showPauseButton($btn) {
8124    $btn.find('> span').each(function (i) {
8125      $(this).prop('hidden', function () {
8126        return i === 1;
8127      });
8128    });
8129  }
8130
8131  $(document).ready(function () {
8132    var watcher = window.matchMedia('(prefers-reduced-motion: reduce)'); // respond to changing preferences
8133
8134    watcher.addEventListener('change', function (e) {
8135      setAllBackgroundVideoStates(!e.matches);
8136    });
8137
8138    if (watcher.matches) {
8139      // user currently prefers reduced motion, pause all immediately
8140      setAllBackgroundVideoStates(false);
8141    } // show play button for videos without autoplay
8142
8143
8144    $('video:not([autoplay])').each(function () {
8145      $(this).parent().find('.w-background-video--control').each(function () {
8146        showPlayButton($(this));
8147      });
8148    });
8149    $(document).on('click', '.w-background-video--control', function (e) {
8150      if (Webflow.env('design')) return;
8151      var btn = $(e.currentTarget);
8152      var video = $("video#".concat(btn.attr('aria-controls'))).get(0);
8153      if (!video) return;
8154
8155      if (video.paused) {
8156        var play = video.play();
8157        showPauseButton(btn); // IE does not return a promise from .play()
8158
8159        if (play && typeof play["catch"] === 'function') {
8160          play["catch"](function () {
8161            // something went wrong and it's not playing
8162            showPlayButton(btn);
8163          });
8164        }
8165      } else {
8166        video.pause();
8167        showPlayButton(btn);
8168      }
8169    });
8170  });
8171})();
8172
8173/***/ }),
8174/* 132 */
8175/***/ (function(module, exports, __webpack_require__) {
8176
8177"use strict";
8178 // @wf-will-never-add-flow-to-this-file
8179
8180/* globals document, window, navigator */
8181
8182/* eslint-disable no-var */
8183
8184/**
8185 * Webflow: Brand pages on the subdomain
8186 */
8187
8188var Webflow = __webpack_require__(3);
8189
8190Webflow.define('brand', module.exports = function ($) {
8191  var api = {};
8192  var doc = document;
8193  var $html = $('html');
8194  var $body = $('body');
8195  var namespace = '.w-webflow-badge';
8196  var location = window.location;
8197  var isPhantom = /PhantomJS/i.test(navigator.userAgent);
8198  var fullScreenEvents = 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange';
8199  var brandElement; // -----------------------------------
8200  // Module methods
8201
8202  api.ready = function () {
8203    var shouldBrand = $html.attr('data-wf-status');
8204    var publishedDomain = $html.attr('data-wf-domain') || '';
8205
8206    if (/\.webflow\.io$/i.test(publishedDomain) && location.hostname !== publishedDomain) {
8207      shouldBrand = true;
8208    }
8209
8210    if (shouldBrand && !isPhantom) {
8211      brandElement = brandElement || createBadge();
8212      ensureBrand();
8213      setTimeout(ensureBrand, 500);
8214      $(doc).off(fullScreenEvents, onFullScreenChange).on(fullScreenEvents, onFullScreenChange);
8215    }
8216  };
8217
8218  function onFullScreenChange() {
8219    var fullScreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen || doc.msFullscreenElement || Boolean(doc.webkitFullscreenElement);
8220    $(brandElement).attr('style', fullScreen ? 'display: none !important;' : '');
8221  }
8222
8223  function createBadge() {
8224    var $brand = $('<a class="w-webflow-badge"></a>').attr('href', 'https://webflow.com?utm_campaign=brandjs');
8225    var $logoArt = $('<img>').attr('src', 'https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon.f67cd735e3.svg').attr('alt', '').css({
8226      marginRight: '8px',
8227      width: '16px'
8228    });
8229    var $logoText = $('<img>').attr('src', 'https://d1otoma47x30pg.cloudfront.net/img/webflow-badge-text.6faa6a38cd.svg').attr('alt', 'Made in Webflow');
8230    $brand.append($logoArt, $logoText);
8231    return $brand[0];
8232  }
8233
8234  function ensureBrand() {
8235    var found = $body.children(namespace);
8236    var match = found.length && found.get(0) === brandElement;
8237    var inEditor = Webflow.env('editor');
8238
8239    if (match) {
8240      // Remove brand when Editor is active
8241      if (inEditor) {
8242        found.remove();
8243      } // Exit early, brand is in place
8244
8245
8246      return;
8247    } // Remove any invalid brand elements
8248
8249
8250    if (found.length) {
8251      found.remove();
8252    } // Append the brand (unless Editor is active)
8253
8254
8255    if (!inEditor) {
8256      $body.append(brandElement);
8257    }
8258  } // Export module
8259
8260
8261  return api;
8262});
8263
8264/***/ }),
8265/* 133 */
8266/***/ (function(module, exports, __webpack_require__) {
8267
8268"use strict";
8269 // @wf-will-never-add-flow-to-this-file
8270// Include tram for frame-throttling
8271
8272/* globals window */
8273
8274/* eslint-disable no-var */
8275
8276var $ = window.$;
8277var tram = __webpack_require__(69) && $.tram;
8278/*!
8279 * Webflow._ (aka) Underscore.js 1.6.0 (custom build)
8280 * _.each
8281 * _.map
8282 * _.find
8283 * _.filter
8284 * _.any
8285 * _.contains
8286 * _.delay
8287 * _.defer
8288 * _.throttle (webflow)
8289 * _.debounce
8290 * _.keys
8291 * _.has
8292 * _.now
8293 * _.template (webflow: upgraded to 1.13.6)
8294 *
8295 * http://underscorejs.org
8296 * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
8297 * Underscore may be freely distributed under the MIT license.
8298 * @license MIT
8299 */
8300
8301module.exports = function () {
8302  var _ = {}; // Current version.
8303
8304  _.VERSION = '1.6.0-Webflow'; // Establish the object that gets returned to break out of a loop iteration.
8305
8306  var breaker = {}; // Save bytes in the minified (but not gzipped) version:
8307
8308  /* eslint-disable one-var */
8309
8310  var ArrayProto = Array.prototype,
8311      ObjProto = Object.prototype,
8312      FuncProto = Function.prototype;
8313  /* eslint-enable one-var */
8314  // Create quick reference variables for speed access to core prototypes.
8315
8316  /* eslint-disable one-var, no-unused-vars */
8317
8318  var push = ArrayProto.push,
8319      slice = ArrayProto.slice,
8320      concat = ArrayProto.concat,
8321      toString = ObjProto.toString,
8322      hasOwnProperty = ObjProto.hasOwnProperty;
8323  /* eslint-enable one-var, no-unused-vars */
8324  // All **ECMAScript 5** native function implementations that we hope to use
8325  // are declared here.
8326
8327  /* eslint-disable one-var, no-unused-vars */
8328
8329  var nativeForEach = ArrayProto.forEach,
8330      nativeMap = ArrayProto.map,
8331      nativeReduce = ArrayProto.reduce,
8332      nativeReduceRight = ArrayProto.reduceRight,
8333      nativeFilter = ArrayProto.filter,
8334      nativeEvery = ArrayProto.every,
8335      nativeSome = ArrayProto.some,
8336      nativeIndexOf = ArrayProto.indexOf,
8337      nativeLastIndexOf = ArrayProto.lastIndexOf,
8338      nativeIsArray = Array.isArray,
8339      nativeKeys = Object.keys,
8340      nativeBind = FuncProto.bind;
8341  /* eslint-enable one-var, no-unused-vars */
8342  // Collection Functions
8343  // --------------------
8344  // The cornerstone, an `each` implementation, aka `forEach`.
8345  // Handles objects with the built-in `forEach`, arrays, and raw objects.
8346  // Delegates to **ECMAScript 5**'s native `forEach` if available.
8347
8348  var each = _.each = _.forEach = function (obj, iterator, context) {
8349    /* jshint shadow:true */
8350    if (obj == null) return obj;
8351
8352    if (nativeForEach && obj.forEach === nativeForEach) {
8353      obj.forEach(iterator, context); // eslint-disable-next-line no-implicit-coercion
8354    } else if (obj.length === +obj.length) {
8355      for (var i = 0, length = obj.length; i < length; i++) {
8356        if (iterator.call(context, obj[i], i, obj) === breaker) return;
8357      }
8358    } else {
8359      var keys = _.keys(obj); // eslint-disable-next-line no-redeclare
8360
8361
8362      for (var i = 0, length = keys.length; i < length; i++) {
8363        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
8364      }
8365    }
8366
8367    return obj;
8368  }; // Return the results of applying the iterator to each element.
8369  // Delegates to **ECMAScript 5**'s native `map` if available.
8370
8371
8372  _.map = _.collect = function (obj, iterator, context) {
8373    var results = [];
8374    if (obj == null) return results;
8375    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
8376    each(obj, function (value, index, list) {
8377      results.push(iterator.call(context, value, index, list));
8378    });
8379    return results;
8380  }; // Return the first value which passes a truth test. Aliased as `detect`.
8381
8382
8383  _.find = _.detect = function (obj, predicate, context) {
8384    var result;
8385    any(obj, function (value, index, list) {
8386      if (predicate.call(context, value, index, list)) {
8387        result = value;
8388        return true;
8389      }
8390    });
8391    return result;
8392  }; // Return all the elements that pass a truth test.
8393  // Delegates to **ECMAScript 5**'s native `filter` if available.
8394  // Aliased as `select`.
8395
8396
8397  _.filter = _.select = function (obj, predicate, context) {
8398    var results = [];
8399    if (obj == null) return results;
8400    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
8401    each(obj, function (value, index, list) {
8402      if (predicate.call(context, value, index, list)) results.push(value);
8403    });
8404    return results;
8405  }; // Determine if at least one element in the object matches a truth test.
8406  // Delegates to **ECMAScript 5**'s native `some` if available.
8407  // Aliased as `any`.
8408
8409
8410  var any = _.some = _.any = function (obj, predicate, context) {
8411    predicate || (predicate = _.identity);
8412    var result = false;
8413    if (obj == null) return result;
8414    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
8415    each(obj, function (value, index, list) {
8416      if (result || (result = predicate.call(context, value, index, list))) return breaker;
8417    });
8418    return !!result; // eslint-disable-line no-implicit-coercion
8419  }; // Determine if the array or object contains a given value (using `===`).
8420  // Aliased as `include`.
8421
8422
8423  _.contains = _.include = function (obj, target) {
8424    if (obj == null) return false;
8425    if (nativeIndexOf && obj.indexOf === nativeIndexOf) // eslint-disable-next-line eqeqeq
8426      return obj.indexOf(target) != -1;
8427    return any(obj, function (value) {
8428      return value === target;
8429    });
8430  }; // Function (ahem) Functions
8431  // --------------------
8432  // Delays a function for the given number of milliseconds, and then calls
8433  // it with the arguments supplied.
8434
8435
8436  _.delay = function (func, wait) {
8437    var args = slice.call(arguments, 2);
8438    return setTimeout(function () {
8439      return func.apply(null, args);
8440    }, wait);
8441  }; // Defers a function, scheduling it to run after the current call stack has
8442  // cleared.
8443
8444
8445  _.defer = function (func) {
8446    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
8447  }; // Returns a function, that, when invoked, will only be triggered once every
8448  // browser animation frame - using tram's requestAnimationFrame polyfill.
8449
8450
8451  _.throttle = function (func) {
8452    // eslint-disable-next-line one-var
8453    var wait, args, context;
8454    return function () {
8455      if (wait) return;
8456      wait = true;
8457      args = arguments;
8458      context = this;
8459      tram.frame(function () {
8460        wait = false;
8461        func.apply(context, args);
8462      });
8463    };
8464  }; // Returns a function, that, as long as it continues to be invoked, will not
8465  // be triggered. The function will be called after it stops being called for
8466  // N milliseconds. If `immediate` is passed, trigger the function on the
8467  // leading edge, instead of the trailing.
8468
8469
8470  _.debounce = function (func, wait, immediate) {
8471    // eslint-disable-next-line one-var
8472    var timeout, args, context, timestamp, result;
8473
8474    var later = function later() {
8475      var last = _.now() - timestamp;
8476
8477      if (last < wait) {
8478        timeout = setTimeout(later, wait - last);
8479      } else {
8480        timeout = null;
8481
8482        if (!immediate) {
8483          result = func.apply(context, args);
8484          context = args = null;
8485        }
8486      }
8487    };
8488
8489    return function () {
8490      context = this;
8491      args = arguments;
8492      timestamp = _.now();
8493      var callNow = immediate && !timeout;
8494
8495      if (!timeout) {
8496        timeout = setTimeout(later, wait);
8497      }
8498
8499      if (callNow) {
8500        result = func.apply(context, args);
8501        context = args = null;
8502      }
8503
8504      return result;
8505    };
8506  }; // Object Functions
8507  // ----------------
8508  // Fill in a given object with default properties.
8509
8510
8511  _.defaults = function (obj) {
8512    if (!_.isObject(obj)) return obj;
8513
8514    for (var i = 1, length = arguments.length; i < length; i++) {
8515      var source = arguments[i];
8516
8517      for (var prop in source) {
8518        // eslint-disable-next-line no-void
8519        if (obj[prop] === void 0) obj[prop] = source[prop];
8520      }
8521    }
8522
8523    return obj;
8524  }; // Retrieve the names of an object's properties.
8525  // Delegates to **ECMAScript 5**'s native `Object.keys`
8526
8527
8528  _.keys = function (obj) {
8529    if (!_.isObject(obj)) return [];
8530    if (nativeKeys) return nativeKeys(obj);
8531    var keys = [];
8532
8533    for (var key in obj) {
8534      if (_.has(obj, key)) keys.push(key);
8535    }
8536
8537    return keys;
8538  }; // Shortcut function for checking if an object has a given property directly
8539  // on itself (in other words, not on a prototype).
8540
8541
8542  _.has = function (obj, key) {
8543    return hasOwnProperty.call(obj, key);
8544  }; // Is a given variable an object?
8545
8546
8547  _.isObject = function (obj) {
8548    return obj === Object(obj);
8549  }; // Utility Functions
8550  // -----------------
8551  // A (possibly faster) way to get the current timestamp as an integer.
8552
8553
8554  _.now = Date.now || function () {
8555    return new Date().getTime();
8556  }; // By default, Underscore uses ERB-style template delimiters, change the
8557  // following template settings to use alternative delimiters.
8558
8559
8560  _.templateSettings = {
8561    evaluate: /<%([\s\S]+?)%>/g,
8562    interpolate: /<%=([\s\S]+?)%>/g,
8563    escape: /<%-([\s\S]+?)%>/g
8564  }; // When customizing `templateSettings`, if you don't want to define an
8565  // interpolation, evaluation or escaping regex, we need one that is
8566  // guaranteed not to match.
8567
8568  var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a
8569  // string literal.
8570
8571  var escapes = {
8572    "'": "'",
8573    '\\': '\\',
8574    '\r': 'r',
8575    '\n': 'n',
8576    "\u2028": 'u2028',
8577    "\u2029": 'u2029'
8578  };
8579  var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g;
8580
8581  var escapeChar = function escapeChar(match) {
8582    return '\\' + escapes[match];
8583  }; // In order to prevent third-party code injection through
8584  // `_.templateSettings.variable`, we test it against the following regular
8585  // expression. It is intentionally a bit more liberal than just matching valid
8586  // identifiers, but still prevents possible loopholes through defaults or
8587  // destructuring assignment.
8588
8589
8590  var bareIdentifier = /^\s*(\w|\$)+\s*$/; // JavaScript micro-templating, similar to John Resig's implementation.
8591  // Underscore templating handles arbitrary delimiters, preserves whitespace,
8592  // and correctly escapes quotes within interpolated code.
8593  // NB: `oldSettings` only exists for backwards compatibility.
8594
8595  _.template = function (text, settings, oldSettings) {
8596    if (!settings && oldSettings) settings = oldSettings;
8597    settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation.
8598
8599    var matcher = RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g'); // Compile the template source, escaping string literals appropriately.
8600
8601    var index = 0;
8602    var source = "__p+='";
8603    text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
8604      source += text.slice(index, offset).replace(escapeRegExp, escapeChar);
8605      index = offset + match.length;
8606
8607      if (escape) {
8608        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
8609      } else if (interpolate) {
8610        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
8611      } else if (evaluate) {
8612        source += "';\n" + evaluate + "\n__p+='";
8613      } // Adobe VMs need the match returned to produce the correct offset.
8614
8615
8616      return match;
8617    });
8618    source += "';\n";
8619    var argument = settings.variable;
8620
8621    if (argument) {
8622      // Insure against third-party code injection. (CVE-2021-23358)
8623      if (!bareIdentifier.test(argument)) throw new Error('variable is not a bare identifier: ' + argument);
8624    } else {
8625      // If a variable is not specified, place data values in local scope.
8626      source = 'with(obj||{}){\n' + source + '}\n';
8627      argument = 'obj';
8628    }
8629
8630    source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n';
8631    var render;
8632
8633    try {
8634      // eslint-disable-next-line no-new-func
8635      render = new Function(settings.variable || 'obj', '_', source);
8636    } catch (e) {
8637      e.source = source;
8638      throw e;
8639    }
8640
8641    var template = function template(data) {
8642      return render.call(this, data, _);
8643    }; // Provide the compiled source as a convenience for precompilation.
8644
8645
8646    template.source = 'function(' + argument + '){\n' + source + '}';
8647    return template;
8648  }; // Export underscore
8649
8650
8651  return _;
8652}();
8653/* eslint-enable */
8654
8655/***/ }),
8656/* 134 */
8657/***/ (function(module, exports, __webpack_require__) {
8658
8659"use strict";
8660 // @wf-will-never-add-flow-to-this-file
8661
8662/* globals document, window, localStorage, WEBFLOW_API_HOST, WEBFLOW_DEFAULT_HOST */
8663
8664/* eslint-disable no-var */
8665
8666/**
8667 * Webflow: Editor loader
8668 */
8669
8670var Webflow = __webpack_require__(3);
8671
8672Webflow.define('edit', module.exports = function ($, _, options) {
8673  options = options || {}; // Exit early in test env or when inside an iframe
8674
8675  if (Webflow.env('test') || Webflow.env('frame')) {
8676    // Allow test fixtures to continue
8677    if (!options.fixture && !inCypress()) {
8678      return {
8679        exit: 1
8680      };
8681    }
8682  }
8683
8684  var api = {};
8685  var $win = $(window);
8686  var $html = $(document.documentElement);
8687  var location = document.location;
8688  var hashchange = 'hashchange';
8689  var loaded;
8690  var loadEditor = options.load || load;
8691  var hasLocalStorage = false;
8692
8693  try {
8694    // Check localStorage for editor data
8695    hasLocalStorage = localStorage && localStorage.getItem && localStorage.getItem('WebflowEditor');
8696  } catch (e) {// SecurityError: browser storage has been disabled
8697  }
8698
8699  if (hasLocalStorage) {
8700    loadEditor();
8701  } else if (location.search) {
8702    // Check url query for `edit` parameter or any url ending in `?edit`
8703    if (/[?&](edit)(?:[=&?]|$)/.test(location.search) || /\?edit$/.test(location.href)) {
8704      loadEditor();
8705    }
8706  } else {
8707    // Check hash fragment to support `#hash?edit`
8708    $win.on(hashchange, checkHash).triggerHandler(hashchange);
8709  }
8710
8711  function checkHash() {
8712    if (loaded) {
8713      return;
8714    } // Load editor when hash contains `?edit`
8715
8716
8717    if (/\?edit/.test(location.hash)) {
8718      loadEditor();
8719    }
8720  }
8721
8722  function load() {
8723    loaded = true; // Predefine global immediately to benefit Webflow.env
8724
8725    window.WebflowEditor = true;
8726    $win.off(hashchange, checkHash);
8727    checkThirdPartyCookieSupport(function (thirdPartyCookiesSupported) {
8728      $.ajax({
8729        url: cleanSlashes("https://editor-api.webflow.com" + '/api/editor/view'),
8730        data: {
8731          siteId: $html.attr('data-wf-site')
8732        },
8733        xhrFields: {
8734          withCredentials: true
8735        },
8736        dataType: 'json',
8737        crossDomain: true,
8738        success: success(thirdPartyCookiesSupported)
8739      });
8740    });
8741  }
8742
8743  function success(thirdPartyCookiesSupported) {
8744    return function (data) {
8745      if (!data) {
8746        console.error('Could not load editor data');
8747        return;
8748      }
8749
8750      data.thirdPartyCookiesSupported = thirdPartyCookiesSupported;
8751      getScript(prefix(data.bugReporterScriptPath), function () {
8752        getScript(prefix(data.scriptPath), function () {
8753          window.WebflowEditor(data);
8754        });
8755      });
8756    };
8757  }
8758
8759  function getScript(url, done) {
8760    $.ajax({
8761      type: 'GET',
8762      url: url,
8763      dataType: 'script',
8764      cache: true
8765    }).then(done, error);
8766  }
8767
8768  function error(jqXHR, textStatus, errorThrown) {
8769    console.error('Could not load editor script: ' + textStatus);
8770    throw errorThrown;
8771  }
8772
8773  function prefix(url) {
8774    return url.indexOf('//') >= 0 ? url : cleanSlashes("https://editor-api.webflow.com" + url);
8775  }
8776
8777  function cleanSlashes(url) {
8778    return url.replace(/([^:])\/\//g, '$1/');
8779  }
8780
8781  function checkThirdPartyCookieSupport(callback) {
8782    var iframe = window.document.createElement('iframe');
8783    iframe.src = "https://webflow.com" + '/site/third-party-cookie-check.html';
8784    iframe.style.display = 'none';
8785    iframe.sandbox = 'allow-scripts allow-same-origin';
8786
8787    var handleMessage = function handleMessage(event) {
8788      if (event.data === 'WF_third_party_cookies_unsupported') {
8789        cleanUpCookieCheckerIframe(iframe, handleMessage);
8790        callback(false);
8791      } else if (event.data === 'WF_third_party_cookies_supported') {
8792        cleanUpCookieCheckerIframe(iframe, handleMessage);
8793        callback(true);
8794      }
8795    };
8796
8797    iframe.onerror = function () {
8798      cleanUpCookieCheckerIframe(iframe, handleMessage);
8799      callback(false);
8800    };
8801
8802    window.addEventListener('message', handleMessage, false);
8803    window.document.body.appendChild(iframe);
8804  }
8805
8806  function cleanUpCookieCheckerIframe(iframe, listener) {
8807    window.removeEventListener('message', listener, false);
8808    iframe.remove();
8809  } // Export module
8810
8811
8812  return api;
8813});
8814
8815function inCypress() {
8816  try {
8817    return window.top.__Cypress__;
8818  } catch (e) {
8819    return false;
8820  }
8821}
8822
8823/***/ }),
8824/* 135 */
8825/***/ (function(module, exports, __webpack_require__) {
8826
8827"use strict";
8828 // @wf-will-never-add-flow-to-this-file
8829
8830/* globals window, document */
8831
8832/* eslint-disable no-var */
8833
8834/**
8835 * Webflow: focus-visible
8836 */
8837
8838var Webflow = __webpack_require__(3);
8839/*
8840 * This polyfill comes from https://github.com/WICG/focus-visible
8841 */
8842
8843
8844Webflow.define('focus-visible', module.exports = function () {
8845  /**
8846   * Applies the :focus-visible polyfill at the given scope.
8847   * A scope in this case is either the top-level Document or a Shadow Root.
8848   *
8849   * @param {(Document|ShadowRoot)} scope
8850   * @see https://github.com/WICG/focus-visible
8851   */
8852  function applyFocusVisiblePolyfill(scope) {
8853    var hadKeyboardEvent = true;
8854    var hadFocusVisibleRecently = false;
8855    var hadFocusVisibleRecentlyTimeout = null;
8856    var inputTypesAllowlist = {
8857      text: true,
8858      search: true,
8859      url: true,
8860      tel: true,
8861      email: true,
8862      password: true,
8863      number: true,
8864      date: true,
8865      month: true,
8866      week: true,
8867      time: true,
8868      datetime: true,
8869      'datetime-local': true
8870    };
8871    /**
8872     * Helper function for legacy browsers and iframes which sometimes focus
8873     * elements like document, body, and non-interactive SVG.
8874     * @param {Element} el
8875     */
8876
8877    function isValidFocusTarget(el) {
8878      if (el && el !== document && el.nodeName !== 'HTML' && el.nodeName !== 'BODY' && 'classList' in el && 'contains' in el.classList) {
8879        return true;
8880      }
8881
8882      return false;
8883    }
8884    /**
8885     * Computes whether the given element should automatically trigger the
8886     * `focus-visible` class being added, i.e. whether it should always match
8887     * `:focus-visible` when focused.
8888     * @param {Element} el
8889     * @return {boolean}
8890     */
8891
8892
8893    function focusTriggersKeyboardModality(el) {
8894      var type = el.type;
8895      var tagName = el.tagName;
8896
8897      if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {
8898        return true;
8899      }
8900
8901      if (tagName === 'TEXTAREA' && !el.readOnly) {
8902        return true;
8903      }
8904
8905      if (el.isContentEditable) {
8906        return true;
8907      }
8908
8909      return false;
8910    }
8911
8912    function addFocusVisibleAttribute(el) {
8913      if (el.getAttribute('data-wf-focus-visible')) {
8914        return;
8915      }
8916
8917      el.setAttribute('data-wf-focus-visible', 'true');
8918    }
8919
8920    function removeFocusVisibleAttribute(el) {
8921      if (!el.getAttribute('data-wf-focus-visible')) {
8922        return;
8923      }
8924
8925      el.removeAttribute('data-wf-focus-visible');
8926    }
8927    /**
8928     * If the most recent user interaction was via the keyboard;
8929     * and the key press did not include a meta, alt/option, or control key;
8930     * then the modality is keyboard. Otherwise, the modality is not keyboard.
8931     * Apply `focus-visible` to any current active element and keep track
8932     * of our keyboard modality state with `hadKeyboardEvent`.
8933     * @param {KeyboardEvent} e
8934     */
8935
8936
8937    function onKeyDown(e) {
8938      if (e.metaKey || e.altKey || e.ctrlKey) {
8939        return;
8940      }
8941
8942      if (isValidFocusTarget(scope.activeElement)) {
8943        addFocusVisibleAttribute(scope.activeElement);
8944      }
8945
8946      hadKeyboardEvent = true;
8947    }
8948    /**
8949     * If at any point a user clicks with a pointing device, ensure that we change
8950     * the modality away from keyboard.
8951     * This avoids the situation where a user presses a key on an already focused
8952     * element, and then clicks on a different element, focusing it with a
8953     * pointing device, while we still think we're in keyboard modality.
8954     * @param {Event} e
8955     */
8956
8957
8958    function onPointerDown() {
8959      hadKeyboardEvent = false;
vendor: 4,351 bytes, lines 8960-9071
8960    }
8961    /**
8962     * On `focus`, add the `focus-visible` class to the target if:
8963     * - the target received focus as a result of keyboard navigation, or
8964     * - the event target is an element that will likely require interaction
8965     *   via the keyboard (e.g. a text box)
8966     * @param {Event} e
8967     */
8968
8969
8970    function onFocus(e) {
8971      // Prevent IE from focusing the document or HTML element.
8972      if (!isValidFocusTarget(e.target)) {
8973        return;
8974      }
8975
8976      if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {
8977        addFocusVisibleAttribute(e.target);
8978      }
8979    }
8980    /**
8981     * On `blur`, remove the `focus-visible` class from the target.
8982     * @param {Event} e
8983     */
8984
8985
8986    function onBlur(e) {
8987      if (!isValidFocusTarget(e.target)) {
8988        return;
8989      }
8990
8991      if (e.target.hasAttribute('data-wf-focus-visible')) {
8992        // To detect a tab/window switch, we look for a blur event followed
8993        // rapidly by a visibility change.
8994        // If we don't see a visibility change within 100ms, it's probably a
8995        // regular focus change.
8996        hadFocusVisibleRecently = true;
8997        window.clearTimeout(hadFocusVisibleRecentlyTimeout);
8998        hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {
8999          hadFocusVisibleRecently = false;
9000        }, 100);
9001        removeFocusVisibleAttribute(e.target);
9002      }
9003    }
9004    /**
9005     * If the user changes tabs, keep track of whether or not the previously
9006     * focused element had .focus-visible.
9007     * @param {Event} e
9008     */
9009
9010
9011    function onVisibilityChange() {
9012      if (document.visibilityState === 'hidden') {
9013        // If the tab becomes active again, the browser will handle calling focus
9014        // on the element (Safari actually calls it twice).
9015        // If this tab change caused a blur on an element with focus-visible,
9016        // re-apply the class when the user switches back to the tab.
9017        if (hadFocusVisibleRecently) {
9018          hadKeyboardEvent = true;
9019        }
9020
9021        addInitialPointerMoveListeners();
9022      }
9023    }
9024    /**
9025     * Add a group of listeners to detect usage of any pointing devices.
9026     * These listeners will be added when the polyfill first loads, and anytime
9027     * the window is blurred, so that they are active when the window regains
9028     * focus.
9029     */
9030
9031
9032    function addInitialPointerMoveListeners() {
9033      document.addEventListener('mousemove', onInitialPointerMove);
9034      document.addEventListener('mousedown', onInitialPointerMove);
9035      document.addEventListener('mouseup', onInitialPointerMove);
9036      document.addEventListener('pointermove', onInitialPointerMove);
9037      document.addEventListener('pointerdown', onInitialPointerMove);
9038      document.addEventListener('pointerup', onInitialPointerMove);
9039      document.addEventListener('touchmove', onInitialPointerMove);
9040      document.addEventListener('touchstart', onInitialPointerMove);
9041      document.addEventListener('touchend', onInitialPointerMove);
9042    }
9043
9044    function removeInitialPointerMoveListeners() {
9045      document.removeEventListener('mousemove', onInitialPointerMove);
9046      document.removeEventListener('mousedown', onInitialPointerMove);
9047      document.removeEventListener('mouseup', onInitialPointerMove);
9048      document.removeEventListener('pointermove', onInitialPointerMove);
9049      document.removeEventListener('pointerdown', onInitialPointerMove);
9050      document.removeEventListener('pointerup', onInitialPointerMove);
9051      document.removeEventListener('touchmove', onInitialPointerMove);
9052      document.removeEventListener('touchstart', onInitialPointerMove);
9053      document.removeEventListener('touchend', onInitialPointerMove);
9054    }
9055    /**
9056     * When the polfyill first loads, assume the user is in keyboard modality.
9057     * If any event is received from a pointing device (e.g. mouse, pointer,
9058     * touch), turn off keyboard modality.
9059     * This accounts for situations where focus enters the page from the URL bar.
9060     * @param {Event} e
9061     */
9062
9063
9064    function onInitialPointerMove(e) {
9065      // Work around a Safari quirk that fires a mousemove on <html> whenever the
9066      // window blurs, even if you're tabbing out of the page. ¯\_(ツ)_/¯
9067      if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {
9068        return;
9069      }
9070
9071      hadKeyboardEvent = false;
9072      removeInitialPointerMoveListeners();
9073    } // For some kinds of state, we are interested in changes at the global scope
9074    // only. For example, global pointer input, global key presses and global
9075    // visibility change should affect the state at every scope:
9076
9077
9078    document.addEventListener('keydown', onKeyDown, true);
9079    document.addEventListener('mousedown', onPointerDown, true);
9080    document.addEventListener('pointerdown', onPointerDown, true);
9081    document.addEventListener('touchstart', onPointerDown, true);
9082    document.addEventListener('visibilitychange', onVisibilityChange, true);
9083    addInitialPointerMoveListeners(); // For focus and blur, we specifically care about state changes in the local
9084    // scope. This is because focus / blur events that originate from within a
9085    // shadow root are not re-dispatched from the host element if it was already
9086    // the active element in its own scope:
9087
9088    scope.addEventListener('focus', onFocus, true);
9089    scope.addEventListener('blur', onBlur, true);
9090  }
9091
9092  function ready() {
9093    if (typeof document !== 'undefined') {
9094      try {
9095        // check for native support; this will throw if the selector is not considered valid
9096        document.querySelector(':focus-visible');
9097      } catch (e) {
9098        // :focus-visible pseudo-selector is not supported natively
9099        applyFocusVisiblePolyfill(document);
9100      }
9101    }
9102  } // Export module
9103
9104
9105  return {
9106    ready: ready
9107  };
9108});
9109
9110/***/ }),
9111/* 136 */
9112/***/ (function(module, exports, __webpack_require__) {
9113
9114"use strict";
9115 // @wf-will-never-add-flow-to-this-file
9116
9117/* globals window, document */
9118
9119/* eslint-disable no-var */
9120
9121/**
9122 * Webflow: focus-within
9123 */
9124
9125var Webflow = __webpack_require__(3); // polyfill based off of https://github.com/matteobad/focus-within-polyfill
9126
9127
9128Webflow.define('focus-within', module.exports = function () {
9129  /**
9130   * Calculate the entire event path.
9131   *
9132   * @param {Element} node
9133   * @return {Array} computedPath
9134   */
9135  function computeEventPath(node) {
9136    var path = [node];
9137    var parent = null;
9138
9139    while (parent = node.parentNode || node.host || node.defaultView) {
9140      path.push(parent);
9141      node = parent;
9142    }
9143
9144    return path;
9145  }
9146
9147  function addFocusWithinAttribute(el) {
9148    if (typeof el.getAttribute !== 'function' || el.getAttribute('data-wf-focus-within')) {
9149      return;
9150    }
9151
9152    el.setAttribute('data-wf-focus-within', 'true');
9153  }
9154
9155  function removeFocusWithinAttribute(el) {
9156    if (typeof el.getAttribute !== 'function' || !el.getAttribute('data-wf-focus-within')) {
9157      return;
9158    }
9159
9160    el.removeAttribute('data-wf-focus-within');
9161  }
9162  /**
9163   * Attach event listerns to initiate polyfill
9164   * @return {boolean}
9165   */
9166
9167
9168  function loadFocusWithinPolyfill() {
9169    var handler = function handler(e) {
9170      var running;
9171      /**
9172       * Request animation frame callback.
9173       * Remove previously applied attributes.
9174       * Add new attributes.
9175       */
9176
9177      function action() {
9178        running = false;
9179
9180        if ('blur' === e.type) {
9181          Array.prototype.slice.call(computeEventPath(e.target)).forEach(removeFocusWithinAttribute);
9182        }
9183
9184        if ('focus' === e.type) {
9185          Array.prototype.slice.call(computeEventPath(e.target)).forEach(addFocusWithinAttribute);
9186        }
9187      }
9188
9189      if (!running) {
9190        window.requestAnimationFrame(action);
9191        running = true;
9192      }
9193    };
9194
9195    document.addEventListener('focus', handler, true);
9196    document.addEventListener('blur', handler, true);
9197    addFocusWithinAttribute(document.body);
9198    return true;
9199  }
9200
9201  function ready() {
9202    if (typeof document !== 'undefined' && document.body.hasAttribute('data-wf-focus-within')) {
9203      try {
9204        // check for native support; this will throw if the selector is not considered valid
9205        document.querySelector(':focus-within');
9206      } catch (e) {
9207        loadFocusWithinPolyfill();
9208      }
9209    }
9210  } // Export module
9211
9212
9213  return {
9214    ready: ready
9215  };
9216});
9217
9218/***/ }),
9219/* 137 */
9220/***/ (function(module, exports, __webpack_require__) {
9221
9222"use strict";
9223 // @wf-will-never-add-flow-to-this-file
9224
9225/* globals document, MouseEvent */
9226
9227/* eslint-disable no-var */
9228
9229/**
9230 * Webflow: focus
9231 */
9232
9233var Webflow = __webpack_require__(3);
9234/*
9235 * Safari has a weird bug where it doesn't support :focus for links with hrefs,
9236 * buttons, and input[type=button|submit], so we listen for mousedown events
9237 * instead and force the element to emit a focus event in those cases.
9238
9239 * See these webkit bugs for reference:
9240 * https://bugs.webkit.org/show_bug.cgi?id=22261
9241 * https://bugs.webkit.org/show_bug.cgi?id=229895
9242 */
9243
9244
9245Webflow.define('focus', module.exports = function () {
9246  var capturedEvents = [];
9247  var capturing = false;
9248
9249  function captureEvent(e) {
9250    if (capturing) {
9251      e.preventDefault();
9252      e.stopPropagation();
9253      e.stopImmediatePropagation();
9254      capturedEvents.unshift(e);
9255    }
9256  }
9257  /*
9258   * The only mousedown events we care about here are ones emanating from
9259   * (A) anchor links with href attribute,
9260   * (B) non-disabled buttons,
9261   * (C) non-disabled textarea,
9262   * (D) non-disabled inputs of type "button", "reset", "checkbox", "radio", "submit"
9263   * (E) non-interactive elements (button, a, input, textarea, select) that have a tabindex with a numeric value
9264   * (F) audio elements
9265   * (G) video elements with controls attribute
9266   */
9267
9268
9269  function isPolyfilledFocusEvent(e) {
9270    var el = e.target;
9271    var tag = el.tagName;
9272    return /^a$/i.test(tag) && el.href != null || // (A)
9273    /^(button|textarea)$/i.test(tag) && el.disabled !== true || // (B) (C)
9274    /^input$/i.test(tag) && /^(button|reset|submit|radio|checkbox)$/i.test(el.type) && !el.disabled || // (D)
9275    !/^(button|input|textarea|select|a)$/i.test(tag) && !Number.isNaN(Number.parseFloat(el.tabIndex)) || // (E)
9276    /^audio$/i.test(tag) || // (F)
9277    /^video$/i.test(tag) && el.controls === true // (G)
9278    ;
9279  }
9280
9281  function handler(e) {
9282    if (isPolyfilledFocusEvent(e)) {
9283      // start capturing possible out-of-order mouse events
9284      capturing = true;
9285      /*
9286       * enqueue the focus event _after_ the current batch of events, which
9287       * includes any blur events. The correct order of events is:
9288       *
9289       * [this element] MOUSEDOWN               <-- this event
9290       * [previously active element] BLUR
9291       * [previously active element] FOCUSOUT
9292       * [this element] FOCUS                   <-- forced event
9293       * [this element] FOCUSIN                 <-- forced event
9294       * [this element] MOUSEUP                 <-- possibly captured event (it may have fired _before_ the FOCUS event)
9295       * [this element] CLICK                   <-- possibly captured event (it may have fired _before_ the FOCUS event)
9296       */
9297
9298      setTimeout(function () {
9299        // stop capturing possible out-of-order mouse events
9300        capturing = false; // trigger focus event
9301
9302        e.target.focus(); // re-dispatch captured mouse events in order
9303
9304        while (capturedEvents.length > 0) {
9305          var event = capturedEvents.pop();
9306          event.target.dispatchEvent(new MouseEvent(event.type, event));
9307        }
9308      }, 0);
9309    }
9310  }
9311
9312  function ready() {
9313    if (typeof document !== 'undefined' && document.body.hasAttribute('data-wf-focus-within') && Webflow.env.safari) {
9314      document.addEventListener('mousedown', handler, true);
9315      document.addEventListener('mouseup', captureEvent, true);
9316      document.addEventListener('click', captureEvent, true);
9317    }
9318  } // Export module
9319
9320
9321  return {
9322    ready: ready
9323  };
9324});
9325
9326/***/ }),
9327/* 138 */
9328/***/ (function(module, exports, __webpack_require__) {
9329
9330"use strict";
9331// @wf-will-never-add-flow-to-this-file
9332
9333/* globals window */
9334
9335/* eslint-disable no-var */
9336
9337/**
9338 * Webflow: IX Event triggers for other modules
9339 */
9340// eslint-disable-next-line strict
9341
9342
9343var $ = window.jQuery;
9344var api = {};
9345var eventQueue = [];
9346var namespace = '.w-ix';
9347var eventTriggers = {
9348  reset: function reset(i, el) {
9349    el.__wf_intro = null;
9350  },
9351  intro: function intro(i, el) {
9352    if (el.__wf_intro) {
9353      return;
9354    }
9355
9356    el.__wf_intro = true;
9357    $(el).triggerHandler(api.types.INTRO);
9358  },
9359  outro: function outro(i, el) {
9360    if (!el.__wf_intro) {
9361      return;
9362    }
9363
9364    el.__wf_intro = null;
9365    $(el).triggerHandler(api.types.OUTRO);
9366  }
9367};
9368api.triggers = {};
9369api.types = {
9370  INTRO: 'w-ix-intro' + namespace,
9371  OUTRO: 'w-ix-outro' + namespace
9372}; // Trigger any events in queue + restore trigger methods
9373
9374api.init = function () {
9375  var count = eventQueue.length;
9376
9377  for (var i = 0; i < count; i++) {
9378    var memo = eventQueue[i];
9379    memo[0](0, memo[1]);
9380  }
9381
9382  eventQueue = [];
9383  $.extend(api.triggers, eventTriggers);
9384}; // Replace all triggers with async wrapper to queue events until init
9385
9386
9387api.async = function () {
9388  for (var key in eventTriggers) {
9389    var func = eventTriggers[key];
9390
9391    if (!eventTriggers.hasOwnProperty(key)) {
9392      continue;
9393    } // Replace trigger method with async wrapper
9394
9395
9396    api.triggers[key] = function (i, el) {
9397      eventQueue.push([func, el]);
9398    };
9399  }
9400}; // Default triggers to async queue
9401
9402
9403api.async();
9404module.exports = api;
9405
9406/***/ }),
9407/* 139 */
9408/***/ (function(module, exports, __webpack_require__) {
9409
9410"use strict";
9411 // @wf-will-never-add-flow-to-this-file
9412
9413/* eslint-disable no-var */
9414
9415/**
9416 * Webflow: Interactions 2
9417 */
9418
9419var Webflow = __webpack_require__(3);
9420
9421var ix2 = __webpack_require__(140);
9422
9423ix2.setEnv(Webflow.env);
9424Webflow.define('ix2', module.exports = function () {
9425  return ix2;
9426});
9427
9428/***/ }),
9429/* 140 */
9430/***/ (function(module, exports, __webpack_require__) {
9431
9432"use strict";
9433
9434
9435var _interopRequireWildcard = __webpack_require__(18);
9436
9437var _interopRequireDefault = __webpack_require__(0);
9438
9439Object.defineProperty(exports, "__esModule", {
9440  value: true
9441});
9442exports.setEnv = setEnv;
9443exports.init = init;
9444exports.destroy = destroy;
9445exports.actions = exports.store = void 0;
9446
9447__webpack_require__(141);
9448
9449var _redux = __webpack_require__(87);
9450
9451var _IX2Reducer = _interopRequireDefault(__webpack_require__(188));
9452
9453var _IX2VanillaEngine = __webpack_require__(123);
9454
9455var actions = _interopRequireWildcard(__webpack_require__(65));
9456
9457exports.actions = actions; // Array.includes needed for IE11 @packages/systems/ix2/shared/utils/quick-effects
9458
9459var store = (0, _redux.createStore)(_IX2Reducer["default"]);
9460exports.store = store;
9461
9462function setEnv(env) {
9463  if (env()) {
9464    (0, _IX2VanillaEngine.observeRequests)(store);
9465  }
9466}
9467
9468function init(rawData) {
9469  destroy();
9470  (0, _IX2VanillaEngine.startEngine)({
9471    store: store,
9472    rawData: rawData,
9473    allowEvents: true
9474  });
9475}
9476
9477function destroy() {
9478  (0, _IX2VanillaEngine.stopEngine)(store);
9479}
9480
9481/***/ }),
9482/* 141 */
9483/***/ (function(module, exports, __webpack_require__) {
9484
9485var parent = __webpack_require__(142);
9486
9487module.exports = parent;
9488
9489
9490/***/ }),
9491/* 142 */
9492/***/ (function(module, exports, __webpack_require__) {
9493
9494var parent = __webpack_require__(143);
9495
9496module.exports = parent;
9497
9498
9499/***/ }),
9500/* 143 */
9501/***/ (function(module, exports, __webpack_require__) {
9502
9503__webpack_require__(144);
9504var entryUnbind = __webpack_require__(176);
9505
9506module.exports = entryUnbind('Array', 'includes');
9507
9508
9509/***/ }),
9510/* 144 */
9511/***/ (function(module, exports, __webpack_require__) {
9512
9513"use strict";
9514
9515var $ = __webpack_require__(145);
9516var $includes = __webpack_require__(85).includes;
9517var addToUnscopables = __webpack_require__(171);
9518
9519// `Array.prototype.includes` method
9520// https://tc39.es/ecma262/#sec-array.prototype.includes
9521$({ target: 'Array', proto: true }, {
9522  includes: function includes(el /* , fromIndex = 0 */) {
9523    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
9524  }
9525});
9526
9527// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
9528addToUnscopables('includes');
9529
9530
9531/***/ }),
9532/* 145 */
9533/***/ (function(module, exports, __webpack_require__) {
9534
9535var global = __webpack_require__(1);
9536var getOwnPropertyDescriptor = __webpack_require__(70).f;
9537var createNonEnumerableProperty = __webpack_require__(43);
9538var redefine = __webpack_require__(159);
9539var setGlobal = __webpack_require__(42);
9540var copyConstructorProperties = __webpack_require__(163);
9541var isForced = __webpack_require__(170);
9542
9543/*
9544  options.target      - name of the target object
9545  options.global      - target is the global object
9546  options.stat        - export as static methods of target
9547  options.proto       - export as prototype methods of target
9548  options.real        - real prototype method for the `pure` version
9549  options.forced      - export even if the native feature is available
9550  options.bind        - bind methods to the target, required for the `pure` version
9551  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
9552  options.unsafe      - use the simple assignment of property instead of delete + defineProperty
9553  options.sham        - add a flag to not completely full polyfills
9554  options.enumerable  - export as enumerable property
9555  options.noTargetGet - prevent calling a getter on target
9556  options.name        - the .name of the function if it does not match the key
9557*/
9558module.exports = function (options, source) {
9559  var TARGET = options.target;
9560  var GLOBAL = options.global;
9561  var STATIC = options.stat;
9562  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
9563  if (GLOBAL) {
9564    target = global;
9565  } else if (STATIC) {
9566    target = global[TARGET] || setGlobal(TARGET, {});
9567  } else {
9568    target = (global[TARGET] || {}).prototype;
9569  }
9570  if (target) for (key in source) {
9571    sourceProperty = source[key];
9572    if (options.noTargetGet) {
9573      descriptor = getOwnPropertyDescriptor(target, key);
9574      targetProperty = descriptor && descriptor.value;
9575    } else targetProperty = target[key];
9576    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
9577    // contained in target
9578    if (!FORCED && targetProperty !== undefined) {
9579      if (typeof sourceProperty == typeof targetProperty) continue;
9580      copyConstructorProperties(sourceProperty, targetProperty);
9581    }
9582    // add a flag to not completely full polyfills
9583    if (options.sham || (targetProperty && targetProperty.sham)) {
9584      createNonEnumerableProperty(sourceProperty, 'sham', true);
9585    }
9586    // extend global
9587    redefine(target, key, sourceProperty, options);
9588  }
9589};
9590
9591
9592/***/ }),
9593/* 146 */
9594/***/ (function(module, exports, __webpack_require__) {
9595
9596"use strict";
9597
9598var $propertyIsEnumerable = {}.propertyIsEnumerable;
9599// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
9600var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
9601
9602// Nashorn ~ JDK8 bug
9603var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
9604
9605// `Object.prototype.propertyIsEnumerable` method implementation
9606// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
9607exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
9608  var descriptor = getOwnPropertyDescriptor(this, V);
9609  return !!descriptor && descriptor.enumerable;
9610} : $propertyIsEnumerable;
9611
9612
9613/***/ }),
9614/* 147 */
9615/***/ (function(module, exports, __webpack_require__) {
9616
9617var global = __webpack_require__(1);
9618var uncurryThis = __webpack_require__(5);
9619var fails = __webpack_require__(19);
9620var classof = __webpack_require__(148);
9621
9622var Object = global.Object;
9623var split = uncurryThis(''.split);
9624
9625// fallback for non-array-like ES3 and non-enumerable old V8 strings
9626module.exports = fails(function () {
9627  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
9628  // eslint-disable-next-line no-prototype-builtins -- safe
9629  return !Object('z').propertyIsEnumerable(0);
9630}) ? function (it) {
9631  return classof(it) == 'String' ? split(it, '') : Object(it);
9632} : Object;
9633
9634
9635/***/ }),
9636/* 148 */
9637/***/ (function(module, exports, __webpack_require__) {
9638
9639var uncurryThis = __webpack_require__(5);
9640
9641var toString = uncurryThis({}.toString);
9642var stringSlice = uncurryThis(''.slice);
9643
9644module.exports = function (it) {
9645  return stringSlice(toString(it), 8, -1);
9646};
9647
9648
9649/***/ }),
9650/* 149 */
9651/***/ (function(module, exports, __webpack_require__) {
9652
9653var global = __webpack_require__(1);
9654var call = __webpack_require__(40);
9655var isObject = __webpack_require__(20);
9656var isSymbol = __webpack_require__(74);
9657var getMethod = __webpack_require__(153);
9658var ordinaryToPrimitive = __webpack_require__(156);
9659var wellKnownSymbol = __webpack_require__(77);
9660
9661var TypeError = global.TypeError;
9662var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
9663
9664// `ToPrimitive` abstract operation
9665// https://tc39.es/ecma262/#sec-toprimitive
9666module.exports = function (input, pref) {
9667  if (!isObject(input) || isSymbol(input)) return input;
9668  var exoticToPrim = getMethod(input, TO_PRIMITIVE);
9669  var result;
9670  if (exoticToPrim) {
9671    if (pref === undefined) pref = 'default';
9672    result = call(exoticToPrim, input, pref);
9673    if (!isObject(result) || isSymbol(result)) return result;
9674    throw TypeError("Can't convert object to primitive value");
9675  }
9676  if (pref === undefined) pref = 'number';
9677  return ordinaryToPrimitive(input, pref);
9678};
9679
9680
9681/***/ }),
9682/* 150 */
9683/***/ (function(module, exports, __webpack_require__) {
9684
9685var uncurryThis = __webpack_require__(5);
9686
9687module.exports = uncurryThis({}.isPrototypeOf);
9688
9689
vendor: 9,260 bytes, lines 9690-10017
9690/***/ }),
9691/* 151 */
9692/***/ (function(module, exports, __webpack_require__) {
9693
9694var global = __webpack_require__(1);
9695var userAgent = __webpack_require__(152);
9696
9697var process = global.process;
9698var Deno = global.Deno;
9699var versions = process && process.versions || Deno && Deno.version;
9700var v8 = versions && versions.v8;
9701var match, version;
9702
9703if (v8) {
9704  match = v8.split('.');
9705  // in old Chrome, versions of V8 isn't V8 = Chrome / 10
9706  // but their correct versions are not interesting for us
9707  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
9708}
9709
9710// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
9711// so check `userAgent` even if `.v8` exists, but 0
9712if (!version && userAgent) {
9713  match = userAgent.match(/Edge\/(\d+)/);
9714  if (!match || match[1] >= 74) {
9715    match = userAgent.match(/Chrome\/(\d+)/);
9716    if (match) version = +match[1];
9717  }
9718}
9719
9720module.exports = version;
9721
9722
9723/***/ }),
9724/* 152 */
9725/***/ (function(module, exports, __webpack_require__) {
9726
9727var getBuiltIn = __webpack_require__(27);
9728
9729module.exports = getBuiltIn('navigator', 'userAgent') || '';
9730
9731
9732/***/ }),
9733/* 153 */
9734/***/ (function(module, exports, __webpack_require__) {
9735
9736var aCallable = __webpack_require__(154);
9737
9738// `GetMethod` abstract operation
9739// https://tc39.es/ecma262/#sec-getmethod
9740module.exports = function (V, P) {
9741  var func = V[P];
9742  return func == null ? undefined : aCallable(func);
9743};
9744
9745
9746/***/ }),
9747/* 154 */
9748/***/ (function(module, exports, __webpack_require__) {
9749
9750var global = __webpack_require__(1);
9751var isCallable = __webpack_require__(7);
9752var tryToString = __webpack_require__(155);
9753
9754var TypeError = global.TypeError;
9755
9756// `Assert: IsCallable(argument) is true`
9757module.exports = function (argument) {
9758  if (isCallable(argument)) return argument;
9759  throw TypeError(tryToString(argument) + ' is not a function');
9760};
9761
9762
9763/***/ }),
9764/* 155 */
9765/***/ (function(module, exports, __webpack_require__) {
9766
9767var global = __webpack_require__(1);
9768
9769var String = global.String;
9770
9771module.exports = function (argument) {
9772  try {
9773    return String(argument);
9774  } catch (error) {
9775    return 'Object';
9776  }
9777};
9778
9779
9780/***/ }),
9781/* 156 */
9782/***/ (function(module, exports, __webpack_require__) {
9783
9784var global = __webpack_require__(1);
9785var call = __webpack_require__(40);
9786var isCallable = __webpack_require__(7);
9787var isObject = __webpack_require__(20);
9788
9789var TypeError = global.TypeError;
9790
9791// `OrdinaryToPrimitive` abstract operation
9792// https://tc39.es/ecma262/#sec-ordinarytoprimitive
9793module.exports = function (input, pref) {
9794  var fn, val;
9795  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
9796  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;
9797  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
9798  throw TypeError("Can't convert object to primitive value");
9799};
9800
9801
9802/***/ }),
9803/* 157 */
9804/***/ (function(module, exports) {
9805
9806module.exports = false;
9807
9808
9809/***/ }),
9810/* 158 */
9811/***/ (function(module, exports, __webpack_require__) {
9812
9813var global = __webpack_require__(1);
9814var requireObjectCoercible = __webpack_require__(72);
9815
9816var Object = global.Object;
9817
9818// `ToObject` abstract operation
9819// https://tc39.es/ecma262/#sec-toobject
9820module.exports = function (argument) {
9821  return Object(requireObjectCoercible(argument));
9822};
9823
9824
9825/***/ }),
9826/* 159 */
9827/***/ (function(module, exports, __webpack_require__) {
9828
9829var global = __webpack_require__(1);
9830var isCallable = __webpack_require__(7);
9831var hasOwn = __webpack_require__(9);
9832var createNonEnumerableProperty = __webpack_require__(43);
9833var setGlobal = __webpack_require__(42);
9834var inspectSource = __webpack_require__(82);
9835var InternalStateModule = __webpack_require__(160);
9836var CONFIGURABLE_FUNCTION_NAME = __webpack_require__(162).CONFIGURABLE;
9837
9838var getInternalState = InternalStateModule.get;
9839var enforceInternalState = InternalStateModule.enforce;
9840var TEMPLATE = String(String).split('String');
9841
9842(module.exports = function (O, key, value, options) {
9843  var unsafe = options ? !!options.unsafe : false;
9844  var simple = options ? !!options.enumerable : false;
9845  var noTargetGet = options ? !!options.noTargetGet : false;
9846  var name = options && options.name !== undefined ? options.name : key;
9847  var state;
9848  if (isCallable(value)) {
9849    if (String(name).slice(0, 7) === 'Symbol(') {
9850      name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
9851    }
9852    if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
9853      createNonEnumerableProperty(value, 'name', name);
9854    }
9855    state = enforceInternalState(value);
9856    if (!state.source) {
9857      state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
9858    }
9859  }
9860  if (O === global) {
9861    if (simple) O[key] = value;
9862    else setGlobal(key, value);
9863    return;
9864  } else if (!unsafe) {
9865    delete O[key];
9866  } else if (!noTargetGet && O[key]) {
9867    simple = true;
9868  }
9869  if (simple) O[key] = value;
9870  else createNonEnumerableProperty(O, key, value);
9871// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
9872})(Function.prototype, 'toString', function toString() {
9873  return isCallable(this) && getInternalState(this).source || inspectSource(this);
9874});
9875
9876
9877/***/ }),
9878/* 160 */
9879/***/ (function(module, exports, __webpack_require__) {
9880
9881var NATIVE_WEAK_MAP = __webpack_require__(161);
9882var global = __webpack_require__(1);
9883var uncurryThis = __webpack_require__(5);
9884var isObject = __webpack_require__(20);
9885var createNonEnumerableProperty = __webpack_require__(43);
9886var hasOwn = __webpack_require__(9);
9887var shared = __webpack_require__(41);
9888var sharedKey = __webpack_require__(83);
9889var hiddenKeys = __webpack_require__(44);
9890
9891var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
9892var TypeError = global.TypeError;
9893var WeakMap = global.WeakMap;
9894var set, get, has;
9895
9896var enforce = function (it) {
9897  return has(it) ? get(it) : set(it, {});
9898};
9899
9900var getterFor = function (TYPE) {
9901  return function (it) {
9902    var state;
9903    if (!isObject(it) || (state = get(it)).type !== TYPE) {
9904      throw TypeError('Incompatible receiver, ' + TYPE + ' required');
9905    } return state;
9906  };
9907};
9908
9909if (NATIVE_WEAK_MAP || shared.state) {
9910  var store = shared.state || (shared.state = new WeakMap());
9911  var wmget = uncurryThis(store.get);
9912  var wmhas = uncurryThis(store.has);
9913  var wmset = uncurryThis(store.set);
9914  set = function (it, metadata) {
9915    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
9916    metadata.facade = it;
9917    wmset(store, it, metadata);
9918    return metadata;
9919  };
9920  get = function (it) {
9921    return wmget(store, it) || {};
9922  };
9923  has = function (it) {
9924    return wmhas(store, it);
9925  };
9926} else {
9927  var STATE = sharedKey('state');
9928  hiddenKeys[STATE] = true;
9929  set = function (it, metadata) {
9930    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
9931    metadata.facade = it;
9932    createNonEnumerableProperty(it, STATE, metadata);
9933    return metadata;
9934  };
9935  get = function (it) {
9936    return hasOwn(it, STATE) ? it[STATE] : {};
9937  };
9938  has = function (it) {
9939    return hasOwn(it, STATE);
9940  };
9941}
9942
9943module.exports = {
9944  set: set,
9945  get: get,
9946  has: has,
9947  enforce: enforce,
9948  getterFor: getterFor
9949};
9950
9951
9952/***/ }),
9953/* 161 */
9954/***/ (function(module, exports, __webpack_require__) {
9955
9956var global = __webpack_require__(1);
9957var isCallable = __webpack_require__(7);
9958var inspectSource = __webpack_require__(82);
9959
9960var WeakMap = global.WeakMap;
9961
9962module.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));
9963
9964
9965/***/ }),
9966/* 162 */
9967/***/ (function(module, exports, __webpack_require__) {
9968
9969var DESCRIPTORS = __webpack_require__(14);
9970var hasOwn = __webpack_require__(9);
9971
9972var FunctionPrototype = Function.prototype;
9973// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
9974var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
9975
9976var EXISTS = hasOwn(FunctionPrototype, 'name');
9977// additional protection from minified / mangled / dropped function names
9978var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
9979var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
9980
9981module.exports = {
9982  EXISTS: EXISTS,
9983  PROPER: PROPER,
9984  CONFIGURABLE: CONFIGURABLE
9985};
9986
9987
9988/***/ }),
9989/* 163 */
9990/***/ (function(module, exports, __webpack_require__) {
9991
9992var hasOwn = __webpack_require__(9);
9993var ownKeys = __webpack_require__(164);
9994var getOwnPropertyDescriptorModule = __webpack_require__(70);
9995var definePropertyModule = __webpack_require__(28);
9996
9997module.exports = function (target, source) {
9998  var keys = ownKeys(source);
9999  var defineProperty = definePropertyModule.f;
10000  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
10001  for (var i = 0; i < keys.length; i++) {
10002    var key = keys[i];
10003    if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
10004  }
10005};
10006
10007
10008/***/ }),
10009/* 164 */
10010/***/ (function(module, exports, __webpack_require__) {
10011
10012var getBuiltIn = __webpack_require__(27);
10013var uncurryThis = __webpack_require__(5);
10014var getOwnPropertyNamesModule = __webpack_require__(165);
10015var getOwnPropertySymbolsModule = __webpack_require__(169);
10016var anObject = __webpack_require__(29);
10017
vendor: 1,501 bytes, lines 10018-10066
10018var concat = uncurryThis([].concat);
10019
10020// all object keys, includes non-enumerable and symbols
10021module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
10022  var keys = getOwnPropertyNamesModule.f(anObject(it));
10023  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
10024  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
10025};
10026
10027
10028/***/ }),
10029/* 165 */
10030/***/ (function(module, exports, __webpack_require__) {
10031
10032var internalObjectKeys = __webpack_require__(84);
10033var enumBugKeys = __webpack_require__(45);
10034
10035var hiddenKeys = enumBugKeys.concat('length', 'prototype');
10036
10037// `Object.getOwnPropertyNames` method
10038// https://tc39.es/ecma262/#sec-object.getownpropertynames
10039// eslint-disable-next-line es/no-object-getownpropertynames -- safe
10040exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
10041  return internalObjectKeys(O, hiddenKeys);
10042};
10043
10044
10045/***/ }),
10046/* 166 */
10047/***/ (function(module, exports, __webpack_require__) {
10048
10049var toIntegerOrInfinity = __webpack_require__(86);
10050
10051var max = Math.max;
10052var min = Math.min;
10053
10054// Helper for a popular repeating case of the spec:
10055// Let integer be ? ToInteger(index).
10056// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
10057module.exports = function (index, length) {
10058  var integer = toIntegerOrInfinity(index);
10059  return integer < 0 ? max(integer + length, 0) : min(integer, length);
10060};
10061
10062
10063/***/ }),
10064/* 167 */
10065/***/ (function(module, exports, __webpack_require__) {
10066
vendor: 7,288 bytes, lines 10067-10316
10067var toLength = __webpack_require__(168);
10068
10069// `LengthOfArrayLike` abstract operation
10070// https://tc39.es/ecma262/#sec-lengthofarraylike
10071module.exports = function (obj) {
10072  return toLength(obj.length);
10073};
10074
10075
10076/***/ }),
10077/* 168 */
10078/***/ (function(module, exports, __webpack_require__) {
10079
10080var toIntegerOrInfinity = __webpack_require__(86);
10081
10082var min = Math.min;
10083
10084// `ToLength` abstract operation
10085// https://tc39.es/ecma262/#sec-tolength
10086module.exports = function (argument) {
10087  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
10088};
10089
10090
10091/***/ }),
10092/* 169 */
10093/***/ (function(module, exports) {
10094
10095// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
10096exports.f = Object.getOwnPropertySymbols;
10097
10098
10099/***/ }),
10100/* 170 */
10101/***/ (function(module, exports, __webpack_require__) {
10102
10103var fails = __webpack_require__(19);
10104var isCallable = __webpack_require__(7);
10105
10106var replacement = /#|\.prototype\./;
10107
10108var isForced = function (feature, detection) {
10109  var value = data[normalize(feature)];
10110  return value == POLYFILL ? true
10111    : value == NATIVE ? false
10112    : isCallable(detection) ? fails(detection)
10113    : !!detection;
10114};
10115
10116var normalize = isForced.normalize = function (string) {
10117  return String(string).replace(replacement, '.').toLowerCase();
10118};
10119
10120var data = isForced.data = {};
10121var NATIVE = isForced.NATIVE = 'N';
10122var POLYFILL = isForced.POLYFILL = 'P';
10123
10124module.exports = isForced;
10125
10126
10127/***/ }),
10128/* 171 */
10129/***/ (function(module, exports, __webpack_require__) {
10130
10131var wellKnownSymbol = __webpack_require__(77);
10132var create = __webpack_require__(172);
10133var definePropertyModule = __webpack_require__(28);
10134
10135var UNSCOPABLES = wellKnownSymbol('unscopables');
10136var ArrayPrototype = Array.prototype;
10137
10138// Array.prototype[@@unscopables]
10139// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
10140if (ArrayPrototype[UNSCOPABLES] == undefined) {
10141  definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {
10142    configurable: true,
10143    value: create(null)
10144  });
10145}
10146
10147// add a key to Array.prototype[@@unscopables]
10148module.exports = function (key) {
10149  ArrayPrototype[UNSCOPABLES][key] = true;
10150};
10151
10152
10153/***/ }),
10154/* 172 */
10155/***/ (function(module, exports, __webpack_require__) {
10156
10157/* global ActiveXObject -- old IE, WSH */
10158var anObject = __webpack_require__(29);
10159var defineProperties = __webpack_require__(173);
10160var enumBugKeys = __webpack_require__(45);
10161var hiddenKeys = __webpack_require__(44);
10162var html = __webpack_require__(175);
10163var documentCreateElement = __webpack_require__(81);
10164var sharedKey = __webpack_require__(83);
10165
10166var GT = '>';
10167var LT = '<';
10168var PROTOTYPE = 'prototype';
10169var SCRIPT = 'script';
10170var IE_PROTO = sharedKey('IE_PROTO');
10171
10172var EmptyConstructor = function () { /* empty */ };
10173
10174var scriptTag = function (content) {
10175  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
10176};
10177
10178// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
10179var NullProtoObjectViaActiveX = function (activeXDocument) {
10180  activeXDocument.write(scriptTag(''));
10181  activeXDocument.close();
10182  var temp = activeXDocument.parentWindow.Object;
10183  activeXDocument = null; // avoid memory leak
10184  return temp;
10185};
10186
10187// Create object with fake `null` prototype: use iframe Object with cleared prototype
10188var NullProtoObjectViaIFrame = function () {
10189  // Thrash, waste and sodomy: IE GC bug
10190  var iframe = documentCreateElement('iframe');
10191  var JS = 'java' + SCRIPT + ':';
10192  var iframeDocument;
10193  iframe.style.display = 'none';
10194  html.appendChild(iframe);
10195  // https://github.com/zloirock/core-js/issues/475
10196  iframe.src = String(JS);
10197  iframeDocument = iframe.contentWindow.document;
10198  iframeDocument.open();
10199  iframeDocument.write(scriptTag('document.F=Object'));
10200  iframeDocument.close();
10201  return iframeDocument.F;
10202};
10203
10204// Check for document.domain and active x support
10205// No need to use active x approach when document.domain is not set
10206// see https://github.com/es-shims/es5-shim/issues/150
10207// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
10208// avoid IE GC bug
10209var activeXDocument;
10210var NullProtoObject = function () {
10211  try {
10212    activeXDocument = new ActiveXObject('htmlfile');
10213  } catch (error) { /* ignore */ }
10214  NullProtoObject = typeof document != 'undefined'
10215    ? document.domain && activeXDocument
10216      ? NullProtoObjectViaActiveX(activeXDocument) // old IE
10217      : NullProtoObjectViaIFrame()
10218    : NullProtoObjectViaActiveX(activeXDocument); // WSH
10219  var length = enumBugKeys.length;
10220  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
10221  return NullProtoObject();
10222};
10223
10224hiddenKeys[IE_PROTO] = true;
10225
10226// `Object.create` method
10227// https://tc39.es/ecma262/#sec-object.create
10228module.exports = Object.create || function create(O, Properties) {
10229  var result;
10230  if (O !== null) {
10231    EmptyConstructor[PROTOTYPE] = anObject(O);
10232    result = new EmptyConstructor();
10233    EmptyConstructor[PROTOTYPE] = null;
10234    // add "__proto__" for Object.getPrototypeOf polyfill
10235    result[IE_PROTO] = O;
10236  } else result = NullProtoObject();
10237  return Properties === undefined ? result : defineProperties(result, Properties);
10238};
10239
10240
10241/***/ }),
10242/* 173 */
10243/***/ (function(module, exports, __webpack_require__) {
10244
10245var DESCRIPTORS = __webpack_require__(14);
10246var definePropertyModule = __webpack_require__(28);
10247var anObject = __webpack_require__(29);
10248var toIndexedObject = __webpack_require__(26);
10249var objectKeys = __webpack_require__(174);
10250
10251// `Object.defineProperties` method
10252// https://tc39.es/ecma262/#sec-object.defineproperties
10253// eslint-disable-next-line es/no-object-defineproperties -- safe
10254module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
10255  anObject(O);
10256  var props = toIndexedObject(Properties);
10257  var keys = objectKeys(Properties);
10258  var length = keys.length;
10259  var index = 0;
10260  var key;
10261  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
10262  return O;
10263};
10264
10265
10266/***/ }),
10267/* 174 */
10268/***/ (function(module, exports, __webpack_require__) {
10269
10270var internalObjectKeys = __webpack_require__(84);
10271var enumBugKeys = __webpack_require__(45);
10272
10273// `Object.keys` method
10274// https://tc39.es/ecma262/#sec-object.keys
10275// eslint-disable-next-line es/no-object-keys -- safe
10276module.exports = Object.keys || function keys(O) {
10277  return internalObjectKeys(O, enumBugKeys);
10278};
10279
10280
10281/***/ }),
10282/* 175 */
10283/***/ (function(module, exports, __webpack_require__) {
10284
10285var getBuiltIn = __webpack_require__(27);
10286
10287module.exports = getBuiltIn('document', 'documentElement');
10288
10289
10290/***/ }),
10291/* 176 */
10292/***/ (function(module, exports, __webpack_require__) {
10293
10294var global = __webpack_require__(1);
10295var uncurryThis = __webpack_require__(5);
10296
10297module.exports = function (CONSTRUCTOR, METHOD) {
10298  return uncurryThis(global[CONSTRUCTOR].prototype[METHOD]);
10299};
10300
10301
10302/***/ }),
10303/* 177 */
10304/***/ (function(module, __webpack_exports__, __webpack_require__) {
10305
10306"use strict";
10307__webpack_require__.r(__webpack_exports__);
10308/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89);
10309/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(180);
10310/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(181);
10311
10312
10313
10314
10315/** `Object#toString` result references. */
10316var nullTag = '[object Null]',
10317    undefinedTag = '[object Undefined]';
10318
10319/** Built-in value references. */
10320var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
10321
10322/**
10323 * The base implementation of `getTag` without fallbacks for buggy environments.
10324 *
10325 * @private
10326 * @param {*} value The value to query.
10327 * @returns {string} Returns the `toStringTag`.
10328 */
10329function baseGetTag(value) {
10330  if (value == null) {
10331    return value === undefined ? undefinedTag : nullTag;
10332  }
10333  return (symToStringTag && symToStringTag in Object(value))
10334    ? Object(_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value)
10335    : Object(_objectToString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value);
10336}
10337
10338/* harmony default export */ __webpack_exports__["default"] = (baseGetTag);
10339
10340
10341/***/ }),
10342/* 178 */
10343/***/ (function(module, __webpack_exports__, __webpack_require__) {
10344
10345"use strict";
10346__webpack_require__.r(__webpack_exports__);
10347/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(179);
10348
10349
10350/** Detect free variable `self`. */
10351var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
10352
10353/** Used as a reference to the global object. */
10354var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__["default"] || freeSelf || Function('return this')();
10355
10356/* harmony default export */ __webpack_exports__["default"] = (root);
10357
10358
10359/***/ }),
10360/* 179 */
10361/***/ (function(module, __webpack_exports__, __webpack_require__) {
10362
10363"use strict";
10364__webpack_require__.r(__webpack_exports__);
10365/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
10366var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
10367
10368/* harmony default export */ __webpack_exports__["default"] = (freeGlobal);
10369
10370/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
10371
10372/***/ }),
10373/* 180 */
10374/***/ (function(module, __webpack_exports__, __webpack_require__) {
10375
10376"use strict";
10377__webpack_require__.r(__webpack_exports__);
10378/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89);
10379
10380
10381/** Used for built-in method references. */
10382var objectProto = Object.prototype;
10383
10384/** Used to check objects for own properties. */
10385var hasOwnProperty = objectProto.hasOwnProperty;
10386
10387/**
10388 * Used to resolve the
10389 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10390 * of values.
10391 */
10392var nativeObjectToString = objectProto.toString;
10393
10394/** Built-in value references. */
10395var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
10396
10397/**
10398 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
10399 *
10400 * @private
10401 * @param {*} value The value to query.
10402 * @returns {string} Returns the raw `toStringTag`.
10403 */
10404function getRawTag(value) {
10405  var isOwn = hasOwnProperty.call(value, symToStringTag),
10406      tag = value[symToStringTag];
10407
10408  try {
10409    value[symToStringTag] = undefined;
10410    var unmasked = true;
10411  } catch (e) {}
10412
10413  var result = nativeObjectToString.call(value);
10414  if (unmasked) {
10415    if (isOwn) {
10416      value[symToStringTag] = tag;
10417    } else {
10418      delete value[symToStringTag];
10419    }
10420  }
10421  return result;
10422}
10423
10424/* harmony default export */ __webpack_exports__["default"] = (getRawTag);
10425
10426
10427/***/ }),
10428/* 181 */
10429/***/ (function(module, __webpack_exports__, __webpack_require__) {
10430
10431"use strict";
10432__webpack_require__.r(__webpack_exports__);
10433/** Used for built-in method references. */
10434var objectProto = Object.prototype;
10435
10436/**
10437 * Used to resolve the
10438 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10439 * of values.
10440 */
10441var nativeObjectToString = objectProto.toString;
10442
10443/**
10444 * Converts `value` to a string using `Object.prototype.toString`.
10445 *
10446 * @private
10447 * @param {*} value The value to convert.
10448 * @returns {string} Returns the converted string.
10449 */
10450function objectToString(value) {
10451  return nativeObjectToString.call(value);
10452}
10453
10454/* harmony default export */ __webpack_exports__["default"] = (objectToString);
10455
10456
10457/***/ }),
10458/* 182 */
10459/***/ (function(module, __webpack_exports__, __webpack_require__) {
10460
10461"use strict";
10462__webpack_require__.r(__webpack_exports__);
10463/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(183);
10464
10465
10466/** Built-in value references. */
10467var getPrototype = Object(_overArg_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object.getPrototypeOf, Object);
10468
10469/* harmony default export */ __webpack_exports__["default"] = (getPrototype);
10470
10471
10472/***/ }),
10473/* 183 */
10474/***/ (function(module, __webpack_exports__, __webpack_require__) {
10475
10476"use strict";
10477__webpack_require__.r(__webpack_exports__);
10478/**
10479 * Creates a unary function that invokes `func` with its argument transformed.
10480 *
10481 * @private
10482 * @param {Function} func The function to wrap.
10483 * @param {Function} transform The argument transform.
10484 * @returns {Function} Returns the new function.
10485 */
10486function overArg(func, transform) {
10487  return function(arg) {
10488    return func(transform(arg));
10489  };
10490}
10491
10492/* harmony default export */ __webpack_exports__["default"] = (overArg);
10493
10494
10495/***/ }),
10496/* 184 */
10497/***/ (function(module, __webpack_exports__, __webpack_require__) {
10498
10499"use strict";
10500__webpack_require__.r(__webpack_exports__);
10501/**
10502 * Checks if `value` is object-like. A value is object-like if it's not `null`
10503 * and has a `typeof` result of "object".
10504 *
10505 * @static
10506 * @memberOf _
10507 * @since 4.0.0
10508 * @category Lang
10509 * @param {*} value The value to check.
10510 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
10511 * @example
10512 *
10513 * _.isObjectLike({});
10514 * // => true
10515 *
10516 * _.isObjectLike([1, 2, 3]);
10517 * // => true
10518 *
10519 * _.isObjectLike(_.noop);
10520 * // => false
10521 *
10522 * _.isObjectLike(null);
10523 * // => false
10524 */
10525function isObjectLike(value) {
10526  return value != null && typeof value == 'object';
10527}
10528
10529/* harmony default export */ __webpack_exports__["default"] = (isObjectLike);
10530
10531
10532/***/ }),
10533/* 185 */
10534/***/ (function(module, __webpack_exports__, __webpack_require__) {
10535
10536"use strict";
10537__webpack_require__.r(__webpack_exports__);
10538/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(187);
10539/* global window */
10540
10541
10542var root;
10543
10544if (typeof self !== 'undefined') {
10545  root = self;
10546} else if (typeof window !== 'undefined') {
10547  root = window;
10548} else if (typeof global !== 'undefined') {
10549  root = global;
10550} else if (true) {
10551  root = module;
10552} else {}
10553
10554var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__["default"])(root);
10555/* harmony default export */ __webpack_exports__["default"] = (result);
10556
10557/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25), __webpack_require__(186)(module)))
10558
10559/***/ }),
10560/* 186 */
10561/***/ (function(module, exports) {
10562
10563module.exports = function(originalModule) {
10564	if (!originalModule.webpackPolyfill) {
10565		var module = Object.create(originalModule);
10566		// module.parent = undefined by default
10567		if (!module.children) module.children = [];
10568		Object.defineProperty(module, "loaded", {
10569			enumerable: true,
10570			get: function() {
10571				return module.l;
10572			}
10573		});
10574		Object.defineProperty(module, "id", {
10575			enumerable: true,
10576			get: function() {
10577				return module.i;
10578			}
10579		});
10580		Object.defineProperty(module, "exports", {
10581			enumerable: true
10582		});
10583		module.webpackPolyfill = 1;
10584	}
10585	return module;
10586};
10587
10588
10589/***/ }),
10590/* 187 */
10591/***/ (function(module, __webpack_exports__, __webpack_require__) {
10592
10593"use strict";
10594__webpack_require__.r(__webpack_exports__);
10595/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return symbolObservablePonyfill; });
10596function symbolObservablePonyfill(root) {
10597	var result;
10598	var Symbol = root.Symbol;
10599
10600	if (typeof Symbol === 'function') {
10601		if (Symbol.observable) {
10602			result = Symbol.observable;
10603		} else {
10604			result = Symbol('observable');
10605			Symbol.observable = result;
10606		}
10607	} else {
10608		result = '@@observable';
10609	}
10610
10611	return result;
10612};
10613
10614
10615/***/ }),
10616/* 188 */
10617/***/ (function(module, exports, __webpack_require__) {
10618
10619"use strict";
10620
10621
10622Object.defineProperty(exports, "__esModule", {
10623  value: true
10624});
10625exports["default"] = void 0;
10626
10627var _redux = __webpack_require__(87);
10628
10629var _IX2DataReducer = __webpack_require__(189);
10630
10631var _IX2RequestReducer = __webpack_require__(195);
10632
10633var _IX2SessionReducer = __webpack_require__(196);
10634
10635var _shared = __webpack_require__(15);
10636
10637var _IX2InstancesReducer = __webpack_require__(282);
10638
10639var _IX2ParametersReducer = __webpack_require__(283);
10640
10641var ixElements = _shared.IX2ElementsReducer.ixElements;
10642
10643var _default = (0, _redux.combineReducers)({
10644  ixData: _IX2DataReducer.ixData,
10645  ixRequest: _IX2RequestReducer.ixRequest,
10646  ixSession: _IX2SessionReducer.ixSession,
10647  ixElements: ixElements,
10648  ixInstances: _IX2InstancesReducer.ixInstances,
10649  ixParameters: _IX2ParametersReducer.ixParameters
10650});
10651
10652exports["default"] = _default;
10653
10654/***/ }),
10655/* 189 */
10656/***/ (function(module, exports, __webpack_require__) {
10657
10658"use strict";
10659
10660
10661Object.defineProperty(exports, "__esModule", {
10662  value: true
10663});
10664exports.ixData = void 0;
10665
10666var _constants = __webpack_require__(4);
10667
10668var IX2_RAW_DATA_IMPORTED = _constants.IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED;
10669
10670var ixData = function ixData() {
10671  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
10672  var action = arguments.length > 1 ? arguments[1] : undefined;
10673
10674  switch (action.type) {
10675    case IX2_RAW_DATA_IMPORTED:
10676      {
10677        return action.payload.ixData || Object.freeze({});
10678      }
10679
10680    default:
10681      {
10682        return state;
10683      }
10684  }
10685};
10686
10687exports.ixData = ixData;
10688
10689/***/ }),
10690/* 190 */
10691/***/ (function(module, exports, __webpack_require__) {
10692
10693"use strict";
10694
10695
10696Object.defineProperty(exports, "__esModule", {
10697  value: true
10698});
10699exports.QuickEffectDirectionConsts = exports.QuickEffectIds = exports.EventLimitAffectedElements = exports.EventContinuousMouseAxes = exports.EventBasedOn = exports.EventAppliesTo = exports.EventTypeConsts = void 0;
10700/**
10701 * Event Type IDs
10702 */
10703
10704var EventTypeConsts = {
10705  NAVBAR_OPEN: 'NAVBAR_OPEN',
10706  NAVBAR_CLOSE: 'NAVBAR_CLOSE',
10707  TAB_ACTIVE: 'TAB_ACTIVE',
10708  TAB_INACTIVE: 'TAB_INACTIVE',
10709  SLIDER_ACTIVE: 'SLIDER_ACTIVE',
10710  SLIDER_INACTIVE: 'SLIDER_INACTIVE',
10711  DROPDOWN_OPEN: 'DROPDOWN_OPEN',
10712  DROPDOWN_CLOSE: 'DROPDOWN_CLOSE',
10713  MOUSE_CLICK: 'MOUSE_CLICK',
10714  MOUSE_SECOND_CLICK: 'MOUSE_SECOND_CLICK',
10715  MOUSE_DOWN: 'MOUSE_DOWN',
10716  MOUSE_UP: 'MOUSE_UP',
10717  MOUSE_OVER: 'MOUSE_OVER',
10718  MOUSE_OUT: 'MOUSE_OUT',
10719  MOUSE_MOVE: 'MOUSE_MOVE',
10720  MOUSE_MOVE_IN_VIEWPORT: 'MOUSE_MOVE_IN_VIEWPORT',
10721  SCROLL_INTO_VIEW: 'SCROLL_INTO_VIEW',
10722  SCROLL_OUT_OF_VIEW: 'SCROLL_OUT_OF_VIEW',
10723  SCROLLING_IN_VIEW: 'SCROLLING_IN_VIEW',
10724  ECOMMERCE_CART_OPEN: 'ECOMMERCE_CART_OPEN',
10725  ECOMMERCE_CART_CLOSE: 'ECOMMERCE_CART_CLOSE',
10726  PAGE_START: 'PAGE_START',
10727  PAGE_FINISH: 'PAGE_FINISH',
10728  PAGE_SCROLL_UP: 'PAGE_SCROLL_UP',
10729  PAGE_SCROLL_DOWN: 'PAGE_SCROLL_DOWN',
10730  PAGE_SCROLL: 'PAGE_SCROLL'
10731};
10732/**
10733 * Event Config Enums
10734 */
10735
10736exports.EventTypeConsts = EventTypeConsts;
10737var EventAppliesTo = {
10738  ELEMENT: 'ELEMENT',
10739  CLASS: 'CLASS',
10740  PAGE: 'PAGE'
10741};
10742exports.EventAppliesTo = EventAppliesTo;
10743var EventBasedOn = {
10744  ELEMENT: 'ELEMENT',
10745  VIEWPORT: 'VIEWPORT'
10746};
10747exports.EventBasedOn = EventBasedOn;
10748var EventContinuousMouseAxes = {
10749  X_AXIS: 'X_AXIS',
10750  Y_AXIS: 'Y_AXIS'
10751};
10752exports.EventContinuousMouseAxes = EventContinuousMouseAxes;
10753var EventLimitAffectedElements = {
10754  CHILDREN: 'CHILDREN',
10755  SIBLINGS: 'SIBLINGS',
10756  IMMEDIATE_CHILDREN: 'IMMEDIATE_CHILDREN'
10757};
10758/**
10759 * Quick Effect Enums
10760 */
10761
10762exports.EventLimitAffectedElements = EventLimitAffectedElements;
10763var QuickEffectIds = {
10764  FADE_EFFECT: 'FADE_EFFECT',
10765  SLIDE_EFFECT: 'SLIDE_EFFECT',
10766  GROW_EFFECT: 'GROW_EFFECT',
10767  SHRINK_EFFECT: 'SHRINK_EFFECT',
10768  SPIN_EFFECT: 'SPIN_EFFECT',
10769  FLY_EFFECT: 'FLY_EFFECT',
10770  POP_EFFECT: 'POP_EFFECT',
10771  FLIP_EFFECT: 'FLIP_EFFECT',
10772  JIGGLE_EFFECT: 'JIGGLE_EFFECT',
10773  PULSE_EFFECT: 'PULSE_EFFECT',
10774  DROP_EFFECT: 'DROP_EFFECT',
10775  BLINK_EFFECT: 'BLINK_EFFECT',
10776  BOUNCE_EFFECT: 'BOUNCE_EFFECT',
10777  FLIP_LEFT_TO_RIGHT_EFFECT: 'FLIP_LEFT_TO_RIGHT_EFFECT',
10778  FLIP_RIGHT_TO_LEFT_EFFECT: 'FLIP_RIGHT_TO_LEFT_EFFECT',
10779  RUBBER_BAND_EFFECT: 'RUBBER_BAND_EFFECT',
10780  JELLO_EFFECT: 'JELLO_EFFECT',
10781  GROW_BIG_EFFECT: 'GROW_BIG_EFFECT',
10782  SHRINK_BIG_EFFECT: 'SHRINK_BIG_EFFECT',
10783  PLUGIN_LOTTIE_EFFECT: 'PLUGIN_LOTTIE_EFFECT'
10784};
10785/**
10786 * Quick Effect Direction Enums
10787 */
10788
10789exports.QuickEffectIds = QuickEffectIds;
10790var QuickEffectDirectionConsts = {
10791  LEFT: 'LEFT',
10792  RIGHT: 'RIGHT',
10793  BOTTOM: 'BOTTOM',
10794  TOP: 'TOP',
10795  BOTTOM_LEFT: 'BOTTOM_LEFT',
10796  BOTTOM_RIGHT: 'BOTTOM_RIGHT',
10797  TOP_RIGHT: 'TOP_RIGHT',
10798  TOP_LEFT: 'TOP_LEFT',
10799  CLOCKWISE: 'CLOCKWISE',
10800  COUNTER_CLOCKWISE: 'COUNTER_CLOCKWISE'
10801};
10802exports.QuickEffectDirectionConsts = QuickEffectDirectionConsts;
10803
10804/***/ }),
10805/* 191 */
10806/***/ (function(module, exports, __webpack_require__) {
10807
10808"use strict";
10809
10810
10811Object.defineProperty(exports, "__esModule", {
10812  value: true
10813});
10814exports.InteractionTypeConsts = void 0;
10815var InteractionTypeConsts = {
10816  MOUSE_CLICK_INTERACTION: 'MOUSE_CLICK_INTERACTION',
10817  MOUSE_HOVER_INTERACTION: 'MOUSE_HOVER_INTERACTION',
10818  MOUSE_MOVE_INTERACTION: 'MOUSE_MOVE_INTERACTION',
10819  SCROLL_INTO_VIEW_INTERACTION: 'SCROLL_INTO_VIEW_INTERACTION',
10820  SCROLLING_IN_VIEW_INTERACTION: 'SCROLLING_IN_VIEW_INTERACTION',
10821  MOUSE_MOVE_IN_VIEWPORT_INTERACTION: 'MOUSE_MOVE_IN_VIEWPORT_INTERACTION',
10822  PAGE_IS_SCROLLING_INTERACTION: 'PAGE_IS_SCROLLING_INTERACTION',
10823  PAGE_LOAD_INTERACTION: 'PAGE_LOAD_INTERACTION',
10824  PAGE_SCROLLED_INTERACTION: 'PAGE_SCROLLED_INTERACTION',
10825  NAVBAR_INTERACTION: 'NAVBAR_INTERACTION',
10826  DROPDOWN_INTERACTION: 'DROPDOWN_INTERACTION',
10827  ECOMMERCE_CART_INTERACTION: 'ECOMMERCE_CART_INTERACTION',
10828  TAB_INTERACTION: 'TAB_INTERACTION',
10829  SLIDER_INTERACTION: 'SLIDER_INTERACTION'
10830};
10831exports.InteractionTypeConsts = InteractionTypeConsts;
10832
10833/***/ }),
10834/* 192 */
10835/***/ (function(module, exports, __webpack_require__) {
10836
10837"use strict";
10838
10839
10840var _interopRequireDefault = __webpack_require__(0);
10841
10842var _defineProperty2 = _interopRequireDefault(__webpack_require__(21));
10843
10844var _ReducedMotionTypes;
10845
10846Object.defineProperty(exports, "__esModule", {
10847  value: true
10848});
10849exports.ReducedMotionTypes = void 0;
10850
10851var _animationActions = __webpack_require__(94);
10852
10853var _animationActions$Act = _animationActions.ActionTypeConsts,
10854    TRANSFORM_MOVE = _animationActions$Act.TRANSFORM_MOVE,
10855    TRANSFORM_SCALE = _animationActions$Act.TRANSFORM_SCALE,
10856    TRANSFORM_ROTATE = _animationActions$Act.TRANSFORM_ROTATE,
10857    TRANSFORM_SKEW = _animationActions$Act.TRANSFORM_SKEW,
10858    STYLE_SIZE = _animationActions$Act.STYLE_SIZE,
10859    STYLE_FILTER = _animationActions$Act.STYLE_FILTER,
10860    STYLE_FONT_VARIATION = _animationActions$Act.STYLE_FONT_VARIATION;
10861/**
10862 * Reduced Motion: Action types to bypass during `prefers-reduced-motion`
10863 */
10864
10865var ReducedMotionTypes = (_ReducedMotionTypes = {}, (0, _defineProperty2["default"])(_ReducedMotionTypes, TRANSFORM_MOVE, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, TRANSFORM_SCALE, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, TRANSFORM_ROTATE, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, TRANSFORM_SKEW, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, STYLE_SIZE, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, STYLE_FILTER, true), (0, _defineProperty2["default"])(_ReducedMotionTypes, STYLE_FONT_VARIATION, true), _ReducedMotionTypes);
10866exports.ReducedMotionTypes = ReducedMotionTypes;
10867
10868/***/ }),
10869/* 193 */
10870/***/ (function(module, exports, __webpack_require__) {
10871
10872"use strict";
10873
10874
10875Object.defineProperty(exports, "__esModule", {
10876  value: true
10877});
10878exports.IX2_TEST_FRAME_RENDERED = exports.IX2_MEDIA_QUERIES_DEFINED = exports.IX2_VIEWPORT_WIDTH_CHANGED = exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = exports.IX2_ELEMENT_STATE_CHANGED = exports.IX2_INSTANCE_REMOVED = exports.IX2_INSTANCE_STARTED = exports.IX2_INSTANCE_ADDED = exports.IX2_PARAMETER_CHANGED = exports.IX2_ANIMATION_FRAME_CHANGED = exports.IX2_EVENT_STATE_CHANGED = exports.IX2_EVENT_LISTENER_ADDED = exports.IX2_CLEAR_REQUESTED = exports.IX2_STOP_REQUESTED = exports.IX2_PLAYBACK_REQUESTED = exports.IX2_PREVIEW_REQUESTED = exports.IX2_SESSION_STOPPED = exports.IX2_SESSION_STARTED = exports.IX2_SESSION_INITIALIZED = exports.IX2_RAW_DATA_IMPORTED = void 0;
10879var IX2_RAW_DATA_IMPORTED = 'IX2_RAW_DATA_IMPORTED';
10880exports.IX2_RAW_DATA_IMPORTED = IX2_RAW_DATA_IMPORTED;
10881var IX2_SESSION_INITIALIZED = 'IX2_SESSION_INITIALIZED';
10882exports.IX2_SESSION_INITIALIZED = IX2_SESSION_INITIALIZED;
10883var IX2_SESSION_STARTED = 'IX2_SESSION_STARTED';
10884exports.IX2_SESSION_STARTED = IX2_SESSION_STARTED;
10885var IX2_SESSION_STOPPED = 'IX2_SESSION_STOPPED';
10886exports.IX2_SESSION_STOPPED = IX2_SESSION_STOPPED;
10887var IX2_PREVIEW_REQUESTED = 'IX2_PREVIEW_REQUESTED';
10888exports.IX2_PREVIEW_REQUESTED = IX2_PREVIEW_REQUESTED;
10889var IX2_PLAYBACK_REQUESTED = 'IX2_PLAYBACK_REQUESTED';
10890exports.IX2_PLAYBACK_REQUESTED = IX2_PLAYBACK_REQUESTED;
10891var IX2_STOP_REQUESTED = 'IX2_STOP_REQUESTED';
10892exports.IX2_STOP_REQUESTED = IX2_STOP_REQUESTED;
10893var IX2_CLEAR_REQUESTED = 'IX2_CLEAR_REQUESTED';
10894exports.IX2_CLEAR_REQUESTED = IX2_CLEAR_REQUESTED;
10895var IX2_EVENT_LISTENER_ADDED = 'IX2_EVENT_LISTENER_ADDED';
10896exports.IX2_EVENT_LISTENER_ADDED = IX2_EVENT_LISTENER_ADDED;
10897var IX2_EVENT_STATE_CHANGED = 'IX2_EVENT_STATE_CHANGED';
10898exports.IX2_EVENT_STATE_CHANGED = IX2_EVENT_STATE_CHANGED;
10899var IX2_ANIMATION_FRAME_CHANGED = 'IX2_ANIMATION_FRAME_CHANGED';
10900exports.IX2_ANIMATION_FRAME_CHANGED = IX2_ANIMATION_FRAME_CHANGED;
10901var IX2_PARAMETER_CHANGED = 'IX2_PARAMETER_CHANGED';
10902exports.IX2_PARAMETER_CHANGED = IX2_PARAMETER_CHANGED;
10903var IX2_INSTANCE_ADDED = 'IX2_INSTANCE_ADDED';
10904exports.IX2_INSTANCE_ADDED = IX2_INSTANCE_ADDED;
10905var IX2_INSTANCE_STARTED = 'IX2_INSTANCE_STARTED';
10906exports.IX2_INSTANCE_STARTED = IX2_INSTANCE_STARTED;
10907var IX2_INSTANCE_REMOVED = 'IX2_INSTANCE_REMOVED';
10908exports.IX2_INSTANCE_REMOVED = IX2_INSTANCE_REMOVED;
10909var IX2_ELEMENT_STATE_CHANGED = 'IX2_ELEMENT_STATE_CHANGED';
10910exports.IX2_ELEMENT_STATE_CHANGED = IX2_ELEMENT_STATE_CHANGED;
10911var IX2_ACTION_LIST_PLAYBACK_CHANGED = 'IX2_ACTION_LIST_PLAYBACK_CHANGED';
10912exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = IX2_ACTION_LIST_PLAYBACK_CHANGED;
10913var IX2_VIEWPORT_WIDTH_CHANGED = 'IX2_VIEWPORT_WIDTH_CHANGED';
10914exports.IX2_VIEWPORT_WIDTH_CHANGED = IX2_VIEWPORT_WIDTH_CHANGED;
10915var IX2_MEDIA_QUERIES_DEFINED = 'IX2_MEDIA_QUERIES_DEFINED';
10916exports.IX2_MEDIA_QUERIES_DEFINED = IX2_MEDIA_QUERIES_DEFINED;
10917var IX2_TEST_FRAME_RENDERED = 'IX2_TEST_FRAME_RENDERED';
10918exports.IX2_TEST_FRAME_RENDERED = IX2_TEST_FRAME_RENDERED;
10919
10920/***/ }),
10921/* 194 */
10922/***/ (function(module, exports, __webpack_require__) {
10923
10924"use strict";
10925
10926
10927Object.defineProperty(exports, "__esModule", {
10928  value: true
10929});
10930exports.RENDER_PLUGIN = exports.RENDER_STYLE = exports.RENDER_GENERAL = exports.RENDER_TRANSFORM = exp
10930orts.ABSTRACT_NODE = exports.PLAIN_OBJECT = exports.HTML_ELEMENT = exports.PRESERVE_3D = exports.PARENT = exports.SIBLINGS = exports.IMMEDIATE_CHILDREN = exports.CHILDREN = exports.BAR_DELIMITER = exports.COLON_DELIMITER = exports.COMMA_DELIMITER = exports.AUTO = exports.WILL_CHANGE = exports.FLEX = exports.DISPLAY = exports.COLOR = exports.BORDER_COLOR = exports.BACKGROUND = exports.BACKGROUND_COLOR = exports.HEIGHT = exports.WIDTH = exports.FONT_VARIATION_SETTINGS = exports.FILTER = exports.OPACITY = exports.SKEW_Y = exports.SKEW_X = exports.SKEW = exports.ROTATE_Z = exports.ROTATE_Y = exports.ROTATE_X = exports.SCALE_3D = exports.SCALE_Z = exports.SCALE_Y = exports.SCALE_X = exports.TRANSLATE_3D = exports.TRANSLATE_Z = exports.TRANSLATE_Y = exports.TRANSLATE_X = exports.TRANSFORM = exports.CONFIG_UNIT = exports.CONFIG_Z_UNIT = exports.CONFIG_Y_UNIT = exports.CONFIG_X_UNIT = exports.CONFIG_VALUE = exports.CONFIG_Z_VALUE = exports.CONFIG_Y_VALUE = exports.CONFIG_X_VALUE = exports.BOUNDARY_SELECTOR = exports.W_MOD_IX = exports.W_MOD_JS = exports.WF_PAGE = exports.IX2_ID_DELIMITER = void 0;
10931var IX2_ID_DELIMITER = '|';
10932exports.IX2_ID_DELIMITER = IX2_ID_DELIMITER;
10933var WF_PAGE = 'data-wf-page';
10934exports.WF_PAGE = WF_PAGE;
10935var W_MOD_JS = 'w-mod-js';
10936exports.W_MOD_JS = W_MOD_JS;
10937var W_MOD_IX = 'w-mod-ix';
10938exports.W_MOD_IX = W_MOD_IX;
10939var BOUNDARY_SELECTOR = '.w-dyn-item';
10940exports.BOUNDARY_SELECTOR = BOUNDARY_SELECTOR;
10941var CONFIG_X_VALUE = 'xValue';
10942exports.CONFIG_X_VALUE = CONFIG_X_VALUE;
10943var CONFIG_Y_VALUE = 'yValue';
10944exports.CONFIG_Y_VALUE = CONFIG_Y_VALUE;
10945var CONFIG_Z_VALUE = 'zValue';
10946exports.CONFIG_Z_VALUE = CONFIG_Z_VALUE;
10947var CONFIG_VALUE = 'value';
10948exports.CONFIG_VALUE = CONFIG_VALUE;
10949var CONFIG_X_UNIT = 'xUnit';
10950exports.CONFIG_X_UNIT = CONFIG_X_UNIT;
10951var CONFIG_Y_UNIT = 'yUnit';
10952exports.CONFIG_Y_UNIT = CONFIG_Y_UNIT;
10953var CONFIG_Z_UNIT = 'zUnit';
10954exports.CONFIG_Z_UNIT = CONFIG_Z_UNIT;
10955var CONFIG_UNIT = 'unit';
10956exports.CONFIG_UNIT = CONFIG_UNIT;
10957var TRANSFORM = 'transform';
10958exports.TRANSFORM = TRANSFORM;
10959var TRANSLATE_X = 'translateX';
10960exports.TRANSLATE_X = TRANSLATE_X;
10961var TRANSLATE_Y = 'translateY';
10962exports.TRANSLATE_Y = TRANSLATE_Y;
10963var TRANSLATE_Z = 'translateZ';
10964exports.TRANSLATE_Z = TRANSLATE_Z;
10965var TRANSLATE_3D = 'translate3d';
10966exports.TRANSLATE_3D = TRANSLATE_3D;
10967var SCALE_X = 'scaleX';
10968exports.SCALE_X = SCALE_X;
10969var SCALE_Y = 'scaleY';
10970exports.SCALE_Y = SCALE_Y;
10971var SCALE_Z = 'scaleZ';
10972exports.SCALE_Z = SCALE_Z;
10973var SCALE_3D = 'scale3d';
10974exports.SCALE_3D = SCALE_3D;
10975var ROTATE_X = 'rotateX';
10976exports.ROTATE_X = ROTATE_X;
10977var ROTATE_Y = 'rotateY';
10978exports.ROTATE_Y = ROTATE_Y;
10979var ROTATE_Z = 'rotateZ';
10980exports.ROTATE_Z = ROTATE_Z;
10981var SKEW = 'skew';
10982exports.SKEW = SKEW;
10983var SKEW_X = 'skewX';
10984exports.SKEW_X = SKEW_X;
10985var SKEW_Y = 'skewY';
10986exports.SKEW_Y = SKEW_Y;
10987var OPACITY = 'opacity';
10988exports.OPACITY = OPACITY;
10989var FILTER = 'filter';
10990exports.FILTER = FILTER;
10991var FONT_VARIATION_SETTINGS = 'font-variation-settings';
10992exports.FONT_VARIATION_SETTINGS = FONT_VARIATION_SETTINGS;
10993var WIDTH = 'width';
10994exports.WIDTH = WIDTH;
10995var HEIGHT = 'height';
10996exports.HEIGHT = HEIGHT;
10997var BACKGROUND_COLOR = 'backgroundColor';
10998exports.BACKGROUND_COLOR = BACKGROUND_COLOR;
10999var BACKGROUND = 'background';
11000exports.BACKGROUND = BACKGROUND;
11001var BORDER_COLOR = 'borderColor';
11002exports.BORDER_COLOR = BORDER_COLOR;
11003var COLOR = 'color';
11004exports.COLOR = COLOR;
11005var DISPLAY = 'display';
11006exports.DISPLAY = DISPLAY;
11007var FLEX = 'flex';
11008exports.FLEX = FLEX;
11009var WILL_CHANGE = 'willChange';
11010exports.WILL_CHANGE = WILL_CHANGE;
11011var AUTO = 'AUTO';
11012exports.AUTO = AUTO;
11013var COMMA_DELIMITER = ',';
11014exports.COMMA_DELIMITER = COMMA_DELIMITER;
11015var COLON_DELIMITER = ':';
11016exports.COLON_DELIMITER = COLON_DELIMITER;
11017var BAR_DELIMITER = '|';
11018exports.BAR_DELIMITER = BAR_DELIMITER;
11019var CHILDREN = 'CHILDREN';
11020exports.CHILDREN = CHILDREN;
11021var IMMEDIATE_CHILDREN = 'IMMEDIATE_CHILDREN';
11022exports.IMMEDIATE_CHILDREN = IMMEDIATE_CHILDREN;
11023var SIBLINGS = 'SIBLINGS';
11024exports.SIBLINGS = SIBLINGS;
11025var PARENT = 'PARENT';
11026exports.PARENT = PARENT;
11027var PRESERVE_3D = 'preserve-3d';
11028exports.PRESERVE_3D = PRESERVE_3D;
11029var HTML_ELEMENT = 'HTML_ELEMENT';
11030exports.HTML_ELEMENT = HTML_ELEMENT;
11031var PLAIN_OBJECT = 'PLAIN_OBJECT';
11032exports.PLAIN_OBJECT = PLAIN_OBJECT;
11033var ABSTRACT_NODE = 'ABSTRACT_NODE';
11034exports.ABSTRACT_NODE = ABSTRACT_NODE;
11035var RENDER_TRANSFORM = 'RENDER_TRANSFORM';
11036exports.RENDER_TRANSFORM = RENDER_TRANSFORM;
11037var RENDER_GENERAL = 'RENDER_GENERAL';
11038exports.RENDER_GENERAL = RENDER_GENERAL;
11039var RENDER_STYLE = 'RENDER_STYLE';
11040exports.RENDER_STYLE = RENDER_STYLE;
11041var RENDER_PLUGIN = 'RENDER_PLUGIN';
11042exports.RENDER_PLUGIN = RENDER_PLUGIN;
11043
11044/***/ }),
11045/* 195 */
11046/***/ (function(module, exports, __webpack_require__) {
11047
11048"use strict";
11049
11050
11051var _interopRequireDefault2 = __webpack_require__(0);
11052
11053var _defineProperty2 = _interopRequireDefault2(__webpack_require__(21));
11054
11055var _Object$create;
11056
11057var _interopRequireDefault = __webpack_require__(0);
11058
11059Object.defineProperty(exports, "__esModule", {
11060  value: true
11061});
11062exports.ixRequest = void 0;
11063
11064var _extends2 = _interopRequireDefault(__webpack_require__(30));
11065
11066var _constants = __webpack_require__(4);
11067
11068var _timm = __webpack_require__(22);
11069
11070var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
11071    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
11072    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
11073    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
11074    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED;
11075var initialState = {
11076  preview: {},
11077  playback: {},
11078  stop: {},
11079  clear: {}
11080};
11081var stateKeys = Object.create(null, (_Object$create = {}, (0, _defineProperty2["default"])(_Object$create, IX2_PREVIEW_REQUESTED, {
11082  value: 'preview'
11083}), (0, _defineProperty2["default"])(_Object$create, IX2_PLAYBACK_REQUESTED, {
11084  value: 'playback'
11085}), (0, _defineProperty2["default"])(_Object$create, IX2_STOP_REQUESTED, {
11086  value: 'stop'
11087}), (0, _defineProperty2["default"])(_Object$create, IX2_CLEAR_REQUESTED, {
11088  value: 'clear'
11089}), _Object$create));
11090
11091var ixRequest = function ixRequest() {
11092  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
11093  var action = arguments.length > 1 ? arguments[1] : undefined;
11094
11095  if (action.type in stateKeys) {
11096    var key = [stateKeys[action.type]];
11097    return (0, _timm.setIn)(state, [key], (0, _extends2["default"])({}, action.payload));
11098  }
11099
11100  return state;
11101};
11102
11103exports.ixRequest = ixRequest;
11104
11105/***/ }),
11106/* 196 */
11107/***/ (function(module, exports, __webpack_require__) {
11108
11109"use strict";
11110
11111
11112Object.defineProperty(exports, "__esModule", {
11113  value: true
11114});
11115exports.ixSession = void 0;
11116
11117var _constants = __webpack_require__(4);
11118
11119var _timm = __webpack_require__(22);
11120
11121var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
11122    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
11123    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
11124    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
11125    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
11126    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
11127    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
11128    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
11129    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
11130    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
11131    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
11132var initialState = {
11133  active: false,
11134  tick: 0,
11135  eventListeners: [],
11136  eventState: {},
11137  playbackState: {},
11138  viewportWidth: 0,
11139  mediaQueryKey: null,
11140  hasBoundaryNodes: false,
11141  hasDefinedMediaQueries: false,
11142  reducedMotion: false
11143};
11144var TEST_FRAME_STEPS_SIZE = 20; // $FlowFixMe
11145
11146var ixSession = function ixSession() {
11147  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
11148  var action = arguments.length > 1 ? arguments[1] : undefined;
11149
11150  switch (action.type) {
11151    case IX2_SESSION_INITIALIZED:
11152      {
11153        var _action$payload = action.payload,
11154            hasBoundaryNodes = _action$payload.hasBoundaryNodes,
11155            reducedMotion = _action$payload.reducedMotion;
11156        return (0, _timm.merge)(state, {
11157          hasBoundaryNodes: hasBoundaryNodes,
11158          reducedMotion: reducedMotion
11159        });
11160      }
11161
11162    case IX2_SESSION_STARTED:
11163      {
11164        return (0, _timm.set)(state, 'active', true);
11165      }
11166
11167    case IX2_TEST_FRAME_RENDERED:
11168      {
11169        var _action$payload$step = action.payload.step,
11170            step = _action$payload$step === void 0 ? TEST_FRAME_STEPS_SIZE : _action$payload$step;
11171        return (0, _timm.set)(state, 'tick', state.tick + step);
11172      }
11173
11174    case IX2_SESSION_STOPPED:
11175      {
11176        return initialState;
11177      }
11178
11179    case IX2_ANIMATION_FRAME_CHANGED:
11180      {
11181        var now = action.payload.now;
11182        return (0, _timm.set)(state, 'tick', now);
11183      }
11184
11185    case IX2_EVENT_LISTENER_ADDED:
11186      {
11187        var eventListeners = (0, _timm.addLast)(state.eventListeners, action.payload);
11188        return (0, _timm.set)(state, 'eventListeners', eventListeners);
11189      }
11190
11191    case IX2_EVENT_STATE_CHANGED:
11192      {
11193        var _action$payload2 = action.payload,
11194            stateKey = _action$payload2.stateKey,
11195            newState = _action$payload2.newState;
11196        return (0, _timm.setIn)(state, ['eventState', stateKey], newState);
11197      }
11198
11199    case IX2_ACTION_LIST_PLAYBACK_CHANGED:
11200      {
11201        var _action$payload3 = action.payload,
11202            actionListId = _action$payload3.actionListId,
11203            isPlaying = _action$payload3.isPlaying;
11204        return (0, _timm.setIn)(state, ['playbackState', actionListId], isPlaying);
11205      }
11206
11207    case IX2_VIEWPORT_WIDTH_CHANGED:
11208      {
11209        var _action$payload4 = action.payload,
11210            width = _action$payload4.width,
11211            mediaQueries = _action$payload4.mediaQueries;
11212        var mediaQueryCount = mediaQueries.length;
11213        var mediaQueryKey = null;
11214
11215        for (var i = 0; i < mediaQueryCount; i++) {
11216          var _mediaQueries$i = mediaQueries[i],
11217              key = _mediaQueries$i.key,
11218              min = _mediaQueries$i.min,
11219              max = _mediaQueries$i.max;
11220
11221          if (width >= min && width <= max) {
11222            mediaQueryKey = key;
11223            break;
11224          }
11225        }
11226
11227        return (0, _timm.merge)(state, {
11228          viewportWidth: width,
11229          mediaQueryKey: mediaQueryKey
11230        });
11231      }
11232
11233    case IX2_MEDIA_QUERIES_DEFINED:
11234      {
11235        return (0, _timm.set)(state, 'hasDefinedMediaQueries', true);
11236      }
11237
11238    default:
11239      {
11240        return state;
11241      }
11242  }
11243};
11244
11245exports.ixSession = ixSession;
11246
11247/***/ }),
11248/* 197 */
11249/***/ (function(module, exports, __webpack_require__) {
11250
11251var baseIsMatch = __webpack_require__(198),
11252    getMatchData = __webpack_require__(250),
11253    matchesStrictComparable = __webpack_require__(111);
11254
11255/**
11256 * The base implementation of `_.matches` which doesn't clone `source`.
11257 *
11258 * @private
11259 * @param {Object} source The object of property values to match.
11260 * @returns {Function} Returns the new spec function.
11261 */
11262function baseMatches(source) {
11263  var matchData = getMatchData(source);
11264  if (matchData.length == 1 && matchData[0][2]) {
11265    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
11266  }
11267  return function(object) {
11268    return object === source || baseIsMatch(object, source, matchData);
11269  };
11270}
11271
11272module.exports = baseMatches;
11273
11274
11275/***/ }),
11276/* 198 */
11277/***/ (function(module, exports, __webpack_require__) {
11278
11279var Stack = __webpack_require__(97),
11280    baseIsEqual = __webpack_require__(101);
11281
11282/** Used to compose bitmasks for value comparisons. */
11283var COMPARE_PARTIAL_FLAG = 1,
11284    COMPARE_UNORDERED_FLAG = 2;
11285
11286/**
11287 * The base implementation of `_.isMatch` without support for iteratee shorthands.
11288 *
11289 * @private
11290 * @param {Object} object The object to inspect.
11291 * @param {Object} source The object of property values to match.
11292 * @param {Array} matchData The property names, values, and compare flags to match.
11293 * @param {Function} [customizer] The function to customize comparisons.
11294 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
11295 */
11296function baseIsMatch(object, source, matchData, customizer) {
11297  var index = matchData.length,
11298      length = index,
11299      noCustomizer = !customizer;
11300
11301  if (object == null) {
11302    return !length;
11303  }
11304  object = Object(object);
11305  while (index--) {
11306    var data = matchData[index];
11307    if ((noCustomizer && data[2])
11308          ? data[1] !== object[data[0]]
11309          : !(data[0] in object)
11310        ) {
11311      return false;
vendor: 4,246 bytes, lines 11312-11528
11312    }
11313  }
11314  while (++index < length) {
11315    data = matchData[index];
11316    var key = data[0],
11317        objValue = object[key],
11318        srcValue = data[1];
11319
11320    if (noCustomizer && data[2]) {
11321      if (objValue === undefined && !(key in object)) {
11322        return false;
11323      }
11324    } else {
11325      var stack = new Stack;
11326      if (customizer) {
11327        var result = customizer(objValue, srcValue, key, object, source, stack);
11328      }
11329      if (!(result === undefined
11330            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
11331            : result
11332          )) {
11333        return false;
11334      }
11335    }
11336  }
11337  return true;
11338}
11339
11340module.exports = baseIsMatch;
11341
11342
11343/***/ }),
11344/* 199 */
11345/***/ (function(module, exports) {
11346
11347/**
11348 * Removes all key-value entries from the list cache.
11349 *
11350 * @private
11351 * @name clear
11352 * @memberOf ListCache
11353 */
11354function listCacheClear() {
11355  this.__data__ = [];
11356  this.size = 0;
11357}
11358
11359module.exports = listCacheClear;
11360
11361
11362/***/ }),
11363/* 200 */
11364/***/ (function(module, exports, __webpack_require__) {
11365
11366var assocIndexOf = __webpack_require__(32);
11367
11368/** Used for built-in method references. */
11369var arrayProto = Array.prototype;
11370
11371/** Built-in value references. */
11372var splice = arrayProto.splice;
11373
11374/**
11375 * Removes `key` and its value from the list cache.
11376 *
11377 * @private
11378 * @name delete
11379 * @memberOf ListCache
11380 * @param {string} key The key of the value to remove.
11381 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11382 */
11383function listCacheDelete(key) {
11384  var data = this.__data__,
11385      index = assocIndexOf(data, key);
11386
11387  if (index < 0) {
11388    return false;
11389  }
11390  var lastIndex = data.length - 1;
11391  if (index == lastIndex) {
11392    data.pop();
11393  } else {
11394    splice.call(data, index, 1);
11395  }
11396  --this.size;
11397  return true;
11398}
11399
11400module.exports = listCacheDelete;
11401
11402
11403/***/ }),
11404/* 201 */
11405/***/ (function(module, exports, __webpack_require__) {
11406
11407var assocIndexOf = __webpack_require__(32);
11408
11409/**
11410 * Gets the list cache value for `key`.
11411 *
11412 * @private
11413 * @name get
11414 * @memberOf ListCache
11415 * @param {string} key The key of the value to get.
11416 * @returns {*} Returns the entry value.
11417 */
11418function listCacheGet(key) {
11419  var data = this.__data__,
11420      index = assocIndexOf(data, key);
11421
11422  return index < 0 ? undefined : data[index][1];
11423}
11424
11425module.exports = listCacheGet;
11426
11427
11428/***/ }),
11429/* 202 */
11430/***/ (function(module, exports, __webpack_require__) {
11431
11432var assocIndexOf = __webpack_require__(32);
11433
11434/**
11435 * Checks if a list cache value for `key` exists.
11436 *
11437 * @private
11438 * @name has
11439 * @memberOf ListCache
11440 * @param {string} key The key of the entry to check.
11441 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11442 */
11443function listCacheHas(key) {
11444  return assocIndexOf(this.__data__, key) > -1;
11445}
11446
11447module.exports = listCacheHas;
11448
11449
11450/***/ }),
11451/* 203 */
11452/***/ (function(module, exports, __webpack_require__) {
11453
11454var assocIndexOf = __webpack_require__(32);
11455
11456/**
11457 * Sets the list cache `key` to `value`.
11458 *
11459 * @private
11460 * @name set
11461 * @memberOf ListCache
11462 * @param {string} key The key of the value to set.
11463 * @param {*} value The value to set.
11464 * @returns {Object} Returns the list cache instance.
11465 */
11466function listCacheSet(key, value) {
11467  var data = this.__data__,
11468      index = assocIndexOf(data, key);
11469
11470  if (index < 0) {
11471    ++this.size;
11472    data.push([key, value]);
11473  } else {
11474    data[index][1] = value;
11475  }
11476  return this;
11477}
11478
11479module.exports = listCacheSet;
11480
11481
11482/***/ }),
11483/* 204 */
11484/***/ (function(module, exports, __webpack_require__) {
11485
11486var ListCache = __webpack_require__(31);
11487
11488/**
11489 * Removes all key-value entries from the stack.
11490 *
11491 * @private
11492 * @name clear
11493 * @memberOf Stack
11494 */
11495function stackClear() {
11496  this.__data__ = new ListCache;
11497  this.size = 0;
11498}
11499
11500module.exports = stackClear;
11501
11502
11503/***/ }),
11504/* 205 */
11505/***/ (function(module, exports) {
11506
11507/**
11508 * Removes `key` and its value from the stack.
11509 *
11510 * @private
11511 * @name delete
11512 * @memberOf Stack
11513 * @param {string} key The key of the value to remove.
11514 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11515 */
11516function stackDelete(key) {
11517  var data = this.__data__,
11518      result = data['delete'](key);
11519
11520  this.size = data.size;
11521  return result;
11522}
11523
11524module.exports = stackDelete;
11525
11526
11527/***/ }),
11528/* 206 */
vendor: 11,192 bytes, lines 11529-12025
11529/***/ (function(module, exports) {
11530
11531/**
11532 * Gets the stack value for `key`.
11533 *
11534 * @private
11535 * @name get
11536 * @memberOf Stack
11537 * @param {string} key The key of the value to get.
11538 * @returns {*} Returns the entry value.
11539 */
11540function stackGet(key) {
11541  return this.__data__.get(key);
11542}
11543
11544module.exports = stackGet;
11545
11546
11547/***/ }),
11548/* 207 */
11549/***/ (function(module, exports) {
11550
11551/**
11552 * Checks if a stack value for `key` exists.
11553 *
11554 * @private
11555 * @name has
11556 * @memberOf Stack
11557 * @param {string} key The key of the entry to check.
11558 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11559 */
11560function stackHas(key) {
11561  return this.__data__.has(key);
11562}
11563
11564module.exports = stackHas;
11565
11566
11567/***/ }),
11568/* 208 */
11569/***/ (function(module, exports, __webpack_require__) {
11570
11571var ListCache = __webpack_require__(31),
11572    Map = __webpack_require__(50),
11573    MapCache = __webpack_require__(51);
11574
11575/** Used as the size to enable large array optimizations. */
11576var LARGE_ARRAY_SIZE = 200;
11577
11578/**
11579 * Sets the stack `key` to `value`.
11580 *
11581 * @private
11582 * @name set
11583 * @memberOf Stack
11584 * @param {string} key The key of the value to set.
11585 * @param {*} value The value to set.
11586 * @returns {Object} Returns the stack cache instance.
11587 */
11588function stackSet(key, value) {
11589  var data = this.__data__;
11590  if (data instanceof ListCache) {
11591    var pairs = data.__data__;
11592    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
11593      pairs.push([key, value]);
11594      this.size = ++data.size;
11595      return this;
11596    }
11597    data = this.__data__ = new MapCache(pairs);
11598  }
11599  data.set(key, value);
11600  this.size = data.size;
11601  return this;
11602}
11603
11604module.exports = stackSet;
11605
11606
11607/***/ }),
11608/* 209 */
11609/***/ (function(module, exports, __webpack_require__) {
11610
11611var isFunction = __webpack_require__(98),
11612    isMasked = __webpack_require__(212),
11613    isObject = __webpack_require__(8),
11614    toSource = __webpack_require__(100);
11615
11616/**
11617 * Used to match `RegExp`
11618 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
11619 */
11620var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
11621
11622/** Used to detect host constructors (Safari). */
11623var reIsHostCtor = /^\[object .+?Constructor\]$/;
11624
11625/** Used for built-in method references. */
11626var funcProto = Function.prototype,
11627    objectProto = Object.prototype;
11628
11629/** Used to resolve the decompiled source of functions. */
11630var funcToString = funcProto.toString;
11631
11632/** Used to check objects for own properties. */
11633var hasOwnProperty = objectProto.hasOwnProperty;
11634
11635/** Used to detect if a method is native. */
11636var reIsNative = RegExp('^' +
11637  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
11638  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
11639);
11640
11641/**
11642 * The base implementation of `_.isNative` without bad shim checks.
11643 *
11644 * @private
11645 * @param {*} value The value to check.
11646 * @returns {boolean} Returns `true` if `value` is a native function,
11647 *  else `false`.
11648 */
11649function baseIsNative(value) {
11650  if (!isObject(value) || isMasked(value)) {
11651    return false;
11652  }
11653  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
11654  return pattern.test(toSource(value));
11655}
11656
11657module.exports = baseIsNative;
11658
11659
11660/***/ }),
11661/* 210 */
11662/***/ (function(module, exports, __webpack_require__) {
11663
11664var Symbol = __webpack_require__(23);
11665
11666/** Used for built-in method references. */
11667var objectProto = Object.prototype;
11668
11669/** Used to check objects for own properties. */
11670var hasOwnProperty = objectProto.hasOwnProperty;
11671
11672/**
11673 * Used to resolve the
11674 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
11675 * of values.
11676 */
11677var nativeObjectToString = objectProto.toString;
11678
11679/** Built-in value references. */
11680var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
11681
11682/**
11683 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
11684 *
11685 * @private
11686 * @param {*} value The value to query.
11687 * @returns {string} Returns the raw `toStringTag`.
11688 */
11689function getRawTag(value) {
11690  var isOwn = hasOwnProperty.call(value, symToStringTag),
11691      tag = value[symToStringTag];
11692
11693  try {
11694    value[symToStringTag] = undefined;
11695    var unmasked = true;
11696  } catch (e) {}
11697
11698  var result = nativeObjectToString.call(value);
11699  if (unmasked) {
11700    if (isOwn) {
11701      value[symToStringTag] = tag;
11702    } else {
11703      delete value[symToStringTag];
11704    }
11705  }
11706  return result;
11707}
11708
11709module.exports = getRawTag;
11710
11711
11712/***/ }),
11713/* 211 */
11714/***/ (function(module, exports) {
11715
11716/** Used for built-in method references. */
11717var objectProto = Object.prototype;
11718
11719/**
11720 * Used to resolve the
11721 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
11722 * of values.
11723 */
11724var nativeObjectToString = objectProto.toString;
11725
11726/**
11727 * Converts `value` to a string using `Object.prototype.toString`.
11728 *
11729 * @private
11730 * @param {*} value The value to convert.
11731 * @returns {string} Returns the converted string.
11732 */
11733function objectToString(value) {
11734  return nativeObjectToString.call(value);
11735}
11736
11737module.exports = objectToString;
11738
11739
11740/***/ }),
11741/* 212 */
11742/***/ (function(module, exports, __webpack_require__) {
11743
11744var coreJsData = __webpack_require__(213);
11745
11746/** Used to detect methods masquerading as native. */
11747var maskSrcKey = (function() {
11748  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
11749  return uid ? ('Symbol(src)_1.' + uid) : '';
11750}());
11751
11752/**
11753 * Checks if `func` has its source masked.
11754 *
11755 * @private
11756 * @param {Function} func The function to check.
11757 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
11758 */
11759function isMasked(func) {
11760  return !!maskSrcKey && (maskSrcKey in func);
11761}
11762
11763module.exports = isMasked;
11764
11765
11766/***/ }),
11767/* 213 */
11768/***/ (function(module, exports, __webpack_require__) {
11769
11770var root = __webpack_require__(6);
11771
11772/** Used to detect overreaching core-js shims. */
11773var coreJsData = root['__core-js_shared__'];
11774
11775module.exports = coreJsData;
11776
11777
11778/***/ }),
11779/* 214 */
11780/***/ (function(module, exports) {
11781
11782/**
11783 * Gets the value at `key` of `object`.
11784 *
11785 * @private
11786 * @param {Object} [object] The object to query.
11787 * @param {string} key The key of the property to get.
11788 * @returns {*} Returns the property value.
11789 */
11790function getValue(object, key) {
11791  return object == null ? undefined : object[key];
11792}
11793
11794module.exports = getValue;
11795
11796
11797/***/ }),
11798/* 215 */
11799/***/ (function(module, exports, __webpack_require__) {
11800
11801var Hash = __webpack_require__(216),
11802    ListCache = __webpack_require__(31),
11803    Map = __webpack_require__(50);
11804
11805/**
11806 * Removes all key-value entries from the map.
11807 *
11808 * @private
11809 * @name clear
11810 * @memberOf MapCache
11811 */
11812function mapCacheClear() {
11813  this.size = 0;
11814  this.__data__ = {
11815    'hash': new Hash,
11816    'map': new (Map || ListCache),
11817    'string': new Hash
11818  };
11819}
11820
11821module.exports = mapCacheClear;
11822
11823
11824/***/ }),
11825/* 216 */
11826/***/ (function(module, exports, __webpack_require__) {
11827
11828var hashClear = __webpack_require__(217),
11829    hashDelete = __webpack_require__(218),
11830    hashGet = __webpack_require__(219),
11831    hashHas = __webpack_require__(220),
11832    hashSet = __webpack_require__(221);
11833
11834/**
11835 * Creates a hash object.
11836 *
11837 * @private
11838 * @constructor
11839 * @param {Array} [entries] The key-value pairs to cache.
11840 */
11841function Hash(entries) {
11842  var index = -1,
11843      length = entries == null ? 0 : entries.length;
11844
11845  this.clear();
11846  while (++index < length) {
11847    var entry = entries[index];
11848    this.set(entry[0], entry[1]);
11849  }
11850}
11851
11852// Add methods to `Hash`.
11853Hash.prototype.clear = hashClear;
11854Hash.prototype['delete'] = hashDelete;
11855Hash.prototype.get = hashGet;
11856Hash.prototype.has = hashHas;
11857Hash.prototype.set = hashSet;
11858
11859module.exports = Hash;
11860
11861
11862/***/ }),
11863/* 217 */
11864/***/ (function(module, exports, __webpack_require__) {
11865
11866var nativeCreate = __webpack_require__(33);
11867
11868/**
11869 * Removes all key-value entries from the hash.
11870 *
11871 * @private
11872 * @name clear
11873 * @memberOf Hash
11874 */
11875function hashClear() {
11876  this.__data__ = nativeCreate ? nativeCreate(null) : {};
11877  this.size = 0;
11878}
11879
11880module.exports = hashClear;
11881
11882
11883/***/ }),
11884/* 218 */
11885/***/ (function(module, exports) {
11886
11887/**
11888 * Removes `key` and its value from the hash.
11889 *
11890 * @private
11891 * @name delete
11892 * @memberOf Hash
11893 * @param {Object} hash The hash to modify.
11894 * @param {string} key The key of the value to remove.
11895 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11896 */
11897function hashDelete(key) {
11898  var result = this.has(key) && delete this.__data__[key];
11899  this.size -= result ? 1 : 0;
11900  return result;
11901}
11902
11903module.exports = hashDelete;
11904
11905
11906/***/ }),
11907/* 219 */
11908/***/ (function(module, exports, __webpack_require__) {
11909
11910var nativeCreate = __webpack_require__(33);
11911
11912/** Used to stand-in for `undefined` hash values. */
11913var HASH_UNDEFINED = '__lodash_hash_undefined__';
11914
11915/** Used for built-in method references. */
11916var objectProto = Object.prototype;
11917
11918/** Used to check objects for own properties. */
11919var hasOwnProperty = objectProto.hasOwnProperty;
11920
11921/**
11922 * Gets the hash value for `key`.
11923 *
11924 * @private
11925 * @name get
11926 * @memberOf Hash
11927 * @param {string} key The key of the value to get.
11928 * @returns {*} Returns the entry value.
11929 */
11930function hashGet(key) {
11931  var data = this.__data__;
11932  if (nativeCreate) {
11933    var result = data[key];
11934    return result === HASH_UNDEFINED ? undefined : result;
11935  }
11936  return hasOwnProperty.call(data, key) ? data[key] : undefined;
11937}
11938
11939module.exports = hashGet;
11940
11941
11942/***/ }),
11943/* 220 */
11944/***/ (function(module, exports, __webpack_require__) {
11945
11946var nativeCreate = __webpack_require__(33);
11947
11948/** Used for built-in method references. */
11949var objectProto = Object.prototype;
11950
11951/** Used to check objects for own properties. */
11952var hasOwnProperty = objectProto.hasOwnProperty;
11953
11954/**
11955 * Checks if a hash value for `key` exists.
11956 *
11957 * @private
11958 * @name has
11959 * @memberOf Hash
11960 * @param {string} key The key of the entry to check.
11961 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11962 */
11963function hashHas(key) {
11964  var data = this.__data__;
11965  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
11966}
11967
11968module.exports = hashHas;
11969
11970
11971/***/ }),
11972/* 221 */
11973/***/ (function(module, exports, __webpack_require__) {
11974
11975var nativeCreate = __webpack_require__(33);
11976
11977/** Used to stand-in for `undefined` hash values. */
11978var HASH_UNDEFINED = '__lodash_hash_undefined__';
11979
11980/**
11981 * Sets the hash `key` to `value`.
11982 *
11983 * @private
11984 * @name set
11985 * @memberOf Hash
11986 * @param {string} key The key of the value to set.
11987 * @param {*} value The value to set.
11988 * @returns {Object} Returns the hash instance.
11989 */
11990function hashSet(key, value) {
11991  var data = this.__data__;
11992  this.size += this.has(key) ? 0 : 1;
11993  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
11994  return this;
11995}
11996
11997module.exports = hashSet;
11998
11999
12000/***/ }),
12001/* 222 */
12002/***/ (function(module, exports, __webpack_require__) {
12003
12004var getMapData = __webpack_require__(34);
12005
12006/**
12007 * Removes `key` and its value from the map.
12008 *
12009 * @private
12010 * @name delete
12011 * @memberOf MapCache
12012 * @param {string} key The key of the value to remove.
12013 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
12014 */
12015function mapCacheDelete(key) {
12016  var result = getMapData(this, key)['delete'](key);
12017  this.size -= result ? 1 : 0;
12018  return result;
12019}
12020
12021module.exports = mapCacheDelete;
12022
12023
12024/***/ }),
12025/* 223 */
vendor: 13,823 bytes, lines 12026-12546
12026/***/ (function(module, exports) {
12027
12028/**
12029 * Checks if `value` is suitable for use as unique object key.
12030 *
12031 * @private
12032 * @param {*} value The value to check.
12033 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
12034 */
12035function isKeyable(value) {
12036  var type = typeof value;
12037  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
12038    ? (value !== '__proto__')
12039    : (value === null);
12040}
12041
12042module.exports = isKeyable;
12043
12044
12045/***/ }),
12046/* 224 */
12047/***/ (function(module, exports, __webpack_require__) {
12048
12049var getMapData = __webpack_require__(34);
12050
12051/**
12052 * Gets the map value for `key`.
12053 *
12054 * @private
12055 * @name get
12056 * @memberOf MapCache
12057 * @param {string} key The key of the value to get.
12058 * @returns {*} Returns the entry value.
12059 */
12060function mapCacheGet(key) {
12061  return getMapData(this, key).get(key);
12062}
12063
12064module.exports = mapCacheGet;
12065
12066
12067/***/ }),
12068/* 225 */
12069/***/ (function(module, exports, __webpack_require__) {
12070
12071var getMapData = __webpack_require__(34);
12072
12073/**
12074 * Checks if a map value for `key` exists.
12075 *
12076 * @private
12077 * @name has
12078 * @memberOf MapCache
12079 * @param {string} key The key of the entry to check.
12080 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
12081 */
12082function mapCacheHas(key) {
12083  return getMapData(this, key).has(key);
12084}
12085
12086module.exports = mapCacheHas;
12087
12088
12089/***/ }),
12090/* 226 */
12091/***/ (function(module, exports, __webpack_require__) {
12092
12093var getMapData = __webpack_require__(34);
12094
12095/**
12096 * Sets the map `key` to `value`.
12097 *
12098 * @private
12099 * @name set
12100 * @memberOf MapCache
12101 * @param {string} key The key of the value to set.
12102 * @param {*} value The value to set.
12103 * @returns {Object} Returns the map cache instance.
12104 */
12105function mapCacheSet(key, value) {
12106  var data = getMapData(this, key),
12107      size = data.size;
12108
12109  data.set(key, value);
12110  this.size += data.size == size ? 0 : 1;
12111  return this;
12112}
12113
12114module.exports = mapCacheSet;
12115
12116
12117/***/ }),
12118/* 227 */
12119/***/ (function(module, exports, __webpack_require__) {
12120
12121var Stack = __webpack_require__(97),
12122    equalArrays = __webpack_require__(102),
12123    equalByTag = __webpack_require__(233),
12124    equalObjects = __webpack_require__(237),
12125    getTag = __webpack_require__(59),
12126    isArray = __webpack_require__(2),
12127    isBuffer = __webpack_require__(53),
12128    isTypedArray = __webpack_require__(55);
12129
12130/** Used to compose bitmasks for value comparisons. */
12131var COMPARE_PARTIAL_FLAG = 1;
12132
12133/** `Object#toString` result references. */
12134var argsTag = '[object Arguments]',
12135    arrayTag = '[object Array]',
12136    objectTag = '[object Object]';
12137
12138/** Used for built-in method references. */
12139var objectProto = Object.prototype;
12140
12141/** Used to check objects for own properties. */
12142var hasOwnProperty = objectProto.hasOwnProperty;
12143
12144/**
12145 * A specialized version of `baseIsEqual` for arrays and objects which performs
12146 * deep comparisons and tracks traversed objects enabling objects with circular
12147 * references to be compared.
12148 *
12149 * @private
12150 * @param {Object} object The object to compare.
12151 * @param {Object} other The other object to compare.
12152 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
12153 * @param {Function} customizer The function to customize comparisons.
12154 * @param {Function} equalFunc The function to determine equivalents of values.
12155 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
12156 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
12157 */
12158function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
12159  var objIsArr = isArray(object),
12160      othIsArr = isArray(other),
12161      objTag = objIsArr ? arrayTag : getTag(object),
12162      othTag = othIsArr ? arrayTag : getTag(other);
12163
12164  objTag = objTag == argsTag ? objectTag : objTag;
12165  othTag = othTag == argsTag ? objectTag : othTag;
12166
12167  var objIsObj = objTag == objectTag,
12168      othIsObj = othTag == objectTag,
12169      isSameTag = objTag == othTag;
12170
12171  if (isSameTag && isBuffer(object)) {
12172    if (!isBuffer(other)) {
12173      return false;
12174    }
12175    objIsArr = true;
12176    objIsObj = false;
12177  }
12178  if (isSameTag && !objIsObj) {
12179    stack || (stack = new Stack);
12180    return (objIsArr || isTypedArray(object))
12181      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
12182      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
12183  }
12184  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
12185    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
12186        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
12187
12188    if (objIsWrapped || othIsWrapped) {
12189      var objUnwrapped = objIsWrapped ? object.value() : object,
12190          othUnwrapped = othIsWrapped ? other.value() : other;
12191
12192      stack || (stack = new Stack);
12193      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
12194    }
12195  }
12196  if (!isSameTag) {
12197    return false;
12198  }
12199  stack || (stack = new Stack);
12200  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
12201}
12202
12203module.exports = baseIsEqualDeep;
12204
12205
12206/***/ }),
12207/* 228 */
12208/***/ (function(module, exports, __webpack_require__) {
12209
12210var MapCache = __webpack_require__(51),
12211    setCacheAdd = __webpack_require__(229),
12212    setCacheHas = __webpack_require__(230);
12213
12214/**
12215 *
12216 * Creates an array cache object to store unique values.
12217 *
12218 * @private
12219 * @constructor
12220 * @param {Array} [values] The values to cache.
12221 */
12222function SetCache(values) {
12223  var index = -1,
12224      length = values == null ? 0 : values.length;
12225
12226  this.__data__ = new MapCache;
12227  while (++index < length) {
12228    this.add(values[index]);
12229  }
12230}
12231
12232// Add methods to `SetCache`.
12233SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
12234SetCache.prototype.has = setCacheHas;
12235
12236module.exports = SetCache;
12237
12238
12239/***/ }),
12240/* 229 */
12241/***/ (function(module, exports) {
12242
12243/** Used to stand-in for `undefined` hash values. */
12244var HASH_UNDEFINED = '__lodash_hash_undefined__';
12245
12246/**
12247 * Adds `value` to the array cache.
12248 *
12249 * @private
12250 * @name add
12251 * @memberOf SetCache
12252 * @alias push
12253 * @param {*} value The value to cache.
12254 * @returns {Object} Returns the cache instance.
12255 */
12256function setCacheAdd(value) {
12257  this.__data__.set(value, HASH_UNDEFINED);
12258  return this;
12259}
12260
12261module.exports = setCacheAdd;
12262
12263
12264/***/ }),
12265/* 230 */
12266/***/ (function(module, exports) {
12267
12268/**
12269 * Checks if `value` is in the array cache.
12270 *
12271 * @private
12272 * @name has
12273 * @memberOf SetCache
12274 * @param {*} value The value to search for.
12275 * @returns {number} Returns `true` if `value` is found, else `false`.
12276 */
12277function setCacheHas(value) {
12278  return this.__data__.has(value);
12279}
12280
12281module.exports = setCacheHas;
12282
12283
12284/***/ }),
12285/* 231 */
12286/***/ (function(module, exports) {
12287
12288/**
12289 * A specialized version of `_.some` for arrays without support for iteratee
12290 * shorthands.
12291 *
12292 * @private
12293 * @param {Array} [array] The array to iterate over.
12294 * @param {Function} predicate The function invoked per iteration.
12295 * @returns {boolean} Returns `true` if any element passes the predicate check,
12296 *  else `false`.
12297 */
12298function arraySome(array, predicate) {
12299  var index = -1,
12300      length = array == null ? 0 : array.length;
12301
12302  while (++index < length) {
12303    if (predicate(array[index], index, array)) {
12304      return true;
12305    }
12306  }
12307  return false;
12308}
12309
12310module.exports = arraySome;
12311
12312
12313/***/ }),
12314/* 232 */
12315/***/ (function(module, exports) {
12316
12317/**
12318 * Checks if a `cache` value for `key` exists.
12319 *
12320 * @private
12321 * @param {Object} cache The cache to query.
12322 * @param {string} key The key of the entry to check.
12323 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
12324 */
12325function cacheHas(cache, key) {
12326  return cache.has(key);
12327}
12328
12329module.exports = cacheHas;
12330
12331
12332/***/ }),
12333/* 233 */
12334/***/ (function(module, exports, __webpack_require__) {
12335
12336var Symbol = __webpack_require__(23),
12337    Uint8Array = __webpack_require__(234),
12338    eq = __webpack_require__(49),
12339    equalArrays = __webpack_require__(102),
12340    mapToArray = __webpack_require__(235),
12341    setToArray = __webpack_require__(236);
12342
12343/** Used to compose bitmasks for value comparisons. */
12344var COMPARE_PARTIAL_FLAG = 1,
12345    COMPARE_UNORDERED_FLAG = 2;
12346
12347/** `Object#toString` result references. */
12348var boolTag = '[object Boolean]',
12349    dateTag = '[object Date]',
12350    errorTag = '[object Error]',
12351    mapTag = '[object Map]',
12352    numberTag = '[object Number]',
12353    regexpTag = '[object RegExp]',
12354    setTag = '[object Set]',
12355    stringTag = '[object String]',
12356    symbolTag = '[object Symbol]';
12357
12358var arrayBufferTag = '[object ArrayBuffer]',
12359    dataViewTag = '[object DataView]';
12360
12361/** Used to convert symbols to primitives and strings. */
12362var symbolProto = Symbol ? Symbol.prototype : undefined,
12363    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
12364
12365/**
12366 * A specialized version of `baseIsEqualDeep` for comparing objects of
12367 * the same `toStringTag`.
12368 *
12369 * **Note:** This function only supports comparing values with tags of
12370 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
12371 *
12372 * @private
12373 * @param {Object} object The object to compare.
12374 * @param {Object} other The other object to compare.
12375 * @param {string} tag The `toStringTag` of the objects to compare.
12376 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
12377 * @param {Function} customizer The function to customize comparisons.
12378 * @param {Function} equalFunc The function to determine equivalents of values.
12379 * @param {Object} stack Tracks traversed `object` and `other` objects.
12380 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
12381 */
12382function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
12383  switch (tag) {
12384    case dataViewTag:
12385      if ((object.byteLength != other.byteLength) ||
12386          (object.byteOffset != other.byteOffset)) {
12387        return false;
12388      }
12389      object = object.buffer;
12390      other = other.buffer;
12391
12392    case arrayBufferTag:
12393      if ((object.byteLength != other.byteLength) ||
12394          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
12395        return false;
12396      }
12397      return true;
12398
12399    case boolTag:
12400    case dateTag:
12401    case numberTag:
12402      // Coerce booleans to `1` or `0` and dates to milliseconds.
12403      // Invalid dates are coerced to `NaN`.
12404      return eq(+object, +other);
12405
12406    case errorTag:
12407      return object.name == other.name && object.message == other.message;
12408
12409    case regexpTag:
12410    case stringTag:
12411      // Coerce regexes to strings and treat strings, primitives and objects,
12412      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
12413      // for more details.
12414      return object == (other + '');
12415
12416    case mapTag:
12417      var convert = mapToArray;
12418
12419    case setTag:
12420      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
12421      convert || (convert = setToArray);
12422
12423      if (object.size != other.size && !isPartial) {
12424        return false;
12425      }
12426      // Assume cyclic values are equal.
12427      var stacked = stack.get(object);
12428      if (stacked) {
12429        return stacked == other;
12430      }
12431      bitmask |= COMPARE_UNORDERED_FLAG;
12432
12433      // Recursively compare objects (susceptible to call stack limits).
12434      stack.set(object, other);
12435      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
12436      stack['delete'](object);
12437      return result;
12438
12439    case symbolTag:
12440      if (symbolValueOf) {
12441        return symbolValueOf.call(object) == symbolValueOf.call(other);
12442      }
12443  }
12444  return false;
12445}
12446
12447module.exports = equalByTag;
12448
12449
12450/***/ }),
12451/* 234 */
12452/***/ (function(module, exports, __webpack_require__) {
12453
12454var root = __webpack_require__(6);
12455
12456/** Built-in value references. */
12457var Uint8Array = root.Uint8Array;
12458
12459module.exports = Uint8Array;
12460
12461
12462/***/ }),
12463/* 235 */
12464/***/ (function(module, exports) {
12465
12466/**
12467 * Converts `map` to its key-value pairs.
12468 *
12469 * @private
12470 * @param {Object} map The map to convert.
12471 * @returns {Array} Returns the key-value pairs.
12472 */
12473function mapToArray(map) {
12474  var index = -1,
12475      result = Array(map.size);
12476
12477  map.forEach(function(value, key) {
12478    result[++index] = [key, value];
12479  });
12480  return result;
12481}
12482
12483module.exports = mapToArray;
12484
12485
12486/***/ }),
12487/* 236 */
12488/***/ (function(module, exports) {
12489
12490/**
12491 * Converts `set` to an array of its values.
12492 *
12493 * @private
12494 * @param {Object} set The set to convert.
12495 * @returns {Array} Returns the values.
12496 */
12497function setToArray(set) {
12498  var index = -1,
12499      result = Array(set.size);
12500
12501  set.forEach(function(value) {
12502    result[++index] = value;
12503  });
12504  return result;
12505}
12506
12507module.exports = setToArray;
12508
12509
12510/***/ }),
12511/* 237 */
12512/***/ (function(module, exports, __webpack_require__) {
12513
12514var getAllKeys = __webpack_require__(238);
12515
12516/** Used to compose bitmasks for value comparisons. */
12517var COMPARE_PARTIAL_FLAG = 1;
12518
12519/** Used for built-in method references. */
12520var objectProto = Object.prototype;
12521
12522/** Used to check objects for own properties. */
12523var hasOwnProperty = objectProto.hasOwnProperty;
12524
12525/**
12526 * A specialized version of `baseIsEqualDeep` for objects with support for
12527 * partial deep comparisons.
12528 *
12529 * @private
12530 * @param {Object} object The object to compare.
12531 * @param {Object} other The other object to compare.
12532 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
12533 * @param {Function} customizer The function to customize comparisons.
12534 * @param {Function} equalFunc The function to determine equivalents of values.
12535 * @param {Object} stack Tracks traversed `object` and `other` objects.
12536 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
12537 */
12538function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
12539  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
12540      objProps = getAllKeys(object),
12541      objLength = objProps.length,
12542      othProps = getAllKeys(other),
12543      othLength = othProps.length;
12544
12545  if (objLength != othLength && !isPartial) {
12546    return false;
vendor: 1,075 bytes, lines 12547-12581
12547  }
12548  var index = objLength;
12549  while (index--) {
12550    var key = objProps[index];
12551    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
12552      return false;
12553    }
12554  }
12555  // Check that cyclic values are equal.
12556  var objStacked = stack.get(object);
12557  var othStacked = stack.get(other);
12558  if (objStacked && othStacked) {
12559    return objStacked == other && othStacked == object;
12560  }
12561  var result = true;
12562  stack.set(object, other);
12563  stack.set(other, object);
12564
12565  var skipCtor = isPartial;
12566  while (++index < objLength) {
12567    key = objProps[index];
12568    var objValue = object[key],
12569        othValue = other[key];
12570
12571    if (customizer) {
12572      var compared = isPartial
12573        ? customizer(othValue, objValue, key, other, object, stack)
12574        : customizer(objValue, othValue, key, object, other, stack);
12575    }
12576    // Recursively compare objects (susceptible to call stack limits).
12577    if (!(compared === undefined
12578          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
12579          : compared
12580        )) {
12581      result = false;
vendor: 10,628 bytes, lines 12582-12989
12582      break;
12583    }
12584    skipCtor || (skipCtor = key == 'constructor');
12585  }
12586  if (result && !skipCtor) {
12587    var objCtor = object.constructor,
12588        othCtor = other.constructor;
12589
12590    // Non `Object` object instances with different constructors are not equal.
12591    if (objCtor != othCtor &&
12592        ('constructor' in object && 'constructor' in other) &&
12593        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
12594          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
12595      result = false;
12596    }
12597  }
12598  stack['delete'](object);
12599  stack['delete'](other);
12600  return result;
12601}
12602
12603module.exports = equalObjects;
12604
12605
12606/***/ }),
12607/* 238 */
12608/***/ (function(module, exports, __webpack_require__) {
12609
12610var baseGetAllKeys = __webpack_require__(103),
12611    getSymbols = __webpack_require__(104),
12612    keys = __webpack_require__(35);
12613
12614/**
12615 * Creates an array of own enumerable property names and symbols of `object`.
12616 *
12617 * @private
12618 * @param {Object} object The object to query.
12619 * @returns {Array} Returns the array of property names and symbols.
12620 */
12621function getAllKeys(object) {
12622  return baseGetAllKeys(object, keys, getSymbols);
12623}
12624
12625module.exports = getAllKeys;
12626
12627
12628/***/ }),
12629/* 239 */
12630/***/ (function(module, exports) {
12631
12632/**
12633 * A specialized version of `_.filter` for arrays without support for
12634 * iteratee shorthands.
12635 *
12636 * @private
12637 * @param {Array} [array] The array to iterate over.
12638 * @param {Function} predicate The function invoked per iteration.
12639 * @returns {Array} Returns the new filtered array.
12640 */
12641function arrayFilter(array, predicate) {
12642  var index = -1,
12643      length = array == null ? 0 : array.length,
12644      resIndex = 0,
12645      result = [];
12646
12647  while (++index < length) {
12648    var value = array[index];
12649    if (predicate(value, index, array)) {
12650      result[resIndex++] = value;
12651    }
12652  }
12653  return result;
12654}
12655
12656module.exports = arrayFilter;
12657
12658
12659/***/ }),
12660/* 240 */
12661/***/ (function(module, exports) {
12662
12663/**
12664 * The base implementation of `_.times` without support for iteratee shorthands
12665 * or max array length checks.
12666 *
12667 * @private
12668 * @param {number} n The number of times to invoke `iteratee`.
12669 * @param {Function} iteratee The function invoked per iteration.
12670 * @returns {Array} Returns the array of results.
12671 */
12672function baseTimes(n, iteratee) {
12673  var index = -1,
12674      result = Array(n);
12675
12676  while (++index < n) {
12677    result[index] = iteratee(index);
12678  }
12679  return result;
12680}
12681
12682module.exports = baseTimes;
12683
12684
12685/***/ }),
12686/* 241 */
12687/***/ (function(module, exports, __webpack_require__) {
12688
12689var baseGetTag = __webpack_require__(16),
12690    isObjectLike = __webpack_require__(12);
12691
12692/** `Object#toString` result references. */
12693var argsTag = '[object Arguments]';
12694
12695/**
12696 * The base implementation of `_.isArguments`.
12697 *
12698 * @private
12699 * @param {*} value The value to check.
12700 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
12701 */
12702function baseIsArguments(value) {
12703  return isObjectLike(value) && baseGetTag(value) == argsTag;
12704}
12705
12706module.exports = baseIsArguments;
12707
12708
12709/***/ }),
12710/* 242 */
12711/***/ (function(module, exports) {
12712
12713/**
12714 * This method returns `false`.
12715 *
12716 * @static
12717 * @memberOf _
12718 * @since 4.13.0
12719 * @category Util
12720 * @returns {boolean} Returns `false`.
12721 * @example
12722 *
12723 * _.times(2, _.stubFalse);
12724 * // => [false, false]
12725 */
12726function stubFalse() {
12727  return false;
12728}
12729
12730module.exports = stubFalse;
12731
12732
12733/***/ }),
12734/* 243 */
12735/***/ (function(module, exports, __webpack_require__) {
12736
12737var baseGetTag = __webpack_require__(16),
12738    isLength = __webpack_require__(56),
12739    isObjectLike = __webpack_require__(12);
12740
12741/** `Object#toString` result references. */
12742var argsTag = '[object Arguments]',
12743    arrayTag = '[object Array]',
12744    boolTag = '[object Boolean]',
12745    dateTag = '[object Date]',
12746    errorTag = '[object Error]',
12747    funcTag = '[object Function]',
12748    mapTag = '[object Map]',
12749    numberTag = '[object Number]',
12750    objectTag = '[object Object]',
12751    regexpTag = '[object RegExp]',
12752    setTag = '[object Set]',
12753    stringTag = '[object String]',
12754    weakMapTag = '[object WeakMap]';
12755
12756var arrayBufferTag = '[object ArrayBuffer]',
12757    dataViewTag = '[object DataView]',
12758    float32Tag = '[object Float32Array]',
12759    float64Tag = '[object Float64Array]',
12760    int8Tag = '[object Int8Array]',
12761    int16Tag = '[object Int16Array]',
12762    int32Tag = '[object Int32Array]',
12763    uint8Tag = '[object Uint8Array]',
12764    uint8ClampedTag = '[object Uint8ClampedArray]',
12765    uint16Tag = '[object Uint16Array]',
12766    uint32Tag = '[object Uint32Array]';
12767
12768/** Used to identify `toStringTag` values of typed arrays. */
12769var typedArrayTags = {};
12770typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
12771typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
12772typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
12773typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
12774typedArrayTags[uint32Tag] = true;
12775typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
12776typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
12777typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
12778typedArrayTags[errorTag] = typedArrayTags[funcTag] =
12779typedArrayTags[mapTag] = typedArrayTags[numberTag] =
12780typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
12781typedArrayTags[setTag] = typedArrayTags[stringTag] =
12782typedArrayTags[weakMapTag] = false;
12783
12784/**
12785 * The base implementation of `_.isTypedArray` without Node.js optimizations.
12786 *
12787 * @private
12788 * @param {*} value The value to check.
12789 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
12790 */
12791function baseIsTypedArray(value) {
12792  return isObjectLike(value) &&
12793    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
12794}
12795
12796module.exports = baseIsTypedArray;
12797
12798
12799/***/ }),
12800/* 244 */
12801/***/ (function(module, exports) {
12802
12803/**
12804 * The base implementation of `_.unary` without support for storing metadata.
12805 *
12806 * @private
12807 * @param {Function} func The function to cap arguments for.
12808 * @returns {Function} Returns the new capped function.
12809 */
12810function baseUnary(func) {
12811  return function(value) {
12812    return func(value);
12813  };
12814}
12815
12816module.exports = baseUnary;
12817
12818
12819/***/ }),
12820/* 245 */
12821/***/ (function(module, exports, __webpack_require__) {
12822
12823/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(99);
12824
12825/** Detect free variable `exports`. */
12826var freeExports =  true && exports && !exports.nodeType && exports;
12827
12828/** Detect free variable `module`. */
12829var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
12830
12831/** Detect the popular CommonJS extension `module.exports`. */
12832var moduleExports = freeModule && freeModule.exports === freeExports;
12833
12834/** Detect free variable `process` from Node.js. */
12835var freeProcess = moduleExports && freeGlobal.process;
12836
12837/** Used to access faster Node.js helpers. */
12838var nodeUtil = (function() {
12839  try {
12840    // Use `util.types` for Node.js 10+.
12841    var types = freeModule && freeModule.require && freeModule.require('util').types;
12842
12843    if (types) {
12844      return types;
12845    }
12846
12847    // Legacy `process.binding('util')` for Node.js < 10.
12848    return freeProcess && freeProcess.binding && freeProcess.binding('util');
12849  } catch (e) {}
12850}());
12851
12852module.exports = nodeUtil;
12853
12854/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(107)(module)))
12855
12856/***/ }),
12857/* 246 */
12858/***/ (function(module, exports, __webpack_require__) {
12859
12860var overArg = __webpack_require__(108);
12861
12862/* Built-in method references for those with the same name as other `lodash` methods. */
12863var nativeKeys = overArg(Object.keys, Object);
12864
12865module.exports = nativeKeys;
12866
12867
12868/***/ }),
12869/* 247 */
12870/***/ (function(module, exports, __webpack_require__) {
12871
12872var getNative = __webpack_require__(11),
12873    root = __webpack_require__(6);
12874
12875/* Built-in method references that are verified to be native. */
12876var DataView = getNative(root, 'DataView');
12877
12878module.exports = DataView;
12879
12880
12881/***/ }),
12882/* 248 */
12883/***/ (function(module, exports, __webpack_require__) {
12884
12885var getNative = __webpack_require__(11),
12886    root = __webpack_require__(6);
12887
12888/* Built-in method references that are verified to be native. */
12889var Promise = getNative(root, 'Promise');
12890
12891module.exports = Promise;
12892
12893
12894/***/ }),
12895/* 249 */
12896/***/ (function(module, exports, __webpack_require__) {
12897
12898var getNative = __webpack_require__(11),
12899    root = __webpack_require__(6);
12900
12901/* Built-in method references that are verified to be native. */
12902var Set = getNative(root, 'Set');
12903
12904module.exports = Set;
12905
12906
12907/***/ }),
12908/* 250 */
12909/***/ (function(module, exports, __webpack_require__) {
12910
12911var isStrictComparable = __webpack_require__(110),
12912    keys = __webpack_require__(35);
12913
12914/**
12915 * Gets the property names, values, and compare flags of `object`.
12916 *
12917 * @private
12918 * @param {Object} object The object to query.
12919 * @returns {Array} Returns the match data of `object`.
12920 */
12921function getMatchData(object) {
12922  var result = keys(object),
12923      length = result.length;
12924
12925  while (length--) {
12926    var key = result[length],
12927        value = object[key];
12928
12929    result[length] = [key, value, isStrictComparable(value)];
12930  }
12931  return result;
12932}
12933
12934module.exports = getMatchData;
12935
12936
12937/***/ }),
12938/* 251 */
12939/***/ (function(module, exports, __webpack_require__) {
12940
12941var baseIsEqual = __webpack_require__(101),
12942    get = __webpack_require__(60),
12943    hasIn = __webpack_require__(257),
12944    isKey = __webpack_require__(62),
12945    isStrictComparable = __webpack_require__(110),
12946    matchesStrictComparable = __webpack_require__(111),
12947    toKey = __webpack_require__(24);
12948
12949/** Used to compose bitmasks for value comparisons. */
12950var COMPARE_PARTIAL_FLAG = 1,
12951    COMPARE_UNORDERED_FLAG = 2;
12952
12953/**
12954 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
12955 *
12956 * @private
12957 * @param {string} path The path of the property to get.
12958 * @param {*} srcValue The value to match.
12959 * @returns {Function} Returns the new spec function.
12960 */
12961function baseMatchesProperty(path, srcValue) {
12962  if (isKey(path) && isStrictComparable(srcValue)) {
12963    return matchesStrictComparable(toKey(path), srcValue);
12964  }
12965  return function(object) {
12966    var objValue = get(object, path);
12967    return (objValue === undefined && objValue === srcValue)
12968      ? hasIn(object, path)
12969      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
12970  };
12971}
12972
12973module.exports = baseMatchesProperty;
12974
12975
12976/***/ }),
12977/* 252 */
12978/***/ (function(module, exports, __webpack_require__) {
12979
12980var memoizeCapped = __webpack_require__(253);
12981
12982/** Used to match property names within property paths. */
12983var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
12984
12985/** Used to match backslashes in property paths. */
12986var reEscapeChar = /\\(\\)?/g;
12987
12988/**
12989 * Converts `string` to a property path array.
vendor: 5,053 bytes, lines 12990-13183
12990 *
12991 * @private
12992 * @param {string} string The string to convert.
12993 * @returns {Array} Returns the property path array.
12994 */
12995var stringToPath = memoizeCapped(function(string) {
12996  var result = [];
12997  if (string.charCodeAt(0) === 46 /* . */) {
12998    result.push('');
12999  }
13000  string.replace(rePropName, function(match, number, quote, subString) {
13001    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
13002  });
13003  return result;
13004});
13005
13006module.exports = stringToPath;
13007
13008
13009/***/ }),
13010/* 253 */
13011/***/ (function(module, exports, __webpack_require__) {
13012
13013var memoize = __webpack_require__(254);
13014
13015/** Used as the maximum memoize cache size. */
13016var MAX_MEMOIZE_SIZE = 500;
13017
13018/**
13019 * A specialized version of `_.memoize` which clears the memoized function's
13020 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
13021 *
13022 * @private
13023 * @param {Function} func The function to have its output memoized.
13024 * @returns {Function} Returns the new memoized function.
13025 */
13026function memoizeCapped(func) {
13027  var result = memoize(func, function(key) {
13028    if (cache.size === MAX_MEMOIZE_SIZE) {
13029      cache.clear();
13030    }
13031    return key;
13032  });
13033
13034  var cache = result.cache;
13035  return result;
13036}
13037
13038module.exports = memoizeCapped;
13039
13040
13041/***/ }),
13042/* 254 */
13043/***/ (function(module, exports, __webpack_require__) {
13044
13045var MapCache = __webpack_require__(51);
13046
13047/** Error message constants. */
13048var FUNC_ERROR_TEXT = 'Expected a function';
13049
13050/**
13051 * Creates a function that memoizes the result of `func`. If `resolver` is
13052 * provided, it determines the cache key for storing the result based on the
13053 * arguments provided to the memoized function. By default, the first argument
13054 * provided to the memoized function is used as the map cache key. The `func`
13055 * is invoked with the `this` binding of the memoized function.
13056 *
13057 * **Note:** The cache is exposed as the `cache` property on the memoized
13058 * function. Its creation may be customized by replacing the `_.memoize.Cache`
13059 * constructor with one whose instances implement the
13060 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
13061 * method interface of `clear`, `delete`, `get`, `has`, and `set`.
13062 *
13063 * @static
13064 * @memberOf _
13065 * @since 0.1.0
13066 * @category Function
13067 * @param {Function} func The function to have its output memoized.
13068 * @param {Function} [resolver] The function to resolve the cache key.
13069 * @returns {Function} Returns the new memoized function.
13070 * @example
13071 *
13072 * var object = { 'a': 1, 'b': 2 };
13073 * var other = { 'c': 3, 'd': 4 };
13074 *
13075 * var values = _.memoize(_.values);
13076 * values(object);
13077 * // => [1, 2]
13078 *
13079 * values(other);
13080 * // => [3, 4]
13081 *
13082 * object.a = 2;
13083 * values(object);
13084 * // => [1, 2]
13085 *
13086 * // Modify the result cache.
13087 * values.cache.set(object, ['a', 'b']);
13088 * values(object);
13089 * // => ['a', 'b']
13090 *
13091 * // Replace `_.memoize.Cache`.
13092 * _.memoize.Cache = WeakMap;
13093 */
13094function memoize(func, resolver) {
13095  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
13096    throw new TypeError(FUNC_ERROR_TEXT);
13097  }
13098  var memoized = function() {
13099    var args = arguments,
13100        key = resolver ? resolver.apply(this, args) : args[0],
13101        cache = memoized.cache;
13102
13103    if (cache.has(key)) {
13104      return cache.get(key);
13105    }
13106    var result = func.apply(this, args);
13107    memoized.cache = cache.set(key, result) || cache;
13108    return result;
13109  };
13110  memoized.cache = new (memoize.Cache || MapCache);
13111  return memoized;
13112}
13113
13114// Expose `MapCache`.
13115memoize.Cache = MapCache;
13116
13117module.exports = memoize;
13118
13119
13120/***/ }),
13121/* 255 */
13122/***/ (function(module, exports, __webpack_require__) {
13123
13124var baseToString = __webpack_require__(256);
13125
13126/**
13127 * Converts `value` to a string. An empty string is returned for `null`
13128 * and `undefined` values. The sign of `-0` is preserved.
13129 *
13130 * @static
13131 * @memberOf _
13132 * @since 4.0.0
13133 * @category Lang
13134 * @param {*} value The value to convert.
13135 * @returns {string} Returns the converted string.
13136 * @example
13137 *
13138 * _.toString(null);
13139 * // => ''
13140 *
13141 * _.toString(-0);
13142 * // => '-0'
13143 *
13144 * _.toString([1, 2, 3]);
13145 * // => '1,2,3'
13146 */
13147function toString(value) {
13148  return value == null ? '' : baseToString(value);
13149}
13150
13151module.exports = toString;
13152
13153
13154/***/ }),
13155/* 256 */
13156/***/ (function(module, exports, __webpack_require__) {
13157
13158var Symbol = __webpack_require__(23),
13159    arrayMap = __webpack_require__(112),
13160    isArray = __webpack_require__(2),
13161    isSymbol = __webpack_require__(38);
13162
13163/** Used as references for various `Number` constants. */
13164var INFINITY = 1 / 0;
13165
13166/** Used to convert symbols to primitives and strings. */
13167var symbolProto = Symbol ? Symbol.prototype : undefined,
13168    symbolToString = symbolProto ? symbolProto.toString : undefined;
13169
13170/**
13171 * The base implementation of `_.toString` which doesn't convert nullish
13172 * values to empty strings.
13173 *
13174 * @private
13175 * @param {*} value The value to process.
13176 * @returns {string} Returns the string.
13177 */
13178function baseToString(value) {
13179  // Exit early for strings to avoid a performance hit in some environments.
13180  if (typeof value == 'string') {
13181    return value;
13182  }
13183  if (isArray(value)) {
vendor: 2,364 bytes, lines 13184-13281
13184    // Recursively convert values (susceptible to call stack limits).
13185    return arrayMap(value, baseToString) + '';
13186  }
13187  if (isSymbol(value)) {
13188    return symbolToString ? symbolToString.call(value) : '';
13189  }
13190  var result = (value + '');
13191  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
13192}
13193
13194module.exports = baseToString;
13195
13196
13197/***/ }),
13198/* 257 */
13199/***/ (function(module, exports, __webpack_require__) {
13200
13201var baseHasIn = __webpack_require__(258),
13202    hasPath = __webpack_require__(259);
13203
13204/**
13205 * Checks if `path` is a direct or inherited property of `object`.
13206 *
13207 * @static
13208 * @memberOf _
13209 * @since 4.0.0
13210 * @category Object
13211 * @param {Object} object The object to query.
13212 * @param {Array|string} path The path to check.
13213 * @returns {boolean} Returns `true` if `path` exists, else `false`.
13214 * @example
13215 *
13216 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
13217 *
13218 * _.hasIn(object, 'a');
13219 * // => true
13220 *
13221 * _.hasIn(object, 'a.b');
13222 * // => true
13223 *
13224 * _.hasIn(object, ['a', 'b']);
13225 * // => true
13226 *
13227 * _.hasIn(object, 'b');
13228 * // => false
13229 */
13230function hasIn(object, path) {
13231  return object != null && hasPath(object, path, baseHasIn);
13232}
13233
13234module.exports = hasIn;
13235
13236
13237/***/ }),
13238/* 258 */
13239/***/ (function(module, exports) {
13240
13241/**
13242 * The base implementation of `_.hasIn` without support for deep paths.
13243 *
13244 * @private
13245 * @param {Object} [object] The object to query.
13246 * @param {Array|string} key The key to check.
13247 * @returns {boolean} Returns `true` if `key` exists, else `false`.
13248 */
13249function baseHasIn(object, key) {
13250  return object != null && key in Object(object);
13251}
13252
13253module.exports = baseHasIn;
13254
13255
13256/***/ }),
13257/* 259 */
13258/***/ (function(module, exports, __webpack_require__) {
13259
13260var castPath = __webpack_require__(37),
13261    isArguments = __webpack_require__(36),
13262    isArray = __webpack_require__(2),
13263    isIndex = __webpack_require__(54),
13264    isLength = __webpack_require__(56),
13265    toKey = __webpack_require__(24);
13266
13267/**
13268 * Checks if `path` exists on `object`.
13269 *
13270 * @private
13271 * @param {Object} object The object to query.
13272 * @param {Array|string} path The path to check.
13273 * @param {Function} hasFunc The function to check properties.
13274 * @returns {boolean} Returns `true` if `path` exists, else `false`.
13275 */
13276function hasPath(object, path, hasFunc) {
13277  path = castPath(path, object);
13278
13279  var index = -1,
13280      length = path.length,
13281      result = false;
vendor: 4,842 bytes, lines 13282-13487
13282
13283  while (++index < length) {
13284    var key = toKey(path[index]);
13285    if (!(result = object != null && hasFunc(object, key))) {
13286      break;
13287    }
13288    object = object[key];
13289  }
13290  if (result || ++index != length) {
13291    return result;
13292  }
13293  length = object == null ? 0 : object.length;
13294  return !!length && isLength(length) && isIndex(key, length) &&
13295    (isArray(object) || isArguments(object));
13296}
13297
13298module.exports = hasPath;
13299
13300
13301/***/ }),
13302/* 260 */
13303/***/ (function(module, exports, __webpack_require__) {
13304
13305var baseProperty = __webpack_require__(113),
13306    basePropertyDeep = __webpack_require__(261),
13307    isKey = __webpack_require__(62),
13308    toKey = __webpack_require__(24);
13309
13310/**
13311 * Creates a function that returns the value at `path` of a given object.
13312 *
13313 * @static
13314 * @memberOf _
13315 * @since 2.4.0
13316 * @category Util
13317 * @param {Array|string} path The path of the property to get.
13318 * @returns {Function} Returns the new accessor function.
13319 * @example
13320 *
13321 * var objects = [
13322 *   { 'a': { 'b': 2 } },
13323 *   { 'a': { 'b': 1 } }
13324 * ];
13325 *
13326 * _.map(objects, _.property('a.b'));
13327 * // => [2, 1]
13328 *
13329 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
13330 * // => [1, 2]
13331 */
13332function property(path) {
13333  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
13334}
13335
13336module.exports = property;
13337
13338
13339/***/ }),
13340/* 261 */
13341/***/ (function(module, exports, __webpack_require__) {
13342
13343var baseGet = __webpack_require__(61);
13344
13345/**
13346 * A specialized version of `baseProperty` which supports deep paths.
13347 *
13348 * @private
13349 * @param {Array|string} path The path of the property to get.
13350 * @returns {Function} Returns the new accessor function.
13351 */
13352function basePropertyDeep(path) {
13353  return function(object) {
13354    return baseGet(object, path);
13355  };
13356}
13357
13358module.exports = basePropertyDeep;
13359
13360
13361/***/ }),
13362/* 262 */
13363/***/ (function(module, exports, __webpack_require__) {
13364
13365var baseFindIndex = __webpack_require__(114),
13366    baseIteratee = __webpack_require__(10),
13367    toInteger = __webpack_require__(115);
13368
13369/* Built-in method references for those with the same name as other `lodash` methods. */
13370var nativeMax = Math.max;
13371
13372/**
13373 * This method is like `_.find` except that it returns the index of the first
13374 * element `predicate` returns truthy for instead of the element itself.
13375 *
13376 * @static
13377 * @memberOf _
13378 * @since 1.1.0
13379 * @category Array
13380 * @param {Array} array The array to inspect.
13381 * @param {Function} [predicate=_.identity] The function invoked per iteration.
13382 * @param {number} [fromIndex=0] The index to search from.
13383 * @returns {number} Returns the index of the found element, else `-1`.
13384 * @example
13385 *
13386 * var users = [
13387 *   { 'user': 'barney',  'active': false },
13388 *   { 'user': 'fred',    'active': false },
13389 *   { 'user': 'pebbles', 'active': true }
13390 * ];
13391 *
13392 * _.findIndex(users, function(o) { return o.user == 'barney'; });
13393 * // => 0
13394 *
13395 * // The `_.matches` iteratee shorthand.
13396 * _.findIndex(users, { 'user': 'fred', 'active': false });
13397 * // => 1
13398 *
13399 * // The `_.matchesProperty` iteratee shorthand.
13400 * _.findIndex(users, ['active', false]);
13401 * // => 0
13402 *
13403 * // The `_.property` iteratee shorthand.
13404 * _.findIndex(users, 'active');
13405 * // => 2
13406 */
13407function findIndex(array, predicate, fromIndex) {
13408  var length = array == null ? 0 : array.length;
13409  if (!length) {
13410    return -1;
13411  }
13412  var index = fromIndex == null ? 0 : toInteger(fromIndex);
13413  if (index < 0) {
13414    index = nativeMax(length + index, 0);
13415  }
13416  return baseFindIndex(array, baseIteratee(predicate, 3), index);
13417}
13418
13419module.exports = findIndex;
13420
13421
13422/***/ }),
13423/* 263 */
13424/***/ (function(module, exports, __webpack_require__) {
13425
13426var toNumber = __webpack_require__(64);
13427
13428/** Used as references for various `Number` constants. */
13429var INFINITY = 1 / 0,
13430    MAX_INTEGER = 1.7976931348623157e+308;
13431
13432/**
13433 * Converts `value` to a finite number.
13434 *
13435 * @static
13436 * @memberOf _
13437 * @since 4.12.0
13438 * @category Lang
13439 * @param {*} value The value to convert.
13440 * @returns {number} Returns the converted number.
13441 * @example
13442 *
13443 * _.toFinite(3.2);
13444 * // => 3.2
13445 *
13446 * _.toFinite(Number.MIN_VALUE);
13447 * // => 5e-324
13448 *
13449 * _.toFinite(Infinity);
13450 * // => 1.7976931348623157e+308
13451 *
13452 * _.toFinite('3.2');
13453 * // => 3.2
13454 */
13455function toFinite(value) {
13456  if (!value) {
13457    return value === 0 ? value : 0;
13458  }
13459  value = toNumber(value);
13460  if (value === INFINITY || value === -INFINITY) {
13461    var sign = (value < 0 ? -1 : 1);
13462    return sign * MAX_INTEGER;
13463  }
13464  return value === value ? value : 0;
13465}
13466
13467module.exports = toFinite;
13468
13469
13470/***/ }),
13471/* 264 */
13472/***/ (function(module, exports, __webpack_require__) {
13473
13474var trimmedEndIndex = __webpack_require__(265);
13475
13476/** Used to match leading whitespace. */
13477var reTrimStart = /^\s+/;
13478
13479/**
13480 * The base implementation of `_.trim`.
13481 *
13482 * @private
13483 * @param {string} string The string to trim.
13484 * @returns {string} Returns the trimmed string.
13485 */
13486function baseTrim(string) {
13487  return string
13488    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
13489    : string;
13490}
13491
13492module.exports = baseTrim;
13493
13494
13495/***/ }),
13496/* 265 */
13497/***/ (function(module, exports) {
13498
13499/** Used to match a single whitespace character. */
13500var reWhitespace = /\s/;
13501
13502/**
13503 * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
13504 * character of `string`.
13505 *
13506 * @private
13507 * @param {string} string The string to inspect.
13508 * @returns {number} Returns the index of the last non-whitespace character.
13509 */
13510function trimmedEndIndex(string) {
13511  var index = string.length;
13512
13513  while (index-- && reWhitespace.test(string.charAt(index))) {}
13514  return index;
13515}
13516
13517module.exports = trimmedEndIndex;
13518
13519
13520/***/ }),
13521/* 266 */
13522/***/ (function(module, exports) {
13523
13524function _arrayWithoutHoles(arr) {
13525  if (Array.isArray(arr)) {
13526    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
13527      arr2[i] = arr[i];
13528    }
13529
13530    return arr2;
13531  }
13532}
13533
13534module.exports = _arrayWithoutHoles;
13535
13536/***/ }),
13537/* 267 */
13538/***/ (function(module, exports) {
13539
13540function _iterableToArray(iter) {
13541  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
13542}
13543
13544module.exports = _iterableToArray;
13545
13546/***/ }),
13547/* 268 */
13548/***/ (function(module, exports) {
13549
13550function _nonIterableSpread() {
13551  throw new TypeError("Invalid attempt to spread non-iterable instance");
13552}
13553
13554module.exports = _nonIterableSpread;
13555
13556/***/ }),
13557/* 269 */
13558/***/ (function(module, exports, __webpack_require__) {
13559
13560"use strict";
13561
13562
13563Object.defineProperty(exports, "__esModule", {
13564  value: true
13565});
13566exports.createElementState = createElementState;
13567exports.mergeActionState = mergeActionState;
13568exports.ixElements = void 0;
13569
13570var _timm = __webpack_require__(22);
13571
13572var _constants = __webpack_require__(4);
13573
13574var _constants$IX2EngineC = _constants.IX2EngineConstants,
13575    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
13576    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
13577    ABSTRACT_NODE = _constants$IX2EngineC.ABSTRACT_NODE,
13578    CONFIG_X_VALUE = _constants$IX2EngineC.CONFIG_X_VALUE,
13579    CONFIG_Y_VALUE = _constants$IX2EngineC.CONFIG_Y_VALUE,
13580    CONFIG_Z_VALUE = _constants$IX2EngineC.CONFIG_Z_VALUE,
13581    CONFIG_VALUE = _constants$IX2EngineC.CONFIG_VALUE,
13582    CONFIG_X_UNIT = _constants$IX2EngineC.CONFIG_X_UNIT,
13583    CONFIG_Y_UNIT = _constants$IX2EngineC.CONFIG_Y_UNIT,
13584    CONFIG_Z_UNIT = _constants$IX2EngineC.CONFIG_Z_UNIT,
13585    CONFIG_UNIT = _constants$IX2EngineC.CONFIG_UNIT;
13586var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
13587    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
13588    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
13589    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED;
13590var initialState = {};
13591var refState = 'refState';
13592
13593var ixElements = function ixElements() {
13594  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
13595  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13596
13597  switch (action.type) {
13598    case IX2_SESSION_STOPPED:
13599      {
13600        return initialState;
13601      }
13602
13603    case IX2_INSTANCE_ADDED:
13604      {
13605        var _action$payload = action.payload,
13606            elementId = _action$payload.elementId,
13607            ref = _action$payload.element,
13608            origin = _action$payload.origin,
13609            actionItem = _action$payload.actionItem,
13610            refType = _action$payload.refType;
13611        var actionTypeId = actionItem.actionTypeId;
13612        var newState = state; // Create new ref entry if it doesn't exist
13613
13614        if ((0, _timm.getIn)(newState, [elementId, ref]) !== ref) {
13615          newState = createElementState(newState, ref, refType, elementId, actionItem);
13616        } // Merge origin values into ref state
13617
13618
13619        return mergeActionState(newState, elementId, actionTypeId, origin, actionItem);
13620      }
13621
13622    case IX2_ELEMENT_STATE_CHANGED:
13623      {
13624        var _action$payload2 = action.payload,
13625            _elementId = _action$payload2.elementId,
13626            _actionTypeId = _action$payload2.actionTypeId,
13627            current = _action$payload2.current,
13628            _actionItem = _action$payload2.actionItem;
13629        return mergeActionState(state, _elementId, _actionTypeId, current, _actionItem);
13630      }
13631
13632    default:
13633      {
13634        return state;
13635      }
13636  }
13637};
13638
13639exports.ixElements = ixElements;
13640
13641function createElementState(state, ref, refType, elementId, actionItem) {
13642  var refId = refType === PLAIN_OBJECT ? (0, _timm.getIn)(actionItem, ['config', 'target', 'objectId']) : null;
13643  return (0, _timm.mergeIn)(state, [elementId], {
13644    id: elementId,
13645    ref: ref,
13646    refId: refId,
13647    refType: refType
13648  });
13649}
13650
13651function mergeActionState(state, elementId, actionTypeId, actionState, // FIXME: weak type is used
13652actionItem) {
13653  var units = pickUnits(actionItem);
13654  var mergePath = [elementId, refState, actionTypeId];
13655  return (0, _timm.mergeIn)(state, mergePath, actionState, units);
13656}
13657
13658var valueUnitPairs = [[CONFIG_X_VALUE, CONFIG_X_UNIT], [CONFIG_Y_VALUE, CONFIG_Y_UNIT], [CONFIG_Z_VALUE, CONFIG_Z_UNIT], [CONFIG_VALUE, CONFIG_UNIT]]; // FIXME: weak type is used
13659// eslint-disable-next-line flowtype/no-weak-types
13660
13661function pickUnits(actionItem) {
13662  var config = actionItem.config;
13663  return valueUnitPairs.reduce(function (result, pair) {
13664    var valueKey = pair[0];
13665    var unitKey = pair[1];
13666    var configValue = config[valueKey];
13667    var configUnit = config[unitKey];
13668
13669    if (configValue != null && configUnit != null) {
13670      result[unitKey] = configUnit;
13671    }
13672
13673    return result;
13674  }, {});
13675}
13676
13677/***/ }),
13678/* 270 */
13679/***/ (function(module, exports, __webpack_require__) {
13680
13681"use strict";
13682
13683
13684Object.defineProperty(exports, "__esModule", {
13685  value: true
13686});
13687exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginDuration = exports.getPluginConfig = void 0;
13688/* eslint-env browser */
13689// $FlowFixMe
13690
13691var getPluginConfig = function getPluginConfig(actionItemConfig) {
13692  return actionItemConfig.value;
13693}; // $FlowFixMe
13694
13695
13696exports.getPluginConfig = getPluginConfig;
13697
13698var getPluginDuration = function getPluginDuration(element, actionItem) {
13699  if (actionItem.config.duration !== 'auto') {
13700    return null;
13701  }
13702
13703  var duration = parseFloat(element.getAttribute('data-duration'));
13704
13705  if (duration > 0) {
13706    return duration * 1000;
13707  }
13708
13709  return parseFloat(element.getAttribute('data-default-duration')) * 1000;
13710}; // $FlowFixMe
13711
13712
13713exports.getPluginDuration = getPluginDuration;
13714
13715var getPluginOrigin = function getPluginOrigin(refState) {
13716  return refState || {
13717    value: 0
13718  };
13719}; // $FlowFixMe
13720
13721
13722exports.getPluginOrigin = getPluginOrigin;
13723
13724var getPluginDestination = function getPluginDestination(actionItemConfig) {
13725  return {
13726    value: actionItemConfig.value
13727  };
13728}; // $FlowFixMe
13729
13730
13731exports.getPluginDestination = getPluginDestination;
13732
13733var createPluginInstance = function createPluginInstance(element) {
13734  var instance = window.Webflow.require('lottie').createInstance(element);
13735
13736  instance.stop();
13737  instance.setSubframe(true);
13738  return instance;
13739}; // $FlowFixMe
13740
13741
13742exports.createPluginInstance = createPluginInstance;
13743
13744var renderPlugin = function renderPlugin(pluginInstance, refState, actionItem) {
13745  if (!pluginInstance) {
13746    return;
13747  }
13748
13749  var percent = refState[actionItem.actionTypeId].value / 100;
13750  pluginInstance.goToFrame(pluginInstance.frames * percent);
13751}; // $FlowFixMe
13752
13753
13754exports.renderPlugin = renderPlugin;
13755
13756var clearPlugin = function clearPlugin(element) {
13757  var instance = window.Webflow.require('lottie').createInstance(element);
13758
13759  instance.stop();
13760};
13761
13762exports.clearPlugin = clearPlugin;
13763
13764/***/ }),
13765/* 271 */
13766/***/ (function(module, exports, __webpack_require__) {
13767
13768"use strict";
13769
13770
13771var _interopRequireDefault2 = __webpack_require__(0);
13772
13773var _typeof2 = _interopRequireDefault2(__webpack_require__(13));
13774
13775var _defineProperty2 = _interopRequireDefault2(__webpack_require__(21));
13776
13777var _Object$freeze, _Object$freeze2, _transformDefaults;
13778
13779var _interopRequireDefault = __webpack_require__(0);
13780
13781Object.defineProperty(exports, "__esModule", {
13782  value: true
13783});
13784exports.getInstanceId = getInstanceId;
13785exports.getElementId = getElementId;
13786exports.reifyState = reifyState;
13787exports.observeStore = observeStore;
13788exports.getAffectedElements = getAffectedElements;
13789exports.getComputedStyle = getComputedStyle;
13790exports.getInstanceOrigin = getInstanceOrigin;
13791exports.getDestinationValues = getDestinationValues;
13792exports.getRenderType = getRenderType;
13793exports.getStyleProp = getStyleProp;
13794exports.renderHTMLElement = renderHTMLElement;
13795exports.clearAllStyles = clearAllStyles;
13796exports.cleanupHTMLElement = cleanupHTMLElement;
13797exports.getMaxDurationItemIndex = getMaxDurationItemIndex;
13798exports.getActionListProgress = getActionListProgress;
13799exports.reduceListToGroup = reduceListToGroup;
13800exports.shouldNamespaceEventParameter = shouldNamespaceEventParameter;
13801exports.getNamespacedParameterId = getNamespacedParameterId;
13802exports.shouldAllowMediaQuery = shouldAllowMediaQuery;
13803exports.mediaQueriesEqual = mediaQueriesEqual;
13804exports.stringifyTarget = stringifyTarget;
13805Object.defineProperty(exports, "shallowEqual", {
13806  enumerable: true,
13807  get: function get() {
13808    return _shallowEqual["default"];
13809  }
13810});
13811exports.getItemConfigByKey = void 0;
13812
13813var _defaultTo = _interopRequireDefault(__webpack_require__(272));
13814
13815var _reduce = _interopRequireDefault(__webpack_require__(273));
13816
13817var _findLast = _interopRequireDefault(__webpack_require__(279));
13818
13819var _timm = __webpack_require__(22);
13820
13821var _constants = __webpack_require__(4);
13822
13823var _shallowEqual = _interopRequireDefault(__webpack_require__(281));
13824
13825var _IX2EasingUtils = __webpack_require__(118);
13826
13827var _IX2VanillaPlugins = __webpack_require__(120);
13828
13829var _IX2BrowserSupport = __webpack_require__(48);
13830/* eslint-env browser */
13831
13832
13833var _constants$IX2EngineC = _constants.IX2EngineConstants,
13834    BACKGROUND = _constants$IX2EngineC.BACKGROUND,
13835    TRANSFORM = _constants$IX2EngineC.TRANSFORM,
13836    TRANSLATE_3D = _constants$IX2EngineC.TRANSLATE_3D,
13837    SCALE_3D = _constants$IX2EngineC.SCALE_3D,
13838    ROTATE_X = _constants$IX2EngineC.ROTATE_X,
13839    ROTATE_Y = _constants$IX2EngineC.ROTATE_Y,
13840    ROTATE_Z = _constants$IX2EngineC.ROTATE_Z,
13841    SKEW = _constants$IX2EngineC.SKEW,
13842    PRESERVE_3D = _constants$IX2EngineC.PRESERVE_3D,
13843    FLEX = _constants$IX2EngineC.FLEX,
13844    OPACITY = _constants$IX2EngineC.OPACITY,
13845    FILTER = _constants$IX2EngineC.FILTER,
13846    FONT_VARIATION_SETTINGS = _constants$IX2EngineC.FONT_VARIATION_SETTINGS,
13847    WIDTH = _constants$IX2EngineC.WIDTH,
13848    HEIGHT = _constants$IX2EngineC.HEIGHT,
13849    BACKGROUND_COLOR = _constants$IX2EngineC.BACKGROUND_COLOR,
13850    BORDER_COLOR = _constants$IX2EngineC.BORDER_COLOR,
13851    COLOR = _constants$IX2EngineC.COLOR,
13852    CHILDREN = _constants$IX2EngineC.CHILDREN,
13853    IMMEDIATE_CHILDREN = _constants$IX2EngineC.IMMEDIATE_CHILDREN,
13854    SIBLINGS = _constants$IX2EngineC.SIBLINGS,
13855    PARENT = _constants$IX2EngineC.PARENT,
13856    DISPLAY = _constants$IX2EngineC.DISPLAY,
13857    WILL_CHANGE = _constants$IX2EngineC.WILL_CHANGE,
13858    AUTO = _constants$IX2EngineC.AUTO,
13859    COMMA_DELIMITER = _constants$IX2EngineC.COMMA_DELIMITER,
13860    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
13861    BAR_DELIMITER = _constants$IX2EngineC.BAR_DELIMITER,
13862    RENDER_TRANSFORM = _constants$IX2EngineC.RENDER_TRANSFORM,
13863    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
13864    RENDER_STYLE = _constants$IX2EngineC.RENDER_STYLE,
13865    RENDER_PLUGIN = _constants$IX2EngineC.RENDER_PLUGIN;
13866var _constants$ActionType = _constants.ActionTypeConsts,
13867    TRANSFORM_MOVE = _constants$ActionType.TRANSFORM_MOVE,
13868    TRANSFORM_SCALE = _constants$ActionType.TRANSFORM_SCALE,
13869    TRANSFORM_ROTATE = _constants$ActionType.TRANSFORM_ROTATE,
13870    TRANSFORM_SKEW = _constants$ActionType.TRANSFORM_SKEW,
13871    STYLE_OPACITY = _constants$ActionType.STYLE_OPACITY,
13872    STYLE_FILTER = _constants$ActionType.STYLE_FILTER,
13873    STYLE_FONT_VARIATION = _constants$ActionType.STYLE_FONT_VARIATION,
13874    STYLE_SIZE = _constants$ActionType.STYLE_SIZE,
13875    STYLE_BACKGROUND_COLOR = _constants$ActionType.STYLE_BACKGROUND_COLOR,
13876    STYLE_BORDER = _constants$ActionType.STYLE_BORDER,
13877    STYLE_TEXT_COLOR = _constants$ActionType.STYLE_TEXT_COLOR,
13878    GENERAL_DISPLAY = _constants$ActionType.GENERAL_DISPLAY;
13879var OBJECT_VALUE = 'OBJECT_VALUE';
13880
13881var trim = function trim(v) {
13882  return v.trim();
13883};
13884
13885var colorStyleProps = Object.freeze((_Object$freeze = {}, (0, _defineProperty2["default"])(_Object$freeze, STYLE_BACKGROUND_COLOR, BACKGROUND_COLOR), (0, _defineProperty2["default"])(_Object$freeze, STYLE_BORDER, BORDER_COLOR), (0, _defineProperty2["default"])(_Object$freeze, STYLE_TEXT_COLOR, COLOR), _Object$freeze));
13886var willChangeProps = Object.freeze((_Object$freeze2 = {}, (0, _defineProperty2["default"])(_Object$freeze2, _IX2BrowserSupport.TRANSFORM_PREFIXED, TRANSFORM), (0, _defineProperty2["default"])(_Object$freeze2, BACKGROUND_COLOR, BACKGROUND), (0, _defineProperty2["default"])(_Object$freeze2, OPACITY, OPACITY), (0, _defineProperty2["default"])(_Object$freeze2, FILTER, FILTER), (0, _defineProperty2["default"])(_Object$freeze2, WIDTH, WIDTH), (0, _defineProperty2["default"])(_Object$freeze2, HEIGHT, HEIGHT), (0, _defineProperty2["default"])(_Object$freeze2, FONT_VARIATION_SETTINGS, FONT_VARIATION_SETTINGS), _Object$freeze2));
13887var objectCache = {};
13888var instanceCount = 1;
13889
13890function getInstanceId() {
13891  return 'i' + instanceCount++;
13892}
13893
13894var elementCount = 1; // $FlowFixMe
13895
13896function getElementId(ixElements, ref) {
13897  // TODO: optimize element lookup
13898  for (var key in ixElements) {
13899    var ixEl = ixElements[key];
13900
13901    if (ixEl && ixEl.ref === ref) {
13902      return ixEl.id;
13903    }
13904  }
13905
13906  return 'e' + elementCount++;
13907} // $FlowFixMe
13908
13909
13910function reifyState() {
13911  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13912      events = _ref2.events,
13913      actionLists = _ref2.actionLists,
13914      site = _ref2.site;
13915
13916  var eventTypeMap = (0, _reduce["default"])(events, function (result, event) {
13917    var eventTypeId = event.eventTypeId;
13918
13919    if (!result[eventTypeId]) {
13920      result[eventTypeId] = {};
13921    }
13922
13923    result[eventTypeId][event.id] = event;
13924    return result;
13925  }, {});
13926  var mediaQueries = site && site.mediaQueries;
13927  var mediaQueryKeys = [];
13928
13929  if (mediaQueries) {
13930    mediaQueryKeys = mediaQueries.map(function (mq) {
13931      return mq.key;
13932    });
13933  } else {
13934    mediaQueries = [];
13935    console.warn("IX2 missing mediaQueries in site data");
13936  }
13937
13938  return {
13939    ixData: {
13940      events: events,
13941      actionLists: actionLists,
13942      eventTypeMap: eventTypeMap,
13943      mediaQueries: mediaQueries,
13944      mediaQueryKeys: mediaQueryKeys
13945    }
13946  };
13947}
13948
13949var strictEqual = function strictEqual(a, b) {
13950  return a === b;
13951}; // $FlowFixMe
13952
13953
13954function observeStore(_ref3) {
13955  var store = _ref3.store,
13956      select = _ref3.select,
13957      onChange = _ref3.onChange,
13958      _ref3$comparator = _ref3.comparator,
13959      comparator = _ref3$comparator === void 0 ? strictEqual : _ref3$comparator;
13960  var getState = store.getState,
13961      subscribe = store.subscribe;
13962  var unsubscribe = subscribe(handleChange);
13963  var currentState = select(getState());
13964
13965  function handleChange() {
13966    var nextState = select(getState());
13967
13968    if (nextState == null) {
13969      unsubscribe();
13970      return;
13971    }
13972
13973    if (!comparator(nextState, currentState)) {
13974      currentState = nextState;
13975      onChange(currentState, store);
13976    }
13977  }
13978
13979  return unsubscribe;
13980}
13981
13982function normalizeTarget(target) {
13983  var type = (0, _typeof2["default"])(target);
13984
13985  if (type === 'string') {
13986    return {
13987      id: target
13988    };
13989  } else if (target != null && type === 'object') {
13990    var id = target.id,
13991        objectId = target.objectId,
13992        selector = target.selector,
13993        selectorGuids = target.selectorGuids,
13994        appliesTo = target.appliesTo,
13995        useEventTarget = target.useEventTarget;
13996    return {
13997      id: id,
13998      objectId: objectId,
13999      selector: selector,
14000      selectorGuids: selectorGuids,
14001      appliesTo: appliesTo,
14002      useEventTarget: useEventTarget
14003    };
14004  }
14005
14006  return {};
14007}
14008
14009function getAffectedElements(_ref4) {
14010  var config = _ref4.config,
14011      event = _ref4.event,
14012      eventTarget = _ref4.eventTarget,
14013      elementRoot = _ref4.elementRoot,
14014      elementApi = _ref4.elementApi;
14015
14016  var _ref, _event$action, _event$action$config;
14017
14018  if (!elementApi) {
14019    throw new Error('IX2 missing elementApi');
14020  }
14021
14022  var targets = config.targets;
14023
14024  if (Array.isArray(targets) && targets.length > 0) {
14025    return targets.reduce(function (accumulator, target) {
14026      return accumulator.concat(getAffectedElements({
14027        config: {
14028          target: target
14029        },
14030        event: event,
14031        eventTarget: eventTarget,
14032        elementRoot: elementRoot,
14033        elementApi: elementApi
14034      }));
14035    }, []);
14036  }
14037
14038  var getValidDocument = elementApi.getValidDocument,
14039      getQuerySelector = elementApi.getQuerySelector,
14040      queryDocument = elementApi.queryDocument,
14041      getChildElements = elementApi.getChildElements,
14042      getSiblingElements = elementApi.getSiblingElements,
14043      matchSelector = elementApi.matchSelector,
14044      elementContains = elementApi.elementContains,
14045      isSiblingNode = elementApi.isSiblingNode;
14046  var target = config.target;
14047
14048  if (!target) {
14049    return [];
14050  }
14051
14052  var _normalizeTarget = normalizeTarget(target),
14053      id = _normalizeTarget.id,
14054      objectId = _normalizeTarget.objectId,
14055      selector = _normalizeTarget.selector,
14056      selectorGuids = _normalizeTarget.selectorGuids,
14057      appliesTo = _normalizeTarget.appliesTo,
14058      useEventTarget = _normalizeTarget.useEventTarget;
14059
14060  if (objectId) {
14061    var ref = objectCache[objectId] || (objectCache[objectId] = {});
14062    return [ref];
14063  }
14064
14065  if (appliesTo === _constants.EventAppliesTo.PAGE) {
14066    var doc = getValidDocument(id);
14067    return doc ? [doc] : [];
14068  }
14069
14070  var overrides = (_ref = event === null || event === void 0 ? void 0 : (_event$action = event.action) === null || _event$action === void 0 ? void 0 : (_event$action$config = _event$action.config) === null || _event$action$config === void 0 ? void 0 : _event$action$config.affectedElements) !== null && _ref !== void 0 ? _ref : {};
14071  var override = overrides[id || selector] || {};
14072  var validOverride = Boolean(override.id || override.selector);
14073  var limitAffectedElements;
14074  var baseSelector;
14075  var finalSelector;
14076  var eventTargetSelector = event && getQuerySelector(normalizeTarget(event.target));
14077
14078  if (validOverride) {
14079    limitAffectedElements = override.limitAffectedElements;
14080    baseSelector = eventTargetSelector;
14081    finalSelector = getQuerySelector(override);
14082  } else {
14083    // pass in selectorGuids as well for server-side rendering.
14084    baseSelector = finalSelector = getQuerySelector({
14085      id: id,
14086      selector: selector,
14087      selectorGuids: selectorGuids
14088    });
14089  }
14090
14091  if (event && useEventTarget) {
14092    // eventTarget is not defined when this function is called in a clear request, so find
14093    // all target elements associated with the event data, and return affected elements.
14094    var eventTargets = eventTarget && (finalSelector || useEventTarget === true) ? [eventTarget] : queryDocument(eventTargetSelector);
14095
14096    if (finalSelector) {
14097      if (useEventTarget === PARENT) {
14098        return queryDocument(finalSelector).filter(function (parentElement) {
14099          return eventTargets.some(function (targetElement) {
14100            return elementContains(parentElement, targetElement);
14101          });
14102        });
14103      }
14104
14105      if (useEventTarget === CHILDREN) {
14106        return queryDocument(finalSelector).filter(function (childElement) {
14107          return eventTargets.some(function (targetElement) {
14108            return elementContains(targetElement, childElement);
14109          });
14110        });
14111      }
14112
14113      if (useEventTarget === SIBLINGS) {
14114        return queryDocument(finalSelector).filter(function (siblingElement) {
14115          return eventTargets.some(function (targetElement) {
14116            return isSiblingNode(targetElement, siblingElement);
14117          });
14118        });
14119      }
14120    }
14121
14122    return eventTargets;
14123  }
14124
14125  if (baseSelector == null || finalSelector == null) {
14126    return [];
14127  }
14128
14129  if (_IX2BrowserSupport.IS_BROWSER_ENV && elementRoot) {
14130    return queryDocument(finalSelector).filter(function (element) {
14131      return elementRoot.contains(element);
14132    });
14133  }
14134
14135  if (limitAffectedElements === CHILDREN) {
14136    return queryDocument(baseSelector, finalSelector);
14137  } else if (limitAffectedElements === IMMEDIATE_CHILDREN) {
14138    return getChildElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
14139  } else if (limitAffectedElements === SIBLINGS) {
14140    return getSiblingElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
14141  } else {
14142    return queryDocument(finalSelector);
14143  }
14144} // $FlowFixMe
14145
14146
14147function getComputedStyle(_ref5) {
14148  var element = _ref5.element,
14149      actionItem = _ref5.actionItem;
14150
14151  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14152    return {};
14153  }
14154
14155  var actionTypeId = actionItem.actionTypeId;
14156
14157  switch (actionTypeId) {
14158    case STYLE_SIZE:
14159    case STYLE_BACKGROUND_COLOR:
14160    case STYLE_BORDER:
14161    case STYLE_TEXT_COLOR:
14162    case GENERAL_DISPLAY:
14163      return window.getComputedStyle(element);
14164
14165    default:
14166      return {};
14167  }
14168}
14169
14170var pxValueRegex = /px/;
14171
14172var getFilterDefaults = function getFilterDefaults(actionState, filters) {
14173  return filters.reduce(function (result, filter) {
14174    if (result[filter.type] == null) {
14175      result[filter.type] = filterDefaults[// $FlowFixMe - property `saturation` (did you mean `saturate`?) is missing in `filterDefaults`
14176      filter.type];
14177    }
14178
14179    return result;
14180  }, actionState || {});
14181};
14182
14183var getFontVariationDefaults = function getFontVariationDefaults(actionState, fontVariations) {
14184  return fontVariations.reduce(function (result, fontVariation) {
14185    if (result[fontVariation.type] == null) {
14186      result[fontVariation.type] = fontVariationDefaults[fontVariation.type] || fontVariation.defaultValue || 0;
14187    }
14188
14189    return result;
14190  }, actionState || {});
14191};
14192
14193function getInstanceOrigin(element) {
14194  var refState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
14195  var computedStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
14196  var actionItem = arguments.length > 3 ? arguments[3] : undefined;
14197  var elementApi = arguments.length > 4 ? arguments[4] : undefined;
14198  var getStyle = elementApi.getStyle; // Flow Hack: Passing actionTypeId to isPluginType and then trying
14199  // to do type refinement using the same variable via a switch statement
14200  // breaks down. This is is a workaround to ensure we can use type refinement.
14201
14202  var actionTypeId = actionItem.actionTypeId;
14203
14204  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14205    // $FlowFixMe
14206    return (0, _IX2VanillaPlugins.getPluginOrigin)(actionTypeId)(refState[actionTypeId]);
14207  }
14208
14209  switch (actionItem.actionTypeId) {
14210    case TRANSFORM_MOVE:
14211    case TRANSFORM_SCALE:
14212    case TRANSFORM_ROTATE:
14213    case TRANSFORM_SKEW:
14214      {
14215        return refState[actionItem.actionTypeId] || transformDefaults[actionItem.actionTypeId];
14216      }
14217
14218    case STYLE_FILTER:
14219      return getFilterDefaults(refState[actionItem.actionTypeId], actionItem.config.filters);
14220
14221    case STYLE_FONT_VARIATION:
14222      return getFontVariationDefaults(refState[actionItem.actionTypeId], actionItem.config.fontVariations);
14223
14224    case STYLE_OPACITY:
14225      return {
14226        value: (0, _defaultTo["default"])(parseFloat(getStyle(element, OPACITY)), 1.0)
14227      };
14228
14229    case STYLE_SIZE:
14230      {
14231        var inlineWidth = getStyle(element, WIDTH);
14232        var inlineHeight = getStyle(element, HEIGHT);
14233        var widthValue;
14234        var heightValue; // When destination unit is 'AUTO', ensure origin values are in px
14235
14236        if (actionItem.config.widthUnit === AUTO) {
14237          widthValue = pxValueRegex.test(inlineWidth) ? parseFloat(inlineWidth) : parseFloat(computedStyle.width);
14238        } else {
14239          widthValue = (0, _defaultTo["default"])(parseFloat(inlineWidth), parseFloat(computedStyle.width));
14240        }
14241
14242        if (actionItem.config.heightUnit === AUTO) {
14243          heightValue = pxValueRegex.test(inlineHeight) ? parseFloat(inlineHeight) : parseFloat(computedStyle.height);
14244        } else {
14245          heightValue = (0, _defaultTo["default"])(parseFloat(inlineHeight), parseFloat(computedStyle.height));
14246        }
14247
14248        return {
14249          widthValue: widthValue,
14250          heightValue: heightValue
14251        };
14252      }
14253
14254    case STYLE_BACKGROUND_COLOR:
14255    case STYLE_BORDER:
14256    case STYLE_TEXT_COLOR:
14257      return parseColor({
14258        element: element,
14259        actionTypeId: actionItem.actionTypeId,
14260        computedStyle: computedStyle,
14261        getStyle: getStyle
14262      });
14263
14264    case GENERAL_DISPLAY:
14265      return {
14266        value: (0, _defaultTo["default"])(getStyle(element, DISPLAY), computedStyle.display)
14267      };
14268    // $FlowFixMe - `OBJECT_VALUE` is not an expected `actionTypeId`
14269
14270    case OBJECT_VALUE:
14271      return refState[actionItem.actionTypeId] || {
14272        value: 0
14273      };
14274
14275    default:
14276      {
14277        // As far as the type system can tell, we're missing a handler for
14278        // PLUGIN_LOTTIE.
14279        //
14280        // This is actually handled by `isPluginType` above.
14281        //
14282        // $FlowFixMe
14283
14284        /*:: (actionItem: empty); */
14285        return;
14286      }
14287  }
14288}
14289
14290var reduceFilters = function reduceFilters(result, filter) {
14291  if (filter) {
14292    result[filter.type] = filter.value || 0;
14293  }
14294
14295  return result;
14296};
14297
14298var reduceFontVariations = function reduceFontVariations(result, fontVariation) {
14299  if (fontVariation) {
14300    result[fontVariation.type] = fontVariation.value || 0;
14301  }
14302
14303  return result;
14304}; // $FlowFixMe
14305
14306
14307var getItemConfigByKey = function getItemConfigByKey(actionTypeId, key, config) {
14308  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14309    // $FlowFixMe
14310    return (0, _IX2VanillaPlugins.getPluginConfig)(actionTypeId)(config, key);
14311  }
14312
14313  switch (actionTypeId) {
14314    case STYLE_FILTER:
14315      {
14316        var filter = (0, _findLast["default"])(config.filters, function (_ref6) {
14317          var type = _ref6.type;
14318          return type === key;
14319        });
14320        return filter ? filter.value : 0;
14321      }
14322
14323    case STYLE_FONT_VARIATION:
14324      {
14325        var fontVariation = (0, _findLast["default"])(config.fontVariations, function (_ref7) {
14326          var type = _ref7.type;
14327          return type === key;
14328        });
14329        return fontVariation ? fontVariation.value : 0;
14330      }
14331
14332    default:
14333      return config[key];
14334  }
14335};
14336
14337exports.getItemConfigByKey = getItemConfigByKey;
14338
14339function getDestinationValues(_ref8) {
14340  var element = _ref8.element,
14341      actionItem = _ref8.actionItem,
14342      elementApi = _ref8.elementApi;
14343
14344  if ((0, _IX2VanillaPlugins.isPluginType)(actionItem.actionTypeId)) {
14345    // $FlowFixMe
14346    return (0, _IX2VanillaPlugins.getPluginDestination)(actionItem.actionTypeId)(actionItem.config);
14347  }
14348
14349  switch (actionItem.actionTypeId) {
14350    case TRANSFORM_MOVE:
14351    case TRANSFORM_SCALE:
14352    case TRANSFORM_ROTATE:
14353    case TRANSFORM_SKEW:
14354      {
14355        var _actionItem$config = actionItem.config,
14356            xValue = _actionItem$config.xValue,
14357            yValue = _actionItem$config.yValue,
14358            zValue = _actionItem$config.zValue;
14359        return {
14360          xValue: xValue,
14361          yValue: yValue,
14362          zValue: zValue
14363        };
14364      }
14365
14366    case STYLE_SIZE:
14367      {
14368        var getStyle = elementApi.getStyle,
14369            setStyle = elementApi.setStyle,
14370            getProperty = elementApi.getProperty;
14371        var _actionItem$config2 = actionItem.config,
14372            widthUnit = _actionItem$config2.widthUnit,
14373            heightUnit = _actionItem$config2.heightUnit;
14374        var _actionItem$config3 = actionItem.config,
14375            widthValue = _actionItem$config3.widthValue,
14376            heightValue = _actionItem$config3.heightValue;
14377
14378        if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14379          return {
14380            widthValue: widthValue,
14381            heightValue: heightValue
14382          };
14383        }
14384
14385        if (widthUnit === AUTO) {
14386          var temp = getStyle(element, WIDTH);
14387          setStyle(element, WIDTH, '');
14388          widthValue = getProperty(element, 'offsetWidth');
14389          setStyle(element, WIDTH, temp);
14390        }
14391
14392        if (heightUnit === AUTO) {
14393          var _temp = getStyle(element, HEIGHT);
14394
14395          setStyle(element, HEIGHT, '');
14396          heightValue = getProperty(element, 'offsetHeight');
14397          setStyle(element, HEIGHT, _temp);
14398        }
14399
14400        return {
14401          widthValue: widthValue,
14402          heightValue: heightValue
14403        };
14404      }
14405
14406    case STYLE_BACKGROUND_COLOR:
14407    case STYLE_BORDER:
14408    case STYLE_TEXT_COLOR:
14409      {
14410        var _actionItem$config4 = actionItem.config,
14411            rValue = _actionItem$config4.rValue,
14412            gValue = _actionItem$config4.gValue,
14413            bValue = _actionItem$config4.bValue,
14414            aValue = _actionItem$config4.aValue;
14415        return {
14416          rValue: rValue,
14417          gValue: gValue,
14418          bValue: bValue,
14419          aValue: aValue
14420        };
14421      }
14422
14423    case STYLE_FILTER:
14424      {
14425        return actionItem.config.filters.reduce(reduceFilters, {});
14426      }
14427
14428    case STYLE_FONT_VARIATION:
14429      {
14430        return actionItem.config.fontVariations.reduce(reduceFontVariations, {});
14431      }
14432
14433    default:
14434      {
14435        var value = actionItem.config.value;
14436        return {
14437          value: value
14438        };
14439      }
14440  }
14441} // $FlowFixMe
14442
14443
14444function getRenderType(actionTypeId) {
14445  if (/^TRANSFORM_/.test(actionTypeId)) {
14446    return RENDER_TRANSFORM;
14447  }
14448
14449  if (/^STYLE_/.test(actionTypeId)) {
14450    return RENDER_STYLE;
14451  }
14452
14453  if (/^GENERAL_/.test(actionTypeId)) {
14454    return RENDER_GENERAL;
14455  }
14456
14457  if (/^PLUGIN_/.test(actionTypeId)) {
14458    return RENDER_PLUGIN;
14459  }
14460} // $FlowFixMe
14461
14462
14463function getStyleProp(renderType, actionTypeId) {
14464  return renderType === RENDER_STYLE ? actionTypeId.replace('STYLE_', '').toLowerCase() : null;
14465}
14466
14467function renderHTMLElement( // $FlowFixMe
14468element, // $FlowFixMe
14469refState, // $FlowFixMe
14470actionState, // $FlowFixMe
14471eventId, // $FlowFixMe
14472actionItem, // $FlowFixMe
14473styleProp, // $FlowFixMe
14474elementApi, // $FlowFixMe
14475renderType, // $FlowFixMe
14476pluginInstance) {
14477  switch (renderType) {
14478    case RENDER_TRANSFORM:
14479      {
14480        return renderTransform(element, refState, actionState, actionItem, elementApi);
14481      }
14482
14483    case RENDER_STYLE:
14484      {
14485        return renderStyle(element, refState, actionState, actionItem, styleProp, elementApi);
14486      }
14487
14488    case RENDER_GENERAL:
14489      {
14490        return renderGeneral(element, actionItem, elementApi);
14491      }
14492
14493    case RENDER_PLUGIN:
14494      {
14495        var actionTypeId = actionItem.actionTypeId;
14496
14497        if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14498          // $FlowFixMe
14499          return (0, _IX2VanillaPlugins.renderPlugin)(actionTypeId)(pluginInstance, refState, actionItem);
14500        }
14501      }
14502  }
14503}
14504
14505var transformDefaults = (_transformDefaults = {}, (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_MOVE, Object.freeze({
14506  xValue: 0,
14507  yValue: 0,
14508  zValue: 0
14509})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SCALE, Object.freeze({
14510  xValue: 1,
14511  yValue: 1,
14512  zValue: 1
14513})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_ROTATE, Object.freeze({
14514  xValue: 0,
14515  yValue: 0,
14516  zValue: 0
14517})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SKEW, Object.freeze({
14518  xValue: 0,
14519  yValue: 0
14520})), _transformDefaults);
14521var filterDefaults = Object.freeze({
14522  blur: 0,
14523  'hue-rotate': 0,
14524  invert: 0,
14525  grayscale: 0,
14526  saturate: 100,
14527  sepia: 0,
14528  contrast: 100,
14529  brightness: 100
14530});
14531var fontVariationDefaults = Object.freeze({
14532  wght: 0,
14533  opsz: 0,
14534  wdth: 0,
14535  slnt: 0
14536});
14537
14538var getFilterUnit = function getFilterUnit(filterType, actionItemConfig) {
14539  var filter = (0, _findLast["default"])(actionItemConfig.filters, function (_ref9) {
14540    var type = _ref9.type;
14541    return type === filterType;
14542  });
14543
14544  if (filter && filter.unit) {
14545    return filter.unit;
14546  }
14547
14548  switch (filterType) {
14549    case 'blur':
14550      return 'px';
14551
14552    case 'hue-rotate':
14553      return 'deg';
14554
14555    default:
14556      return '%';
14557  }
14558};
14559
14560var transformKeys = Object.keys(transformDefaults);
14561
14562function renderTransform(element, refState, actionState, actionItem, elementApi) {
14563  var newTransform = transformKeys.map(function (actionTypeId) {
14564    var defaults = transformDefaults[actionTypeId];
14565
14566    var _ref10 = refState[actionTypeId] || {},
14567        _ref10$xValue = _ref10.xValue,
14568        xValue = _ref10$xValue === void 0 ? defaults.xValue : _ref10$xValue,
14569        _ref10$yValue = _ref10.yValue,
14570        yValue = _ref10$yValue === void 0 ? defaults.yValue : _ref10$yValue,
14571        _ref10$zValue = _ref10.zValue,
14572        zValue = _ref10$zValue === void 0 ? defaults.zValue : _ref10$zValue,
14573        _ref10$xUnit = _ref10.xUnit,
14574        xUnit = _ref10$xUnit === void 0 ? '' : _ref10$xUnit,
14575        _ref10$yUnit = _ref10.yUnit,
14576        yUnit = _ref10$yUnit === void 0 ? '' : _ref10$yUnit,
14577        _ref10$zUnit = _ref10.zUnit,
14578        zUnit = _ref10$zUnit === void 0 ? '' : _ref10$zUnit;
14579
14580    switch (actionTypeId) {
14581      case TRANSFORM_MOVE:
14582        return "".concat(TRANSLATE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
14583
14584      case TRANSFORM_SCALE:
14585        return "".concat(SCALE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
14586
14587      case TRANSFORM_ROTATE:
14588        return "".concat(ROTATE_X, "(").concat(xValue).concat(xUnit, ") ").concat(ROTATE_Y, "(").concat(yValue).concat(yUnit, ") ").concat(ROTATE_Z, "(").concat(zValue).concat(zUnit, ")");
14589
14590      case TRANSFORM_SKEW:
14591        return "".concat(SKEW, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ")");
14592
14593      default:
14594        return '';
14595    }
14596  }).join(' ');
14597  var setStyle = elementApi.setStyle;
14598  addWillChange(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
14599  setStyle(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, newTransform); // Set transform-style: preserve-3d
14600
14601  if (hasDefined3dTransform(actionItem, actionState)) {
14602    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, PRESERVE_3D);
14603  }
14604}
14605
14606function renderFilter(element, actionState, actionItemConfig, elementApi) {
14607  var filterValue = (0, _reduce["default"])(actionState, function (result, value, type) {
14608    return "".concat(result, " ").concat(type, "(").concat(value).concat(getFilterUnit(type, actionItemConfig), ")");
14609  }, '');
14610  var setStyle = elementApi.setStyle;
14611  addWillChange(element, FILTER, elementApi);
14612  setStyle(element, FILTER, filterValue);
14613}
14614
14615function renderFontVariation(element, actionState, actionItemConfig, elementApi) {
14616  var fontVariationValue = (0, _reduce["default"])(actionState, function (result, value, type) {
14617    result.push("\"".concat(type, "\" ").concat(value));
14618    return result;
14619  }, []).join(', ');
14620  var setStyle = elementApi.setStyle;
14621  addWillChange(element, FONT_VARIATION_SETTINGS, elementApi);
14622  setStyle(element, FONT_VARIATION_SETTINGS, fontVariationValue);
14623}
14624
14625function hasDefined3dTransform(_ref11, _ref12) {
14626  var actionTypeId = _ref11.actionTypeId;
14627  var xValue = _ref12.xValue,
14628      yValue = _ref12.yValue,
14629      zValue = _ref12.zValue;
14630  // TRANSLATE_Z
14631  return actionTypeId === TRANSFORM_MOVE && zValue !== undefined || // SCALE_Z
14632  actionTypeId === TRANSFORM_SCALE && zValue !== undefined || // ROTATE_X or ROTATE_Y
14633  actionTypeId === TRANSFORM_ROTATE && (xValue !== undefined || yValue !== undefined);
14634}
14635
14636var paramCapture = '\\(([^)]+)\\)';
14637var rgbValidRegex = /^rgb/;
14638var rgbMatchRegex = RegExp("rgba?".concat(paramCapture));
14639
14640function getFirstMatch(regex, value) {
14641  var match = regex.exec(value);
14642  return match ? match[1] : '';
14643}
14644
14645function parseColor(_ref13) {
14646  var element = _ref13.element,
14647      actionTypeId = _ref13.actionTypeId,
14648      computedStyle = _ref13.computedStyle,
14649      getStyle = _ref13.getStyle;
14650  var prop = colorStyleProps[actionTypeId];
14651  var inlineValue = getStyle(element, prop);
14652  var value = rgbValidRegex.test(inlineValue) ? inlineValue : computedStyle[prop];
14653  var matches = getFirstMatch(rgbMatchRegex, value).split(COMMA_DELIMITER);
14654  return {
14655    rValue: (0, _defaultTo["default"])(parseInt(matches[0], 10), 255),
14656    gValue: (0, _defaultTo["default"])(parseInt(matches[1], 10), 255),
14657    bValue: (0, _defaultTo["default"])(parseInt(matches[2], 10), 255),
14658    aValue: (0, _defaultTo["default"])(parseFloat(matches[3]), 1)
14659  };
14660}
14661
14662function renderStyle(element, refState, actionState, actionItem, styleProp, elementApi) {
14663  var setStyle = elementApi.setStyle;
14664
14665  switch (actionItem.actionTypeId) {
14666    case STYLE_SIZE:
14667      {
14668        var _actionItem$config5 = actionItem.config,
14669            _actionItem$config5$w = _actionItem$config5.widthUnit,
14670            widthUnit = _actionItem$config5$w === void 0 ? '' : _actionItem$config5$w,
14671            _actionItem$config5$h = _actionItem$config5.heightUnit,
14672            heightUnit = _actionItem$config5$h === void 0 ? '' : _actionItem$config5$h;
14673        var widthValue = actionState.widthValue,
14674            heightValue = actionState.heightValue;
14675
14676        if (widthValue !== undefined) {
14677          if (widthUnit === AUTO) {
14678            widthUnit = 'px';
14679          }
14680
14681          addWillChange(element, WIDTH, elementApi);
14682          setStyle(element, WIDTH, widthValue + widthUnit);
14683        }
14684
14685        if (heightValue !== undefined) {
14686          if (heightUnit === AUTO) {
14687            heightUnit = 'px';
14688          }
14689
14690          addWillChange(element, HEIGHT, elementApi);
14691          setStyle(element, HEIGHT, heightValue + heightUnit);
14692        }
14693
14694        break;
14695      }
14696
14697    case STYLE_FILTER:
14698      {
14699        renderFilter(element, actionState, actionItem.config, elementApi);
14700        break;
14701      }
14702
14703    case STYLE_FONT_VARIATION:
14704      {
14705        renderFontVariation(element, actionState, actionItem.config, elementApi);
14706        break;
14707      }
14708
14709    case STYLE_BACKGROUND_COLOR:
14710    case STYLE_BORDER:
14711    case STYLE_TEXT_COLOR:
14712      {
14713        var prop = colorStyleProps[actionItem.actionTypeId];
14714        var rValue = Math.round(actionState.rValue);
14715        var gValue = Math.round(actionState.gValue);
14716        var bValue = Math.round(actionState.bValue);
14717        var aValue = actionState.aValue;
14718        addWillChange(element, prop, elementApi);
14719        setStyle(element, prop, aValue >= 1 ? "rgb(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ")") : "rgba(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ",").concat(aValue, ")"));
14720        break;
14721      }
14722
14723    default:
14724      {
14725        var _actionItem$config$un = actionItem.config.unit,
14726            unit = _actionItem$config$un === void 0 ? '' : _actionItem$config$un;
14727        addWillChange(element, styleProp, elementApi);
14728        setStyle(element, styleProp, actionState.value + unit);
14729        break;
14730      }
14731  }
14732}
14733
14734function renderGeneral(element, actionItem, elementApi) {
14735  var setStyle = elementApi.setStyle;
14736
14737  switch (actionItem.actionTypeId) {
14738    case GENERAL_DISPLAY:
14739      {
14740        var value = actionItem.config.value;
14741
14742        if (value === FLEX && _IX2BrowserSupport.IS_BROWSER_ENV) {
14743          setStyle(element, DISPLAY, _IX2BrowserSupport.FLEX_PREFIXED);
14744        } else {
14745          setStyle(element, DISPLAY, value);
14746        }
14747
14748        return;
14749      }
14750  }
14751}
14752
14753function addWillChange(element, prop, elementApi) {
14754  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14755    return;
14756  }
14757
14758  var validProp = willChangeProps[prop];
14759
14760  if (!validProp) {
14761    return;
14762  }
14763
14764  var getStyle = elementApi.getStyle,
14765      setStyle = elementApi.setStyle;
14766  var value = getStyle(element, WILL_CHANGE);
14767
14768  if (!value) {
14769    setStyle(element, WILL_CHANGE, validProp);
14770    return;
14771  }
14772
14773  var values = value.split(COMMA_DELIMITER).map(trim);
14774
14775  if (values.indexOf(validProp) === -1) {
14776    setStyle(element, WILL_CHANGE, values.concat(validProp).join(COMMA_DELIMITER));
14777  }
14778}
14779
14780function removeWillChange(element, prop, elementApi) {
14781  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14782    return;
14783  }
14784
14785  var validProp = willChangeProps[prop];
14786
14787  if (!validProp) {
14788    return;
14789  }
14790
14791  var getStyle = elementApi.getStyle,
14792      setStyle = elementApi.setStyle;
14793  var value = getStyle(element, WILL_CHANGE);
14794
14795  if (!value || value.indexOf(validProp) === -1) {
14796    return;
14797  }
14798
14799  setStyle(element, WILL_CHANGE, value.split(COMMA_DELIMITER).map(trim).filter(function (v) {
14800    return v !== validProp;
14801  }).join(COMMA_DELIMITER));
14802} // $FlowFixMe
14803
14804
14805function clearAllStyles(_ref14) {
14806  var store = _ref14.store,
14807      elementApi = _ref14.elementApi;
14808
14809  var _store$getState = store.getState(),
14810      ixData = _store$getState.ixData;
14811
14812  var _ixData$events = ixData.events,
14813      events = _ixData$events === void 0 ? {} : _ixData$events,
14814      _ixData$actionLists = ixData.actionLists,
14815      actionLists = _ixData$actionLists === void 0 ? {} : _ixData$actionLists;
14816  Object.keys(events).forEach(function (eventId) {
14817    var event = events[eventId];
14818    var config = event.action.config;
14819    var actionListId = config.actionListId;
14820    var actionList = actionLists[actionListId];
14821
14822    if (actionList) {
14823      clearActionListStyles({
14824        actionList: actionList,
14825        event: event,
14826        elementApi: elementApi
14827      });
14828    }
14829  });
14830  Object.keys(actionLists).forEach(function (actionListId) {
14831    clearActionListStyles({
14832      actionList: actionLists[actionListId],
14833      elementApi: elementApi
14834    });
14835  });
14836} // $FlowFixMe
14837
14838
14839function clearActionListStyles(_ref15) {
14840  var _ref15$actionList = _ref15.actionList,
14841      actionList = _ref15$actionList === void 0 ? {} : _ref15$actionList,
14842      event = _ref15.event,
14843      elementApi = _ref15.elementApi;
14844  var actionItemGroups = actionList.actionItemGroups,
14845      continuousParameterGroups = actionList.continuousParameterGroups;
14846  actionItemGroups && actionItemGroups.forEach(function (actionGroup) {
14847    clearActionGroupStyles({
14848      actionGroup: actionGroup,
14849      event: event,
14850      elementApi: elementApi
14851    });
14852  });
14853  continuousParameterGroups && continuousParameterGroups.forEach(function (paramGroup) {
14854    var continuousActionGroups = paramGroup.continuousActionGroups;
14855    continuousActionGroups.forEach(function (actionGroup) {
14856      clearActionGroupStyles({
14857        actionGroup: actionGroup,
14858        event: event,
14859        elementApi: elementApi
14860      });
14861    });
14862  });
14863}
14864
14865function clearActionGroupStyles(_ref16) {
14866  var actionGroup = _ref16.actionGroup,
14867      event = _ref16.event,
14868      elementApi = _ref16.elementApi;
14869  var actionItems = actionGroup.actionItems;
14870  actionItems.forEach(function (_ref17) {
14871    var actionTypeId = _ref17.actionTypeId,
14872        config = _ref17.config;
14873    var clearElement;
14874
14875    if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14876      clearElement = (0, _IX2VanillaPlugins.clearPlugin)(actionTypeId);
14877    } else {
14878      clearElement = processElementByType({
14879        effect: clearStyleProp,
14880        actionTypeId: actionTypeId,
14881        elementApi: elementApi
14882      });
14883    }
14884
14885    getAffectedElements({
14886      config: config,
14887      event: event,
14888      elementApi: elementApi
14889    }
14889).forEach(clearElement);
14890  });
14891} // $FlowFixMe
14892
14893
14894function cleanupHTMLElement(element, actionItem, elementApi) {
14895  var setStyle = elementApi.setStyle,
14896      getStyle = elementApi.getStyle;
14897  var actionTypeId = actionItem.actionTypeId;
14898
14899  if (actionTypeId === STYLE_SIZE) {
14900    var config = actionItem.config;
14901
14902    if (config.widthUnit === AUTO) {
14903      setStyle(element, WIDTH, '');
14904    }
14905
14906    if (config.heightUnit === AUTO) {
14907      setStyle(element, HEIGHT, '');
14908    }
14909  }
14910
14911  if (getStyle(element, WILL_CHANGE)) {
14912    processElementByType({
14913      effect: removeWillChange,
14914      actionTypeId: actionTypeId,
14915      elementApi: elementApi
14916    })(element);
14917  }
14918}
14919
14920var processElementByType = function processElementByType(_ref18) {
14921  var effect = _ref18.effect,
14922      actionTypeId = _ref18.actionTypeId,
14923      elementApi = _ref18.elementApi;
14924  return function (element) {
14925    switch (actionTypeId) {
14926      case TRANSFORM_MOVE:
14927      case TRANSFORM_SCALE:
14928      case TRANSFORM_ROTATE:
14929      case TRANSFORM_SKEW:
14930        effect(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
14931        break;
14932
14933      case STYLE_FILTER:
14934        effect(element, FILTER, elementApi);
14935        break;
14936
14937      case STYLE_FONT_VARIATION:
14938        effect(element, FONT_VARIATION_SETTINGS, elementApi);
14939        break;
14940
14941      case STYLE_OPACITY:
14942        effect(element, OPACITY, elementApi);
14943        break;
14944
14945      case STYLE_SIZE:
14946        effect(element, WIDTH, elementApi);
14947        effect(element, HEIGHT, elementApi);
14948        break;
14949
14950      case STYLE_BACKGROUND_COLOR:
14951      case STYLE_BORDER:
14952      case STYLE_TEXT_COLOR:
14953        effect(element, colorStyleProps[actionTypeId], elementApi);
14954        break;
14955
14956      case GENERAL_DISPLAY:
14957        effect(element, DISPLAY, elementApi);
14958        break;
14959    }
14960  };
14961};
14962
14963function clearStyleProp(element, prop, elementApi) {
14964  var setStyle = elementApi.setStyle;
14965  removeWillChange(element, prop, elementApi);
14966  setStyle(element, prop, ''); // Clear transform-style: preserve-3d
14967
14968  if (prop === _IX2BrowserSupport.TRANSFORM_PREFIXED) {
14969    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, '');
14970  }
14971} // $FlowFixMe
14972
14973
14974function getMaxDurationItemIndex(actionItems) {
14975  var maxDuration = 0;
14976  var resultIndex = 0;
14977  actionItems.forEach(function (actionItem, index) {
14978    var config = actionItem.config;
14979    var total = config.delay + config.duration;
14980
14981    if (total >= maxDuration) {
14982      maxDuration = total;
14983      resultIndex = index;
14984    }
14985  });
14986  return resultIndex;
14987} // $FlowFixMe
14988
14989
14990function getActionListProgress(actionList, instance) {
14991  var actionItemGroups = actionList.actionItemGroups,
14992      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState;
14993  var instanceItem = instance.actionItem,
14994      _instance$verboseTime = instance.verboseTimeElapsed,
14995      verboseTimeElapsed = _instance$verboseTime === void 0 ? 0 : _instance$verboseTime;
14996  var totalDuration = 0;
14997  var elapsedDuration = 0;
14998  actionItemGroups.forEach(function (group, index) {
14999    if (useFirstGroupAsInitialState && index === 0) {
15000      return;
15001    }
15002
15003    var actionItems = group.actionItems;
15004    var carrierItem = actionItems[getMaxDurationItemIndex(actionItems)];
15005    var config = carrierItem.config,
15006        actionTypeId = carrierItem.actionTypeId;
15007
15008    if (instanceItem.id === carrierItem.id) {
15009      elapsedDuration = totalDuration + verboseTimeElapsed;
15010    }
15011
15012    var duration = getRenderType(actionTypeId) === RENDER_GENERAL ? 0 : config.duration;
15013    totalDuration += config.delay + duration;
15014  });
15015  return totalDuration > 0 ? (0, _IX2EasingUtils.optimizeFloat)(elapsedDuration / totalDuration) : 0;
15016} // $FlowFixMe
15017
15018
15019function reduceListToGroup(_ref19) {
15020  var actionList = _ref19.actionList,
15021      actionItemId = _ref19.actionItemId,
15022      rawData = _ref19.rawData;
15023  var actionItemGroups = actionList.actionItemGroups,
15024      continuousParameterGroups = actionList.continuousParameterGroups;
15025  var newActionItems = [];
15026
15027  var takeItemUntilMatch = function takeItemUntilMatch(actionItem) {
15028    newActionItems.push((0, _timm.mergeIn)(actionItem, ['config'], {
15029      delay: 0,
15030      duration: 0
15031    }));
15032    return actionItem.id === actionItemId;
15033  };
15034
15035  actionItemGroups && actionItemGroups.some(function (_ref20) {
15036    var actionItems = _ref20.actionItems;
15037    return actionItems.some(takeItemUntilMatch);
15038  });
15039  continuousParameterGroups && continuousParameterGroups.some(function (paramGroup) {
15040    var continuousActionGroups = paramGroup.continuousActionGroups;
15041    return continuousActionGroups.some(function (_ref21) {
15042      var actionItems = _ref21.actionItems;
15043      return actionItems.some(takeItemUntilMatch);
15044    });
15045  });
15046  return (0, _timm.setIn)(rawData, ['actionLists'], (0, _defineProperty2["default"])({}, actionList.id, {
15047    id: actionList.id,
15048    actionItemGroups: [{
15049      actionItems: newActionItems
15050    }]
15051  }));
15052} // $FlowFixMe
15053
15054
15055function shouldNamespaceEventParameter(eventTypeId, _ref23) {
15056  var basedOn = _ref23.basedOn;
15057  return eventTypeId === _constants.EventTypeConsts.SCROLLING_IN_VIEW && (basedOn === _constants.EventBasedOn.ELEMENT || basedOn == null) || eventTypeId === _constants.EventTypeConsts.MOUSE_MOVE && basedOn === _constants.EventBasedOn.ELEMENT;
15058}
15059
15060function getNamespacedParameterId(eventStateKey, continuousParameterGroupId) {
15061  var namespacedParameterId = eventStateKey + COLON_DELIMITER + continuousParameterGroupId;
15062  return namespacedParameterId;
15063} // $FlowFixMe
15064
15065
15066function shouldAllowMediaQuery(mediaQueries, mediaQueryKey) {
15067  // During design mode, current media query key does not exist
15068  if (mediaQueryKey == null) {
15069    return true;
15070  }
15071
15072  return mediaQueries.indexOf(mediaQueryKey) !== -1;
15073} // $FlowFixMe
15074
15075
15076function mediaQueriesEqual(listA, listB) {
15077  return (0, _shallowEqual["default"])(listA && listA.sort(), listB && listB.sort());
15078} // $FlowFixMe
15079
15080
15081function stringifyTarget(target) {
15082  if (typeof target === 'string') {
15083    return target;
15084  }
15085
15086  var _target$id = target.id,
15087      id = _target$id === void 0 ? '' : _target$id,
15088      _target$selector = target.selector,
15089      selector = _target$selector === void 0 ? '' : _target$selector,
15090      _target$useEventTarge = target.useEventTarget,
15091      useEventTarget = _target$useEventTarge === void 0 ? '' : _target$useEventTarge;
15092  return id + BAR_DELIMITER + selector + BAR_DELIMITER + useEventTarget;
15093}
15094
15095/***/ }),
15096/* 272 */
vendor: 9,324 bytes, lines 15097-15430
15097/***/ (function(module, exports) {
15098
15099/**
15100 * Checks `value` to determine whether a default value should be returned in
15101 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
15102 * or `undefined`.
15103 *
15104 * @static
15105 * @memberOf _
15106 * @since 4.14.0
15107 * @category Util
15108 * @param {*} value The value to check.
15109 * @param {*} defaultValue The default value.
15110 * @returns {*} Returns the resolved value.
15111 * @example
15112 *
15113 * _.defaultTo(1, 10);
15114 * // => 1
15115 *
15116 * _.defaultTo(undefined, 10);
15117 * // => 10
15118 */
15119function defaultTo(value, defaultValue) {
15120  return (value == null || value !== value) ? defaultValue : value;
15121}
15122
15123module.exports = defaultTo;
15124
15125
15126/***/ }),
15127/* 273 */
15128/***/ (function(module, exports, __webpack_require__) {
15129
15130var arrayReduce = __webpack_require__(274),
15131    baseEach = __webpack_require__(121),
15132    baseIteratee = __webpack_require__(10),
15133    baseReduce = __webpack_require__(278),
15134    isArray = __webpack_require__(2);
15135
15136/**
15137 * Reduces `collection` to a value which is the accumulated result of running
15138 * each element in `collection` thru `iteratee`, where each successive
15139 * invocation is supplied the return value of the previous. If `accumulator`
15140 * is not given, the first element of `collection` is used as the initial
15141 * value. The iteratee is invoked with four arguments:
15142 * (accumulator, value, index|key, collection).
15143 *
15144 * Many lodash methods are guarded to work as iteratees for methods like
15145 * `_.reduce`, `_.reduceRight`, and `_.transform`.
15146 *
15147 * The guarded methods are:
15148 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
15149 * and `sortBy`
15150 *
15151 * @static
15152 * @memberOf _
15153 * @since 0.1.0
15154 * @category Collection
15155 * @param {Array|Object} collection The collection to iterate over.
15156 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15157 * @param {*} [accumulator] The initial value.
15158 * @returns {*} Returns the accumulated value.
15159 * @see _.reduceRight
15160 * @example
15161 *
15162 * _.reduce([1, 2], function(sum, n) {
15163 *   return sum + n;
15164 * }, 0);
15165 * // => 3
15166 *
15167 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
15168 *   (result[value] || (result[value] = [])).push(key);
15169 *   return result;
15170 * }, {});
15171 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
15172 */
15173function reduce(collection, iteratee, accumulator) {
15174  var func = isArray(collection) ? arrayReduce : baseReduce,
15175      initAccum = arguments.length < 3;
15176
15177  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
15178}
15179
15180module.exports = reduce;
15181
15182
15183/***/ }),
15184/* 274 */
15185/***/ (function(module, exports) {
15186
15187/**
15188 * A specialized version of `_.reduce` for arrays without support for
15189 * iteratee shorthands.
15190 *
15191 * @private
15192 * @param {Array} [array] The array to iterate over.
15193 * @param {Function} iteratee The function invoked per iteration.
15194 * @param {*} [accumulator] The initial value.
15195 * @param {boolean} [initAccum] Specify using the first element of `array` as
15196 *  the initial value.
15197 * @returns {*} Returns the accumulated value.
15198 */
15199function arrayReduce(array, iteratee, accumulator, initAccum) {
15200  var index = -1,
15201      length = array == null ? 0 : array.length;
15202
15203  if (initAccum && length) {
15204    accumulator = array[++index];
15205  }
15206  while (++index < length) {
15207    accumulator = iteratee(accumulator, array[index], index, array);
15208  }
15209  return accumulator;
15210}
15211
15212module.exports = arrayReduce;
15213
15214
15215/***/ }),
15216/* 275 */
15217/***/ (function(module, exports, __webpack_require__) {
15218
15219var createBaseFor = __webpack_require__(276);
15220
15221/**
15222 * The base implementation of `baseForOwn` which iterates over `object`
15223 * properties returned by `keysFunc` and invokes `iteratee` for each property.
15224 * Iteratee functions may exit iteration early by explicitly returning `false`.
15225 *
15226 * @private
15227 * @param {Object} object The object to iterate over.
15228 * @param {Function} iteratee The function invoked per iteration.
15229 * @param {Function} keysFunc The function to get the keys of `object`.
15230 * @returns {Object} Returns `object`.
15231 */
15232var baseFor = createBaseFor();
15233
15234module.exports = baseFor;
15235
15236
15237/***/ }),
15238/* 276 */
15239/***/ (function(module, exports) {
15240
15241/**
15242 * Creates a base function for methods like `_.forIn` and `_.forOwn`.
15243 *
15244 * @private
15245 * @param {boolean} [fromRight] Specify iterating from right to left.
15246 * @returns {Function} Returns the new base function.
15247 */
15248function createBaseFor(fromRight) {
15249  return function(object, iteratee, keysFunc) {
15250    var index = -1,
15251        iterable = Object(object),
15252        props = keysFunc(object),
15253        length = props.length;
15254
15255    while (length--) {
15256      var key = props[fromRight ? length : ++index];
15257      if (iteratee(iterable[key], key, iterable) === false) {
15258        break;
15259      }
15260    }
15261    return object;
15262  };
15263}
15264
15265module.exports = createBaseFor;
15266
15267
15268/***/ }),
15269/* 277 */
15270/***/ (function(module, exports, __webpack_require__) {
15271
15272var isArrayLike = __webpack_require__(17);
15273
15274/**
15275 * Creates a `baseEach` or `baseEachRight` function.
15276 *
15277 * @private
15278 * @param {Function} eachFunc The function to iterate over a collection.
15279 * @param {boolean} [fromRight] Specify iterating from right to left.
15280 * @returns {Function} Returns the new base function.
15281 */
15282function createBaseEach(eachFunc, fromRight) {
15283  return function(collection, iteratee) {
15284    if (collection == null) {
15285      return collection;
15286    }
15287    if (!isArrayLike(collection)) {
15288      return eachFunc(collection, iteratee);
15289    }
15290    var length = collection.length,
15291        index = fromRight ? length : -1,
15292        iterable = Object(collection);
15293
15294    while ((fromRight ? index-- : ++index < length)) {
15295      if (iteratee(iterable[index], index, iterable) === false) {
15296        break;
15297      }
15298    }
15299    return collection;
15300  };
15301}
15302
15303module.exports = createBaseEach;
15304
15305
15306/***/ }),
15307/* 278 */
15308/***/ (function(module, exports) {
15309
15310/**
15311 * The base implementation of `_.reduce` and `_.reduceRight`, without support
15312 * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
15313 *
15314 * @private
15315 * @param {Array|Object} collection The collection to iterate over.
15316 * @param {Function} iteratee The function invoked per iteration.
15317 * @param {*} accumulator The initial value.
15318 * @param {boolean} initAccum Specify using the first or last element of
15319 *  `collection` as the initial value.
15320 * @param {Function} eachFunc The function to iterate over `collection`.
15321 * @returns {*} Returns the accumulated value.
15322 */
15323function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
15324  eachFunc(collection, function(value, index, collection) {
15325    accumulator = initAccum
15326      ? (initAccum = false, value)
15327      : iteratee(accumulator, value, index, collection);
15328  });
15329  return accumulator;
15330}
15331
15332module.exports = baseReduce;
15333
15334
15335/***/ }),
15336/* 279 */
15337/***/ (function(module, exports, __webpack_require__) {
15338
15339var createFind = __webpack_require__(96),
15340    findLastIndex = __webpack_require__(280);
15341
15342/**
15343 * This method is like `_.find` except that it iterates over elements of
15344 * `collection` from right to left.
15345 *
15346 * @static
15347 * @memberOf _
15348 * @since 2.0.0
15349 * @category Collection
15350 * @param {Array|Object} collection The collection to inspect.
15351 * @param {Function} [predicate=_.identity] The function invoked per iteration.
15352 * @param {number} [fromIndex=collection.length-1] The index to search from.
15353 * @returns {*} Returns the matched element, else `undefined`.
15354 * @example
15355 *
15356 * _.findLast([1, 2, 3, 4], function(n) {
15357 *   return n % 2 == 1;
15358 * });
15359 * // => 3
15360 */
15361var findLast = createFind(findLastIndex);
15362
15363module.exports = findLast;
15364
15365
15366/***/ }),
15367/* 280 */
15368/***/ (function(module, exports, __webpack_require__) {
15369
15370var baseFindIndex = __webpack_require__(114),
15371    baseIteratee = __webpack_require__(10),
15372    toInteger = __webpack_require__(115);
15373
15374/* Built-in method references for those with the same name as other `lodash` methods. */
15375var nativeMax = Math.max,
15376    nativeMin = Math.min;
15377
15378/**
15379 * This method is like `_.findIndex` except that it iterates over elements
15380 * of `collection` from right to left.
15381 *
15382 * @static
15383 * @memberOf _
15384 * @since 2.0.0
15385 * @category Array
15386 * @param {Array} array The array to inspect.
15387 * @param {Function} [predicate=_.identity] The function invoked per iteration.
15388 * @param {number} [fromIndex=array.length-1] The index to search from.
15389 * @returns {number} Returns the index of the found element, else `-1`.
15390 * @example
15391 *
15392 * var users = [
15393 *   { 'user': 'barney',  'active': true },
15394 *   { 'user': 'fred',    'active': false },
15395 *   { 'user': 'pebbles', 'active': false }
15396 * ];
15397 *
15398 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
15399 * // => 2
15400 *
15401 * // The `_.matches` iteratee shorthand.
15402 * _.findLastIndex(users, { 'user': 'barney', 'active': true });
15403 * // => 0
15404 *
15405 * // The `_.matchesProperty` iteratee shorthand.
15406 * _.findLastIndex(users, ['active', false]);
15407 * // => 2
15408 *
15409 * // The `_.property` iteratee shorthand.
15410 * _.findLastIndex(users, 'active');
15411 * // => 0
15412 */
15413function findLastIndex(array, predicate, fromIndex) {
15414  var length = array == null ? 0 : array.length;
15415  if (!length) {
15416    return -1;
15417  }
15418  var index = length - 1;
15419  if (fromIndex !== undefined) {
15420    index = toInteger(fromIndex);
15421    index = fromIndex < 0
15422      ? nativeMax(length + index, 0)
15423      : nativeMin(index, length - 1);
15424  }
15425  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
15426}
15427
15428module.exports = findLastIndex;
15429
15430
15431/***/ }),
15432/* 281 */
15433/***/ (function(module, exports, __webpack_require__) {
15434
15435"use strict";
15436
15437
15438var _interopRequireDefault = __webpack_require__(0);
15439
15440var _typeof2 = _interopRequireDefault(__webpack_require__(13));
15441
15442Object.defineProperty(exports, "__esModule", {
15443  value: true
15444});
15445exports["default"] = void 0; // from https://github.com/acdlite/recompose/blob/master/src/packages/recompose/shallowEqual.js
15446
15447/**
15448 * Copyright (c) 2013-present, Facebook, Inc.
15449 *
15450 * This source code is licensed under the MIT license found in the
15451 * LICENSE file in the root directory of this source tree.
15452 *
15453 * @providesModule shallowEqual
15454 * @typechecks
15455 */
15456
15457/* eslint-disable no-self-compare */
15458
15459var hasOwnProperty = Object.prototype.hasOwnProperty;
15460/**
15461 * inlined Object.is polyfill to avoid requiring consumers ship their own
15462 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
15463 */
15464
15465function is(x, y) {
15466  // SameValue algorithm
15467  if (x === y) {
15468    // Steps 1-5, 7-10
15469    // Steps 6.b-6.e: +0 != -0
15470    // Added the nonzero y check to make Flow happy, but it is redundant
15471    return x !== 0 || y !== 0 || 1 / x === 1 / y;
15472  } // Step 6.a: NaN == NaN
15473
15474
15475  return x !== x && y !== y;
15476}
15477/**
15478 * Performs equality by iterating through keys on an object and returning false
15479 * when any key has values which are not strictly equal between the arguments.
15480 * Returns true when the values of all keys are strictly equal.
15481 */
15482
15483
15484function shallowEqual(objA, objB) {
15485  if (is(objA, objB)) {
15486    return true;
15487  }
15488
15489  if ((0, _typeof2["default"])(objA) !== 'object' || objA === null || (0, _typeof2["default"])(objB) !== 'object' || objB === null) {
15490    return false;
15491  }
15492
15493  var keysA = Object.keys(objA);
15494  var keysB = Object.keys(objB);
15495
15496  if (keysA.length !== keysB.length) {
15497    return false;
15498  } // Test for A's keys different from B.
15499
15500
15501  for (var i = 0; i < keysA.length; i++) {
15502    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
15503      return false;
15504    }
15505  }
15506
15507  return true;
15508}
15509
15510var _default = shallowEqual;
15511exports["default"] = _default;
15512
15513/***/ }),
15514/* 282 */
15515/***/ (function(module, exports, __webpack_require__) {
15516
15517"use strict";
15518
15519
15520Object.defineProperty(exports, "__esModule", {
15521  value: true
15522});
15523exports.ixInstances = void 0;
15524
15525var _constants = __webpack_require__(4);
15526
15527var _shared = __webpack_require__(15);
15528
15529var _timm = __webpack_require__(22);
15530/* eslint-env browser */
15531
15532
15533var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
15534    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
15535    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
15536    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
15537    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
15538    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
15539    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED;
15540var _shared$IX2EasingUtil = _shared.IX2EasingUtils,
15541    optimizeFloat = _shared$IX2EasingUtil.optimizeFloat,
15542    applyEasing = _shared$IX2EasingUtil.applyEasing,
15543    createBezierEasing = _shared$IX2EasingUtil.createBezierEasing;
15544var RENDER_GENERAL = _constants.IX2EngineConstants.RENDER_GENERAL;
15545var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
15546    getItemConfigByKey = _shared$IX2VanillaUti.getItemConfigByKey,
15547    getRenderType = _shared$IX2VanillaUti.getRenderType,
15548    getStyleProp = _shared$IX2VanillaUti.getStyleProp;
15549
15550var continuousInstance = function continuousInstance(state, action) {
15551  var lastPosition = state.position,
15552      parameterId = state.parameterId,
15553      actionGroups = state.actionGroups,
15554      destinationKeys = state.destinationKeys,
15555      smoothing = state.smoothing,
15556      restingValue = state.restingValue,
15557      actionTypeId = state.actionTypeId,
15558      customEasingFn = state.customEasingFn,
15559      skipMotion = state.skipMotion,
15560      skipToValue = state.skipToValue;
15561  var parameters = action.payload.parameters;
15562  var velocity = Math.max(1 - smoothing, 0.01);
15563  var paramValue = parameters[parameterId];
15564
15565  if (paramValue == null) {
15566    velocity = 1;
15567    paramValue = restingValue;
15568  }
15569
15570  var nextPosition = Math.max(paramValue, 0) || 0;
15571  var positionDiff = optimizeFloat(nextPosition - lastPosition);
15572  var position = skipMotion ? skipToValue : optimizeFloat(lastPosition + positionDiff * velocity);
15573  var keyframePosition = position * 100;
15574
15575  if (position === lastPosition && state.current) {
15576    return state;
15577  }
15578
15579  var fromActionItem;
15580  var toActionItem;
15581  var positionOffset;
15582  var positionRange;
15583
15584  for (var i = 0, length = actionGroups.length; i < length; i++) {
15585    var _actionGroups$i = actionGroups[i],
15586        keyframe = _actionGroups$i.keyframe,
15587        actionItems = _actionGroups$i.actionItems;
15588
15589    if (i === 0) {
15590      fromActionItem = actionItems[0];
15591    }
15592
15593    if (keyframePosition >= keyframe) {
15594      fromActionItem = actionItems[0];
15595      var nextGroup = actionGroups[i + 1];
15596      var hasNextItem = nextGroup && keyframePosition !== keyframe;
15597      toActionItem = hasNextItem ? nextGroup.actionItems[0] : null;
15598
15599      if (hasNextItem) {
15600        positionOffset = keyframe / 100;
15601        positionRange = (nextGroup.keyframe - keyframe) / 100;
15602      }
15603    }
15604  }
15605
15606  var current = {};
15607
15608  if (fromActionItem && !toActionItem) {
15609    for (var _i = 0, _length = destinationKeys.length; _i < _length; _i++) {
15610      var key = destinationKeys[_i];
15611      current[key] = getItemConfigByKey(actionTypeId, key, fromActionItem.config);
15612    }
15613  } else if (fromActionItem && toActionItem && positionOffset !== undefined && positionRange !== undefined) {
15614    var localPosition = (position - positionOffset) / positionRange;
15615    var easing = fromActionItem.config.easing;
15616    var eased = applyEasing(easing, localPosition, customEasingFn);
15617
15618    for (var _i2 = 0, _length2 = destinationKeys.length; _i2 < _length2; _i2++) {
15619      var _key = destinationKeys[_i2];
15620      var fromVal = getItemConfigByKey(actionTypeId, _key, fromActionItem.config);
15621      var toVal = getItemConfigByKey(actionTypeId, _key, toActionItem.config); // $FlowFixMe — toVal and fromVal could potentially be null, need to update type higher to determine number
15622
15623      var diff = toVal - fromVal; // $FlowFixMe
15624
15625      var value = diff * eased + fromVal;
15626      current[_key] = value;
15627    }
15628  }
15629
15630  return (0, _timm.merge)(state, {
15631    position: position,
15632    current: current
15633  });
15634};
15635
15636var timedInstance = function timedInstance(state, action) {
15637  var _state = state,
15638      active = _state.active,
15639      origin = _state.origin,
15640      start = _state.start,
15641      immediate = _state.immediate,
15642      renderType = _state.renderType,
15643      verbose = _state.verbose,
15644      actionItem = _state.actionItem,
15645      destination = _state.destination,
15646      destinationKeys = _state.destinationKeys,
15647      pluginDuration = _state.pluginDuration,
15648      instanceDelay = _state.instanceDelay,
15649      customEasingFn = _state.customEasingFn,
15650      skipMotion = _state.skipMotion;
15651  var easing = actionItem.config.easing;
15652  var _actionItem$config = actionItem.config,
15653      duration = _actionItem$config.duration,
15654      delay = _actionItem$config.delay;
15655
15656  if (pluginDuration != null) {
15657    duration = pluginDuration;
15658  }
15659
15660  delay = instanceDelay != null ? instanceDelay : delay;
15661
15662  if (renderType === RENDER_GENERAL) {
15663    duration = 0;
15664  } else if (immediate || skipMotion) {
15665    duration = delay = 0;
15666  }
15667
15668  var now = action.payload.now;
15669
15670  if (active && origin) {
15671    var delta = now - (start + delay);
15672
15673    if (verbose) {
15674      var verboseDelta = now - start;
15675      var verboseDuration = duration + delay;
15676      var verbosePosition = optimizeFloat(Math.min(Math.max(0, verboseDelta / verboseDuration), 1));
15677      state = (0, _timm.set)(state, 'verboseTimeElapsed', verboseDuration * verbosePosition);
15678    }
15679
15680    if (delta < 0) {
15681      return state;
15682    }
15683
15684    var position = optimizeFloat(Math.min(Math.max(0, delta / duration), 1));
15685    var eased = applyEasing(easing, position, customEasingFn);
15686    var newProps = {};
15687    var current = null;
15688
15689    if (destinationKeys.length) {
15690      current = destinationKeys.reduce(function (result, key) {
15691        var destValue = destination[key];
15692        var originVal = parseFloat(origin[key]) || 0;
15693        var diff = parseFloat(destValue) - originVal;
15694        var value = diff * eased + originVal;
15695        result[key] = value;
15696        return result;
15697      }, {});
15698    }
15699
15700    newProps.current = current;
15701    newProps.position = position;
15702
15703    if (position === 1) {
15704      newProps.active = false;
15705      newProps.complete = true;
15706    }
15707
15708    return (0, _timm.merge)(state, newProps);
15709  }
15710
15711  return state;
15712};
15713
15714var ixInstances = function ixInstances() {
15715  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
15716  var action = arguments.length > 1 ? arguments[1] : undefined;
15717
15718  switch (action.type) {
15719    case IX2_RAW_DATA_IMPORTED:
15720      {
15721        return action.payload.ixInstances || Object.freeze({});
15722      }
15723
15724    case IX2_SESSION_STOPPED:
15725      {
15726        return Object.freeze({});
15727      }
15728
15729    case IX2_INSTANCE_ADDED:
15730      {
15731        var _action$payload = action.payload,
15732            instanceId = _action$payload.instanceId,
15733            elementId = _action$payload.elementId,
15734            actionItem = _action$payload.actionItem,
15735            eventId = _action$payload.eventId,
15736            eventTarget = _action$payload.eventTarget,
15737            eventStateKey = _action$payload.eventStateKey,
15738            actionListId = _action$payload.actionListId,
15739            groupIndex = _action$payload.groupIndex,
15740            isCarrier = _action$payload.isCarrier,
15741            origin = _action$payload.origin,
15742            destination = _action$payload.destination,
15743            immediate = _action$payload.immediate,
15744            verbose = _action$payload.verbose,
15745            continuous = _action$payload.continuous,
15746            parameterId = _action$payload.parameterId,
15747            actionGroups = _action$payload.actionGroups,
15748            smoothing = _action$payload.smoothing,
15749            restingValue = _action$payload.restingValue,
15750            pluginInstance = _action$payload.pluginInstance,
15751            pluginDuration = _action$payload.pluginDuration,
15752            instanceDelay = _action$payload.instanceDelay,
15753            skipMotion = _action$payload.skipMotion,
15754            skipToValue = _action$payload.skipToValue;
15755        var actionTypeId = actionItem.actionTypeId;
15756        var renderType = getRenderType(actionTypeId);
15757        var styleProp = getStyleProp(renderType, actionTypeId);
15758        var destinationKeys = Object.keys(destination).filter(function (key) {
15759          return destination[key] != null;
15760        });
15761        var easing = actionItem.config.easing;
15762        return (0, _timm.set)(state, instanceId, {
15763          id: instanceId,
15764          elementId: elementId,
15765          active: false,
15766          position: 0,
15767          start: 0,
15768          origin: origin,
15769          destination: destination,
15770          destinationKeys: destinationKeys,
15771          immediate: immediate,
15772          verbose: verbose,
15773          current: null,
15774          actionItem: actionItem,
15775          actionTypeId: actionTypeId,
15776          eventId: eventId,
15777          eventTarget: eventTarget,
15778          eventStateKey: eventStateKey,
15779          actionListId: actionListId,
15780          groupIndex: groupIndex,
15781          renderType: renderType,
15782          isCarrier: isCarrier,
15783          styleProp: styleProp,
15784          continuous: continuous,
15785          parameterId: parameterId,
15786          actionGroups: actionGroups,
15787          smoothing: smoothing,
15788          restingValue: restingValue,
15789          pluginInstance: pluginInstance,
15790          pluginDuration: pluginDuration,
15791          instanceDelay: instanceDelay,
15792          skipMotion: skipMotion,
15793          skipToValue: skipToValue,
15794          customEasingFn: Array.isArray(easing) && easing.length === 4 ? createBezierEasing(easing) : undefined
15795        });
15796      }
15797
15798    case IX2_INSTANCE_STARTED:
15799      {
15800        var _action$payload2 = action.payload,
15801            _instanceId = _action$payload2.instanceId,
15802            time = _action$payload2.time;
15803        return (0, _timm.mergeIn)(state, [_instanceId], {
15804          active: true,
15805          complete: false,
15806          start: time
15807        });
15808      }
15809
15810    case IX2_INSTANCE_REMOVED:
15811      {
15812        var _instanceId2 = action.payload.instanceId;
15813
15814        if (!state[_instanceId2]) {
15815          return state;
15816        }
15817
15818        var newState = {};
15819        var keys = Object.keys(state);
15820        var length = keys.length;
15821
15822        for (var i = 0; i < length; i++) {
15823          var key = keys[i];
15824
15825          if (key !== _instanceId2) {
15826            newState[key] = state[key];
15827          }
15828        }
15829
15830        return newState;
15831      }
15832
15833    case IX2_ANIMATION_FRAME_CHANGED:
15834      {
15835        var _newState = state;
15836
15837        var _keys = Object.keys(state);
15838
15839        var _length3 = _keys.length;
15840
15841        for (var _i3 = 0; _i3 < _length3; _i3++) {
15842          var _key2 = _keys[_i3];
15843          var instance = state[_key2];
15844          var reducer = instance.continuous ? continuousInstance : timedInstance;
15845          _newState = (0, _timm.set)(_newState, _key2, reducer(instance, action));
15846        }
15847
15848        return _newState;
15849      }
15850
15851    default:
15852      {
15853        return state;
15854      }
15855  }
15856};
15857
15858exports.ixInstances = ixInstances;
15859
15860/***/ }),
15861/* 283 */
15862/***/ (function(module, exports, __webpack_require__) {
15863
15864"use strict";
15865
15866
15867Object.defineProperty(exports, "__esModule", {
15868  value: true
15869});
15870exports.ixParameters = void 0;
15871
15872var _constants = __webpack_require__(4);
15873
15874var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
15875    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
15876    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
15877    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED; // prettier-ignore
15878
15879var ixParameters = function ixParameters() {
15880  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
15881    /*mutable flat state*/
15882  };
15883  var action = arguments.length > 1 ? arguments[1] : undefined;
15884
15885  switch (action.type) {
15886    case IX2_RAW_DATA_IMPORTED:
15887      {
15888        return action.payload.ixParameters || {
15889          /*mutable flat state*/
15890        };
15891      }
15892
15893    case IX2_SESSION_STOPPED:
15894      {
15895        return {
15896          /*mutable flat state*/
15897        };
15898      }
15899
15900    case IX2_PARAMETER_CHANGED:
15901      {
15902        var _action$payload = action.payload,
15903            key = _action$payload.key,
15904            value = _action$payload.value;
15905        state[key] = value;
15906        return state;
15907      }
15908
15909    default:
15910      {
15911        return state;
15912      }
15913  }
15914};
15915
15916exports.ixParameters = ixParameters;
15917
15918/***/ }),
15919/* 284 */
15920/***/ (function(module, exports) {
15921
15922function _objectWithoutPropertiesLoose(source, excluded) {
15923  if (source == null) return {};
15924  var target = {};
15925  var sourceKeys = Object.keys(source);
15926  var key, i;
15927
15928  for (i = 0; i < sourceKeys.length; i++) {
15929    key = sourceKeys[i];
15930    if (excluded.indexOf(key) >= 0) continue;
15931    target[key] = source[key];
15932  }
15933
15934  return target;
15935}
15936
15937module.exports = _objectWithoutPropertiesLoose;
15938
15939/***/ }),
15940/* 285 */
15941/***/ (function(module, exports, __webpack_require__) {
15942
15943var baseKeys = __webpack_require__(57),
15944    getTag = __webpack_require__(59),
15945    isArrayLike = __webpack_require__(17),
15946    isString = __webpack_require__(286),
15947    stringSize = __webpack_require__(287);
15948
15949/** `Object#toString` result references. */
15950var mapTag = '[object Map]',
15951    setTag = '[object Set]';
15952
15953/**
15954 * Gets the size of `collection` by returning its length for array-like
15955 * values or the number of own enumerable string keyed properties for objects.
15956 *
15957 * @static
15958 * @memberOf _
15959 * @since 0.1.0
15960 * @category Collection
15961 * @param {Array|Object|string} collection The collection to inspect.
15962 * @returns {number} Returns the collection size.
15963 * @example
15964 *
15965 * _.size([1, 2, 3]);
15966 * // => 3
15967 *
15968 * _.size({ 'a': 1, 'b': 2 });
15969 * // => 2
15970 *
15971 * _.size('pebbles');
15972 * // => 7
15973 */
15974function size(collection) {
15975  if (collection == null) {
15976    return 0;
15977  }
15978  if (isArrayLike(collection)) {
15979    return isString(collection) ? stringSize(collection) : collection.length;
15980  }
15981  var tag = getTag(collection);
15982  if (tag == mapTag || tag == setTag) {
15983    return collection.size;
15984  }
15985  return baseKeys(collection).length;
15986}
15987
15988module.exports = size;
15989
15990
15991/***/ }),
15992/* 286 */
15993/***/ (function(module, exports, __webpack_require__) {
15994
15995var baseGetTag = __webpack_require__(16),
15996    isArray = __webpack_require__(2),
15997    isObjectLike = __webpack_require__(12);
15998
15999/** `Object#toString` result references. */
16000var stringTag = '[object String]';
16001
16002/**
16003 * Checks if `value` is classified as a `String` primitive or object.
16004 *
16005 * @static
16006 * @since 0.1.0
16007 * @memberOf _
16008 * @category Lang
16009 * @param {*} value The value to check.
16010 * @returns {boolean} Returns `true` if `value` is a string, else `false`.
16011 * @example
16012 *
16013 * _.isString('abc');
16014 * // => true
16015 *
16016 * _.isString(1);
16017 * // => false
16018 */
16019function isString(value) {
16020  return typeof value == 'string' ||
16021    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
16022}
16023
16024module.exports = isString;
16025
16026
16027/***/ }),
16028/* 287 */
16029/***/ (function(module, exports, __webpack_require__) {
16030
16031var asciiSize = __webpack_require__(288),
16032    hasUnicode = __webpack_require__(289),
16033    unicodeSize = __webpack_require__(290);
16034
16035/**
16036 * Gets the number of symbols in `string`.
16037 *
16038 * @private
16039 * @param {string} string The string to inspect.
16040 * @returns {number} Returns the string size.
16041 */
16042function stringSize(string) {
16043  return hasUnicode(string)
16044    ? unicodeSize(string)
16045    : asciiSize(string);
16046}
16047
16048module.exports = stringSize;
16049
16050
16051/***/ }),
16052/* 288 */
16053/***/ (function(module, exports, __webpack_require__) {
16054
16055var baseProperty = __webpack_require__(113);
16056
16057/**
16058 * Gets the size of an ASCII `string`.
16059 *
16060 * @private
16061 * @param {string} string The string inspect.
16062 * @returns {number} Returns the string size.
16063 */
16064var asciiSize = baseProperty('length');
16065
16066module.exports = asciiSize;
16067
16068
16069/***/ }),
16070/* 289 */
vendor: 2,921 bytes, lines 16071-16160
16071/***/ (function(module, exports) {
16072
16073/** Used to compose unicode character classes. */
16074var rsAstralRange = '\\ud800-\\udfff',
16075    rsComboMarksRange = '\\u0300-\\u036f',
16076    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
16077    rsComboSymbolsRange = '\\u20d0-\\u20ff',
16078    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
16079    rsVarRange = '\\ufe0e\\ufe0f';
16080
16081/** Used to compose unicode capture groups. */
16082var rsZWJ = '\\u200d';
16083
16084/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
16085var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
16086
16087/**
16088 * Checks if `string` contains Unicode symbols.
16089 *
16090 * @private
16091 * @param {string} string The string to inspect.
16092 * @returns {boolean} Returns `true` if a symbol is found, else `false`.
16093 */
16094function hasUnicode(string) {
16095  return reHasUnicode.test(string);
16096}
16097
16098module.exports = hasUnicode;
16099
16100
16101/***/ }),
16102/* 290 */
16103/***/ (function(module, exports) {
16104
16105/** Used to compose unicode character classes. */
16106var rsAstralRange = '\\ud800-\\udfff',
16107    rsComboMarksRange = '\\u0300-\\u036f',
16108    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
16109    rsComboSymbolsRange = '\\u20d0-\\u20ff',
16110    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
16111    rsVarRange = '\\ufe0e\\ufe0f';
16112
16113/** Used to compose unicode capture groups. */
16114var rsAstral = '[' + rsAstralRange + ']',
16115    rsCombo = '[' + rsComboRange + ']',
16116    rsFitz = '\\ud83c[\\udffb-\\udfff]',
16117    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
16118    rsNonAstral = '[^' + rsAstralRange + ']',
16119    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
16120    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
16121    rsZWJ = '\\u200d';
16122
16123/** Used to compose unicode regexes. */
16124var reOptMod = rsModifier + '?',
16125    rsOptVar = '[' + rsVarRange + ']?',
16126    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
16127    rsSeq = rsOptVar + reOptMod + rsOptJoin,
16128    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
16129
16130/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
16131var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
16132
16133/**
16134 * Gets the size of a Unicode `string`.
16135 *
16136 * @private
16137 * @param {string} string The string inspect.
16138 * @returns {number} Returns the string size.
16139 */
16140function unicodeSize(string) {
16141  var result = reUnicode.lastIndex = 0;
16142  while (reUnicode.test(string)) {
16143    ++result;
16144  }
16145  return result;
16146}
16147
16148module.exports = unicodeSize;
16149
16150
16151/***/ }),
16152/* 291 */
16153/***/ (function(module, exports, __webpack_require__) {
16154
16155var baseIteratee = __webpack_require__(10),
16156    negate = __webpack_require__(292),
16157    pickBy = __webpack_require__(293);
16158
16159/**
16160 * The opposite of `_.pickBy`;
16160 this method creates an object composed of
16161 * the own and inherited enumerable string keyed properties of `object` that
16162 * `predicate` doesn't return truthy for. The predicate is invoked with two
16163 * arguments: (value, key).
16164 *
16165 * @static
16166 * @memberOf _
16167 * @since 4.0.0
16168 * @category Object
16169 * @param {Object} object The source object.
16170 * @param {Function} [predicate=_.identity] The function invoked per property.
16171 * @returns {Object} Returns the new object.
16172 * @example
16173 *
16174 * var object = { 'a': 1, 'b': '2', 'c': 3 };
16175 *
16176 * _.omitBy(object, _.isNumber);
16177 * // => { 'b': '2' }
16178 */
16179function omitBy(object, predicate) {
16180  return pickBy(object, negate(baseIteratee(predicate)));
16181}
16182
16183module.exports = omitBy;
16184
16185
16186/***/ }),
16187/* 292 */
16188/***/ (function(module, exports) {
16189
16190/** Error message constants. */
16191var FUNC_ERROR_TEXT = 'Expected a function';
16192
16193/**
16194 * Creates a function that negates the result of the predicate `func`. The
16195 * `func` predicate is invoked with the `this` binding and arguments of the
16196 * created function.
16197 *
16198 * @static
16199 * @memberOf _
16200 * @since 3.0.0
16201 * @category Function
16202 * @param {Function} predicate The predicate to negate.
16203 * @returns {Function} Returns the new negated function.
16204 * @example
16205 *
16206 * function isEven(n) {
16207 *   return n % 2 == 0;
16208 * }
16209 *
16210 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
16211 * // => [1, 3, 5]
16212 */
16213function negate(predicate) {
16214  if (typeof predicate != 'function') {
16215    throw new TypeError(FUNC_ERROR_TEXT);
16216  }
16217  return function() {
16218    var args = arguments;
16219    switch (args.length) {
16220      case 0: return !predicate.call(this);
16221      case 1: return !predicate.call(this, args[0]);
16222      case 2: return !predicate.call(this, args[0], args[1]);
16223      case 3: return !predicate.call(this, args[0], args[1], args[2]);
16224    }
16225    return !predicate.apply(this, args);
16226  };
16227}
16228
16229module.exports = negate;
16230
16231
16232/***/ }),
16233/* 293 */
16234/***/ (function(module, exports, __webpack_require__) {
16235
16236var arrayMap = __webpack_require__(112),
16237    baseIteratee = __webpack_require__(10),
16238    basePickBy = __webpack_require__(294),
16239    getAllKeysIn = __webpack_require__(297);
16240
16241/**
16242 * Creates an object composed of the `object` properties `predicate` returns
16243 * truthy for. The predicate is invoked with two arguments: (value, key).
16244 *
16245 * @static
16246 * @memberOf _
16247 * @since 4.0.0
16248 * @category Object
16249 * @param {Object} object The source object.
16250 * @param {Function} [predicate=_.identity] The function invoked per property.
16251 * @returns {Object} Returns the new object.
16252 * @example
16253 *
16254 * var object = { 'a': 1, 'b': '2', 'c': 3 };
16255 *
16256 * _.pickBy(object, _.isNumber);
16257 * // => { 'a': 1, 'c': 3 }
16258 */
16259function pickBy(object, predicate) {
16260  if (object == null) {
16261    return {};
16262  }
16263  var props = arrayMap(getAllKeysIn(object), function(prop) {
16264    return [prop];
16265  });
16266  predicate = baseIteratee(predicate);
16267  return basePickBy(object, props, function(value, path) {
16268    return predicate(value, path[0]);
16269  });
16270}
16271
16272module.exports = pickBy;
16273
16274
16275/***/ }),
16276/* 294 */
16277/***/ (function(module, exports, __webpack_require__) {
16278
16279var baseGet = __webpack_require__(61),
16280    baseSet = __webpack_require__(295),
16281    castPath = __webpack_require__(37);
16282
16283/**
16284 * The base implementation of  `_.pickBy` without support for iteratee shorthands.
16285 *
16286 * @private
16287 * @param {Object} object The source object.
16288 * @param {string[]} paths The property paths to pick.
16289 * @param {Function} predicate The function invoked per property.
16290 * @returns {Object} Returns the new object.
16291 */
16292function basePickBy(object, paths, predicate) {
16293  var index = -1,
16294      length = paths.length,
16295      result = {};
16296
16297  while (++index < length) {
16298    var path = paths[index],
16299        value = baseGet(object, path);
16300
16301    if (predicate(value, path)) {
16302      baseSet(result, castPath(path, object), value);
16303    }
16304  }
16305  return result;
16306}
16307
16308module.exports = basePickBy;
16309
16310
16311/***/ }),
16312/* 295 */
16313/***/ (function(module, exports, __webpack_require__) {
16314
16315var assignValue = __webpack_require__(296),
16316    castPath = __webpack_require__(37),
16317    isIndex = __webpack_require__(54),
16318    isObject = __webpack_require__(8),
16319    toKey = __webpack_require__(24);
16320
16321/**
16322 * The base implementation of `_.set`.
16323 *
16324 * @private
16325 * @param {Object} object The object to modify.
16326 * @param {Array|string} path The path of the property to set.
16327 * @param {*} value The value to set.
16328 * @param {Function} [customizer] The function to customize path creation.
16329 * @returns {Object} Returns `object`.
16330 */
16331function baseSet(object, path, value, customizer) {
16332  if (!isObject(object)) {
16333    return object;
16334  }
16335  path = castPath(path, object);
16336
16337  var index = -1,
16338      length = path.length,
16339      lastIndex = length - 1,
16340      nested = object;
16341
16342  while (nested != null && ++index < length) {
16343    var key = toKey(path[index]),
16344        newValue = value;
16345
16346    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
16347      return object;
16348    }
16349
16350    if (index != lastIndex) {
16351      var objValue = nested[key];
16352      newValue = customizer ? customizer(objValue, key, nested) : undefined;
16353      if (newValue === undefined) {
16354        newValue = isObject(objValue)
16355          ? objValue
16356          : (isIndex(path[index + 1]) ? [] : {});
16357      }
16358    }
16359    assignValue(nested, key, newValue);
16360    nested = nested[key];
16361  }
16362  return object;
16363}
16364
16365module.exports = baseSet;
16366
16367
16368/***/ }),
16369/* 296 */
16370/***/ (function(module, exports, __webpack_require__) {
16371
16372var baseAssignValue = __webpack_require__(124),
16373    eq = __webpack_require__(49);
16374
16375/** Used for built-in method references. */
16376var objectProto = Object.prototype;
16377
16378/** Used to check objects for own properties. */
16379var hasOwnProperty = objectProto.hasOwnProperty;
16380
16381/**
16382 * Assigns `value` to `key` of `object` if the existing value is not equivalent
16383 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
16384 * for equality comparisons.
16385 *
16386 * @private
16387 * @param {Object} object The object to modify.
16388 * @param {string} key The key of the property to assign.
16389 * @param {*} value The value to assign.
16390 */
16391function assignValue(object, key, value) {
16392  var objValue = object[key];
16393  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
16394      (value === undefined && !(key in object))) {
16395    baseAssignValue(object, key, value);
16396  }
16397}
16398
16399module.exports = assignValue;
16400
16401
16402/***/ }),
16403/* 297 */
16404/***/ (function(module, exports, __webpack_require__) {
16405
16406var baseGetAllKeys = __webpack_require__(103),
16407    getSymbolsIn = __webpack_require__(298),
16408    keysIn = __webpack_require__(300);
16409
16410/**
16411 * Creates an array of own and inherited enumerable property names and
16412 * symbols of `object`.
16413 *
16414 * @private
16415 * @param {Object} object The object to query.
16416 * @returns {Array} Returns the array of property names and symbols.
16417 */
16418function getAllKeysIn(object) {
16419  return baseGetAllKeys(object, keysIn, getSymbolsIn);
16420}
16421
16422module.exports = getAllKeysIn;
16423
16424
16425/***/ }),
16426/* 298 */
16427/***/ (function(module, exports, __webpack_require__) {
16428
16429var arrayPush = __webpack_require__(52),
16430    getPrototype = __webpack_require__(299),
16431    getSymbols = __webpack_require__(104),
16432    stubArray = __webpack_require__(105);
16433
16434/* Built-in method references for those with the same name as other `lodash` methods. */
16435var nativeGetSymbols = Object.getOwnPropertySymbols;
16436
16437/**
16438 * Creates an array of the own and inherited enumerable symbols of `object`.
16439 *
16440 * @private
16441 * @param {Object} object The object to query.
16442 * @returns {Array} Returns the array of symbols.
16443 */
16444var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
16445  var result = [];
16446  while (object) {
vendor: 8,847 bytes, lines 16447-16805
16447    arrayPush(result, getSymbols(object));
16448    object = getPrototype(object);
16449  }
16450  return result;
16451};
16452
16453module.exports = getSymbolsIn;
16454
16455
16456/***/ }),
16457/* 299 */
16458/***/ (function(module, exports, __webpack_require__) {
16459
16460var overArg = __webpack_require__(108);
16461
16462/** Built-in value references. */
16463var getPrototype = overArg(Object.getPrototypeOf, Object);
16464
16465module.exports = getPrototype;
16466
16467
16468/***/ }),
16469/* 300 */
16470/***/ (function(module, exports, __webpack_require__) {
16471
16472var arrayLikeKeys = __webpack_require__(106),
16473    baseKeysIn = __webpack_require__(301),
16474    isArrayLike = __webpack_require__(17);
16475
16476/**
16477 * Creates an array of the own and inherited enumerable property names of `object`.
16478 *
16479 * **Note:** Non-object values are coerced to objects.
16480 *
16481 * @static
16482 * @memberOf _
16483 * @since 3.0.0
16484 * @category Object
16485 * @param {Object} object The object to query.
16486 * @returns {Array} Returns the array of property names.
16487 * @example
16488 *
16489 * function Foo() {
16490 *   this.a = 1;
16491 *   this.b = 2;
16492 * }
16493 *
16494 * Foo.prototype.c = 3;
16495 *
16496 * _.keysIn(new Foo);
16497 * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
16498 */
16499function keysIn(object) {
16500  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
16501}
16502
16503module.exports = keysIn;
16504
16505
16506/***/ }),
16507/* 301 */
16508/***/ (function(module, exports, __webpack_require__) {
16509
16510var isObject = __webpack_require__(8),
16511    isPrototype = __webpack_require__(58),
16512    nativeKeysIn = __webpack_require__(302);
16513
16514/** Used for built-in method references. */
16515var objectProto = Object.prototype;
16516
16517/** Used to check objects for own properties. */
16518var hasOwnProperty = objectProto.hasOwnProperty;
16519
16520/**
16521 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
16522 *
16523 * @private
16524 * @param {Object} object The object to query.
16525 * @returns {Array} Returns the array of property names.
16526 */
16527function baseKeysIn(object) {
16528  if (!isObject(object)) {
16529    return nativeKeysIn(object);
16530  }
16531  var isProto = isPrototype(object),
16532      result = [];
16533
16534  for (var key in object) {
16535    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
16536      result.push(key);
16537    }
16538  }
16539  return result;
16540}
16541
16542module.exports = baseKeysIn;
16543
16544
16545/***/ }),
16546/* 302 */
16547/***/ (function(module, exports) {
16548
16549/**
16550 * This function is like
16551 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
16552 * except that it includes inherited enumerable properties.
16553 *
16554 * @private
16555 * @param {Object} object The object to query.
16556 * @returns {Array} Returns the array of property names.
16557 */
16558function nativeKeysIn(object) {
16559  var result = [];
16560  if (object != null) {
16561    for (var key in Object(object)) {
16562      result.push(key);
16563    }
16564  }
16565  return result;
16566}
16567
16568module.exports = nativeKeysIn;
16569
16570
16571/***/ }),
16572/* 303 */
16573/***/ (function(module, exports, __webpack_require__) {
16574
16575var baseKeys = __webpack_require__(57),
16576    getTag = __webpack_require__(59),
16577    isArguments = __webpack_require__(36),
16578    isArray = __webpack_require__(2),
16579    isArrayLike = __webpack_require__(17),
16580    isBuffer = __webpack_require__(53),
16581    isPrototype = __webpack_require__(58),
16582    isTypedArray = __webpack_require__(55);
16583
16584/** `Object#toString` result references. */
16585var mapTag = '[object Map]',
16586    setTag = '[object Set]';
16587
16588/** Used for built-in method references. */
16589var objectProto = Object.prototype;
16590
16591/** Used to check objects for own properties. */
16592var hasOwnProperty = objectProto.hasOwnProperty;
16593
16594/**
16595 * Checks if `value` is an empty object, collection, map, or set.
16596 *
16597 * Objects are considered empty if they have no own enumerable string keyed
16598 * properties.
16599 *
16600 * Array-like values such as `arguments` objects, arrays, buffers, strings, or
16601 * jQuery-like collections are considered empty if they have a `length` of `0`.
16602 * Similarly, maps and sets are considered empty if they have a `size` of `0`.
16603 *
16604 * @static
16605 * @memberOf _
16606 * @since 0.1.0
16607 * @category Lang
16608 * @param {*} value The value to check.
16609 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
16610 * @example
16611 *
16612 * _.isEmpty(null);
16613 * // => true
16614 *
16615 * _.isEmpty(true);
16616 * // => true
16617 *
16618 * _.isEmpty(1);
16619 * // => true
16620 *
16621 * _.isEmpty([1, 2, 3]);
16622 * // => false
16623 *
16624 * _.isEmpty({ 'a': 1 });
16625 * // => false
16626 */
16627function isEmpty(value) {
16628  if (value == null) {
16629    return true;
16630  }
16631  if (isArrayLike(value) &&
16632      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
16633        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
16634    return !value.length;
16635  }
16636  var tag = getTag(value);
16637  if (tag == mapTag || tag == setTag) {
16638    return !value.size;
16639  }
16640  if (isPrototype(value)) {
16641    return !baseKeys(value).length;
16642  }
16643  for (var key in value) {
16644    if (hasOwnProperty.call(value, key)) {
16645      return false;
16646    }
16647  }
16648  return true;
16649}
16650
16651module.exports = isEmpty;
16652
16653
16654/***/ }),
16655/* 304 */
16656/***/ (function(module, exports, __webpack_require__) {
16657
16658var baseAssignValue = __webpack_require__(124),
16659    baseForOwn = __webpack_require__(122),
16660    baseIteratee = __webpack_require__(10);
16661
16662/**
16663 * Creates an object with the same keys as `object` and values generated
16664 * by running each own enumerable string keyed property of `object` thru
16665 * `iteratee`. The iteratee is invoked with three arguments:
16666 * (value, key, object).
16667 *
16668 * @static
16669 * @memberOf _
16670 * @since 2.4.0
16671 * @category Object
16672 * @param {Object} object The object to iterate over.
16673 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
16674 * @returns {Object} Returns the new mapped object.
16675 * @see _.mapKeys
16676 * @example
16677 *
16678 * var users = {
16679 *   'fred':    { 'user': 'fred',    'age': 40 },
16680 *   'pebbles': { 'user': 'pebbles', 'age': 1 }
16681 * };
16682 *
16683 * _.mapValues(users, function(o) { return o.age; });
16684 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
16685 *
16686 * // The `_.property` iteratee shorthand.
16687 * _.mapValues(users, 'age');
16688 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
16689 */
16690function mapValues(object, iteratee) {
16691  var result = {};
16692  iteratee = baseIteratee(iteratee, 3);
16693
16694  baseForOwn(object, function(value, key, object) {
16695    baseAssignValue(result, key, iteratee(value, key, object));
16696  });
16697  return result;
16698}
16699
16700module.exports = mapValues;
16701
16702
16703/***/ }),
16704/* 305 */
16705/***/ (function(module, exports, __webpack_require__) {
16706
16707var arrayEach = __webpack_require__(306),
16708    baseEach = __webpack_require__(121),
16709    castFunction = __webpack_require__(307),
16710    isArray = __webpack_require__(2);
16711
16712/**
16713 * Iterates over elements of `collection` and invokes `iteratee` for each element.
16714 * The iteratee is invoked with three arguments: (value, index|key, collection).
16715 * Iteratee functions may exit iteration early by explicitly returning `false`.
16716 *
16717 * **Note:** As with other "Collections" methods, objects with a "length"
16718 * property are iterated like arrays. To avoid this behavior use `_.forIn`
16719 * or `_.forOwn` for object iteration.
16720 *
16721 * @static
16722 * @memberOf _
16723 * @since 0.1.0
16724 * @alias each
16725 * @category Collection
16726 * @param {Array|Object} collection The collection to iterate over.
16727 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
16728 * @returns {Array|Object} Returns `collection`.
16729 * @see _.forEachRight
16730 * @example
16731 *
16732 * _.forEach([1, 2], function(value) {
16733 *   console.log(value);
16734 * });
16735 * // => Logs `1` then `2`.
16736 *
16737 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
16738 *   console.log(key);
16739 * });
16740 * // => Logs 'a' then 'b' (iteration order is not guaranteed).
16741 */
16742function forEach(collection, iteratee) {
16743  var func = isArray(collection) ? arrayEach : baseEach;
16744  return func(collection, castFunction(iteratee));
16745}
16746
16747module.exports = forEach;
16748
16749
16750/***/ }),
16751/* 306 */
16752/***/ (function(module, exports) {
16753
16754/**
16755 * A specialized version of `_.forEach` for arrays without support for
16756 * iteratee shorthands.
16757 *
16758 * @private
16759 * @param {Array} [array] The array to iterate over.
16760 * @param {Function} iteratee The function invoked per iteration.
16761 * @returns {Array} Returns `array`.
16762 */
16763function arrayEach(array, iteratee) {
16764  var index = -1,
16765      length = array == null ? 0 : array.length;
16766
16767  while (++index < length) {
16768    if (iteratee(array[index], index, array) === false) {
16769      break;
16770    }
16771  }
16772  return array;
16773}
16774
16775module.exports = arrayEach;
16776
16777
16778/***/ }),
16779/* 307 */
16780/***/ (function(module, exports, __webpack_require__) {
16781
16782var identity = __webpack_require__(63);
16783
16784/**
16785 * Casts `value` to `identity` if it's not a function.
16786 *
16787 * @private
16788 * @param {*} value The value to inspect.
16789 * @returns {Function} Returns cast function.
16790 */
16791function castFunction(value) {
16792  return typeof value == 'function' ? value : identity;
16793}
16794
16795module.exports = castFunction;
16796
16797
16798/***/ }),
16799/* 308 */
16800/***/ (function(module, exports, __webpack_require__) {
16801
16802var debounce = __webpack_require__(309),
16803    isObject = __webpack_require__(8);
16804
16805/** Error message constants. */
vendor: 9,976 bytes, lines 16806-17120
16806var FUNC_ERROR_TEXT = 'Expected a function';
16807
16808/**
16809 * Creates a throttled function that only invokes `func` at most once per
16810 * every `wait` milliseconds. The throttled function comes with a `cancel`
16811 * method to cancel delayed `func` invocations and a `flush` method to
16812 * immediately invoke them. Provide `options` to indicate whether `func`
16813 * should be invoked on the leading and/or trailing edge of the `wait`
16814 * timeout. The `func` is invoked with the last arguments provided to the
16815 * throttled function. Subsequent calls to the throttled function return the
16816 * result of the last `func` invocation.
16817 *
16818 * **Note:** If `leading` and `trailing` options are `true`, `func` is
16819 * invoked on the trailing edge of the timeout only if the throttled function
16820 * is invoked more than once during the `wait` timeout.
16821 *
16822 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16823 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16824 *
16825 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16826 * for details over the differences between `_.throttle` and `_.debounce`.
16827 *
16828 * @static
16829 * @memberOf _
16830 * @since 0.1.0
16831 * @category Function
16832 * @param {Function} func The function to throttle.
16833 * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
16834 * @param {Object} [options={}] The options object.
16835 * @param {boolean} [options.leading=true]
16836 *  Specify invoking on the leading edge of the timeout.
16837 * @param {boolean} [options.trailing=true]
16838 *  Specify invoking on the trailing edge of the timeout.
16839 * @returns {Function} Returns the new throttled function.
16840 * @example
16841 *
16842 * // Avoid excessively updating the position while scrolling.
16843 * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
16844 *
16845 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
16846 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
16847 * jQuery(element).on('click', throttled);
16848 *
16849 * // Cancel the trailing throttled invocation.
16850 * jQuery(window).on('popstate', throttled.cancel);
16851 */
16852function throttle(func, wait, options) {
16853  var leading = true,
16854      trailing = true;
16855
16856  if (typeof func != 'function') {
16857    throw new TypeError(FUNC_ERROR_TEXT);
16858  }
16859  if (isObject(options)) {
16860    leading = 'leading' in options ? !!options.leading : leading;
16861    trailing = 'trailing' in options ? !!options.trailing : trailing;
16862  }
16863  return debounce(func, wait, {
16864    'leading': leading,
16865    'maxWait': wait,
16866    'trailing': trailing
16867  });
16868}
16869
16870module.exports = throttle;
16871
16872
16873/***/ }),
16874/* 309 */
16875/***/ (function(module, exports, __webpack_require__) {
16876
16877var isObject = __webpack_require__(8),
16878    now = __webpack_require__(310),
16879    toNumber = __webpack_require__(64);
16880
16881/** Error message constants. */
16882var FUNC_ERROR_TEXT = 'Expected a function';
16883
16884/* Built-in method references for those with the same name as other `lodash` methods. */
16885var nativeMax = Math.max,
16886    nativeMin = Math.min;
16887
16888/**
16889 * Creates a debounced function that delays invoking `func` until after `wait`
16890 * milliseconds have elapsed since the last time the debounced function was
16891 * invoked. The debounced function comes with a `cancel` method to cancel
16892 * delayed `func` invocations and a `flush` method to immediately invoke them.
16893 * Provide `options` to indicate whether `func` should be invoked on the
16894 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
16895 * with the last arguments provided to the debounced function. Subsequent
16896 * calls to the debounced function return the result of the last `func`
16897 * invocation.
16898 *
16899 * **Note:** If `leading` and `trailing` options are `true`, `func` is
16900 * invoked on the trailing edge of the timeout only if the debounced function
16901 * is invoked more than once during the `wait` timeout.
16902 *
16903 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16904 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16905 *
16906 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16907 * for details over the differences between `_.debounce` and `_.throttle`.
16908 *
16909 * @static
16910 * @memberOf _
16911 * @since 0.1.0
16912 * @category Function
16913 * @param {Function} func The function to debounce.
16914 * @param {number} [wait=0] The number of milliseconds to delay.
16915 * @param {Object} [options={}] The options object.
16916 * @param {boolean} [options.leading=false]
16917 *  Specify invoking on the leading edge of the timeout.
16918 * @param {number} [options.maxWait]
16919 *  The maximum time `func` is allowed to be delayed before it's invoked.
16920 * @param {boolean} [options.trailing=true]
16921 *  Specify invoking on the trailing edge of the timeout.
16922 * @returns {Function} Returns the new debounced function.
16923 * @example
16924 *
16925 * // Avoid costly calculations while the window size is in flux.
16926 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
16927 *
16928 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
16929 * jQuery(element).on('click', _.debounce(sendMail, 300, {
16930 *   'leading': true,
16931 *   'trailing': false
16932 * }));
16933 *
16934 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
16935 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
16936 * var source = new EventSource('/stream');
16937 * jQuery(source).on('message', debounced);
16938 *
16939 * // Cancel the trailing debounced invocation.
16940 * jQuery(window).on('popstate', debounced.cancel);
16941 */
16942function debounce(func, wait, options) {
16943  var lastArgs,
16944      lastThis,
16945      maxWait,
16946      result,
16947      timerId,
16948      lastCallTime,
16949      lastInvokeTime = 0,
16950      leading = false,
16951      maxing = false,
16952      trailing = true;
16953
16954  if (typeof func != 'function') {
16955    throw new TypeError(FUNC_ERROR_TEXT);
16956  }
16957  wait = toNumber(wait) || 0;
16958  if (isObject(options)) {
16959    leading = !!options.leading;
16960    maxing = 'maxWait' in options;
16961    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
16962    trailing = 'trailing' in options ? !!options.trailing : trailing;
16963  }
16964
16965  function invokeFunc(time) {
16966    var args = lastArgs,
16967        thisArg = lastThis;
16968
16969    lastArgs = lastThis = undefined;
16970    lastInvokeTime = time;
16971    result = func.apply(thisArg, args);
16972    return result;
16973  }
16974
16975  function leadingEdge(time) {
16976    // Reset any `maxWait` timer.
16977    lastInvokeTime = time;
16978    // Start the timer for the trailing edge.
16979    timerId = setTimeout(timerExpired, wait);
16980    // Invoke the leading edge.
16981    return leading ? invokeFunc(time) : result;
16982  }
16983
16984  function remainingWait(time) {
16985    var timeSinceLastCall = time - lastCallTime,
16986        timeSinceLastInvoke = time - lastInvokeTime,
16987        timeWaiting = wait - timeSinceLastCall;
16988
16989    return maxing
16990      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
16991      : timeWaiting;
16992  }
16993
16994  function shouldInvoke(time) {
16995    var timeSinceLastCall = time - lastCallTime,
16996        timeSinceLastInvoke = time - lastInvokeTime;
16997
16998    // Either this is the first call, activity has stopped and we're at the
16999    // trailing edge, the system time has gone backwards and we're treating
17000    // it as the trailing edge, or we've hit the `maxWait` limit.
17001    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
17002      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
17003  }
17004
17005  function timerExpired() {
17006    var time = now();
17007    if (shouldInvoke(time)) {
17008      return trailingEdge(time);
17009    }
17010    // Restart the timer.
17011    timerId = setTimeout(timerExpired, remainingWait(time));
17012  }
17013
17014  function trailingEdge(time) {
17015    timerId = undefined;
17016
17017    // Only invoke if we have `lastArgs` which means `func` has been
17018    // debounced at least once.
17019    if (trailing && lastArgs) {
17020      return invokeFunc(time);
17021    }
17022    lastArgs = lastThis = undefined;
17023    return result;
17024  }
17025
17026  function cancel() {
17027    if (timerId !== undefined) {
17028      clearTimeout(timerId);
17029    }
17030    lastInvokeTime = 0;
17031    lastArgs = lastCallTime = lastThis = timerId = undefined;
17032  }
17033
17034  function flush() {
17035    return timerId === undefined ? result : trailingEdge(now());
17036  }
17037
17038  function debounced() {
17039    var time = now(),
17040        isInvoking = shouldInvoke(time);
17041
17042    lastArgs = arguments;
17043    lastThis = this;
17044    lastCallTime = time;
17045
17046    if (isInvoking) {
17047      if (timerId === undefined) {
17048        return leadingEdge(lastCallTime);
17049      }
17050      if (maxing) {
17051        // Handle invocations in a tight loop.
17052        clearTimeout(timerId);
17053        timerId = setTimeout(timerExpired, wait);
17054        return invokeFunc(lastCallTime);
17055      }
17056    }
17057    if (timerId === undefined) {
17058      timerId = setTimeout(timerExpired, wait);
17059    }
17060    return result;
17061  }
17062  debounced.cancel = cancel;
17063  debounced.flush = flush;
17064  return debounced;
17065}
17066
17067module.exports = debounce;
17068
17069
17070/***/ }),
17071/* 310 */
17072/***/ (function(module, exports, __webpack_require__) {
17073
17074var root = __webpack_require__(6);
17075
17076/**
17077 * Gets the timestamp of the number of milliseconds that have elapsed since
17078 * the Unix epoch (1 January 1970 00:00:00 UTC).
17079 *
17080 * @static
17081 * @memberOf _
17082 * @since 2.4.0
17083 * @category Date
17084 * @returns {number} Returns the timestamp.
17085 * @example
17086 *
17087 * _.defer(function(stamp) {
17088 *   console.log(_.now() - stamp);
17089 * }, _.now());
17090 * // => Logs the number of milliseconds it took for the deferred invocation.
17091 */
17092var now = function() {
17093  return root.Date.now();
17094};
17095
17096module.exports = now;
17097
17098
17099/***/ }),
17100/* 311 */
17101/***/ (function(module, exports, __webpack_require__) {
17102
17103"use strict";
17104
17105
17106var _interopRequireDefault = __webpack_require__(0);
17107
17108var _typeof2 = _interopRequireDefault(__webpack_require__(13));
17109
17110Object.defineProperty(exports, "__esModule", {
17111  value: true
17112});
17113exports.setStyle = setStyle;
17114exports.getStyle = getStyle;
17115exports.getProperty = getProperty;
17116exports.matchSelector = matchSelector;
17117exports.getQuerySelector = getQuerySelector;
17118exports.getValidDocument = getValidDocument;
17119exports.queryDocument = queryDocument;
17120exports.elementContains = elementContains;
17121exports.isSiblingNode = isSiblingNode;
17122exports.getChildElements = getChildElements;
17123exports.getSiblingElements = getSiblingElements;
17124exports.getRefType = getRefType;
17125exports.getClosestElement = void 0;
17126
17127var _shared = __webpack_require__(15);
17128
17129var _constants = __webpack_require__(4);
17130/* eslint-env browser */
17131
17132
17133var ELEMENT_MATCHES = _shared.IX2BrowserSupport.ELEMENT_MATCHES;
17134var _constants$IX2EngineC = _constants.IX2EngineConstants,
17135    IX2_ID_DELIMITER = _constants$IX2EngineC.IX2_ID_DELIMITER,
17136    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
17137    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
17138    WF_PAGE = _constants$IX2EngineC.WF_PAGE;
17139
17140function setStyle(element, prop, value) {
17141  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
17142  element.style[prop] = value;
17143}
17144
17145function getStyle(element, prop) {
17146  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
17147  return element.style[prop];
17148}
17149
17150function getProperty(element, prop) {
17151  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
17152  return element[prop];
17153}
17154
17155function matchSelector(selector) {
17156  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
17157  return function (element) {
17158    return element[ELEMENT_MATCHES](selector);
17159  };
17160}
17161
17162function getQuerySelector(_ref) {
17163  var id = _ref.id,
17164      selector = _ref.selector;
17165
17166  if (id) {
17167    var nodeId = id;
17168
17169    if (id.indexOf(IX2_ID_DELIMITER) !== -1) {
17170      var pair = id.split(IX2_ID_DELIMITER);
17171      var pageId = pair[0];
17172      nodeId = pair[1]; // Short circuit query if we're on the wrong page
17173      // $FlowIgnore — if documentElement is null crash
17174
17175      if (pageId !== document.documentElement.getAttribute(WF_PAGE)) {
17176        return null;
17177      }
17178    }
17179
17180    return "[data-w-id=\"".concat(nodeId, "\"], [data-w-id^=\"").concat(nodeId, "_instance\"]");
17181  }
17182
17183  return selector;
17184}
17185
17186function getValidDocument(pageId) {
17187  if (pageId == null || // $FlowIgnore — if documentElement is null crash
17188  pageId === document.documentElement.getAttribute(WF_PAGE)) {
17189    return document;
17190  }
17191
17192  return null;
17193}
17194
17195function queryDocument(baseSelector, descendantSelector) {
17196  return Array.prototype.slice.call(document.querySelectorAll(descendantSelector ? baseSelector + ' ' + descendantSelector : baseSelector));
17197}
17198
17199function elementContains(parent, child) {
17200  return parent.contains(child);
17201}
17202
17203function isSiblingNode(a, b) {
17204  return a !== b && a.parentNode === b.parentNode;
17205}
17206
17207function getChildElements(sourceElements) {
17208  var childElements = [];
17209
17210  for (var i = 0, _ref2 = sourceElements || [], length = _ref2.length; i < length; i++) {
17211    var children = sourceElements[i].children;
17212    var childCount = children.length;
17213
17214    if (!childCount) {
17215      continue;
17216    }
17217
17218    for (var j = 0; j < childCount; j++) {
17219      childElements.push(children[j]);
17220    }
17221  }
17222
17223  return childElements;
17224} // $FlowFixMe
17225
17226
17227function getSiblingElements() {
17228  var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
17229  var elements = [];
17230  var parentCache = [];
17231
17232  for (var i = 0, length = sourceElements.length; i < length; i++) {
17233    var parentNode = sourceElements[i].parentNode;
17234
17235    if (!parentNode || !parentNode.children || !parentNode.children.length) {
17236      continue;
17237    }
17238
17239    if (parentCache.indexOf(parentNode) !== -1) {
17240      continue;
17241    }
17242
17243    parentCache.push(parentNode);
17244    var el = parentNode.firstElementChild;
17245
17246    while (el != null) {
17247      if (sourceElements.indexOf(el) === -1) {
17248        elements.push(el);
17249      }
17250
17251      el = el.nextElementSibling;
17252    }
17253  }
17254
17255  return elements;
17256}
17257
17258var getClosestElement = Element.prototype.closest ? function (element, selector) {
17259  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
17260  if (!document.documentElement.contains(element)) {
17261    return null;
17262  }
17263
17264  return element.closest(selector);
17265} : function (element, selector) {
17266  // $FlowIgnore — if documentElement is null crash
17267  if (!document.documentElement.contains(element)) {
17268    return null;
17269  }
17270
17271  var el = element;
17272
17273  do {
17274    // $FlowIgnore — if documentElement is null crash
17275    if (el[ELEMENT_MATCHES] && el[ELEMENT_MATCHES](selector)) {
17276      return el;
17277    }
17278
17279    el = el.parentNode;
17280  } while (el != null);
17281
17282  return null;
17283};
17284exports.getClosestElement = getClosestElement;
17285
17286function getRefType(ref) {
17287  if (ref != null && (0, _typeof2["default"])(ref) == 'object') {
17288    return ref instanceof Element ? HTML_ELEMENT : PLAIN_OBJECT;
17289  }
17290
17291  return null;
17292}
17293
17294/***/ }),
17295/* 312 */
17296/***/ (function(module, exports, __webpack_require__) {
17297
17298"use strict";
17299
17300
17301var _interopRequireDefault2 = __webpack_require__(0);
17302
17303var _defineProperty2 = _interopRequireDefault2(__webpack_require__(21));
17304
17305var _typeof2 = _interopRequireDefault2(__webpack_require__(13));
17306
17307var _default2;
17308
17309var _interopRequireDefault = __webpack_require__(0);
17310
17311Object.defineProperty(exports, "__esModule", {
17312  value: true
17313});
17314exports["default"] = void 0;
17315
17316var _extends2 = _interopRequireDefault(__webpack_require__(30));
17317
17318var _flow = _interopRequireDefault(__webpack_require__(313));
17319
17320var _get = _interopRequireDefault(__webpack_require__(60));
17321
17322var _clamp = _interopRequireDefault(__webpack_require__(332));
17323
17324var _constants = __webpack_require__(4);
17325
17326var _IX2VanillaEngine = __webpack_require__(123);
17327
17328var _IX2EngineActions = __webpack_require__(65);
17329
17330var _shared = __webpack_require__(15);
17331/* eslint-env browser */
17332
17333
17334var _constants$EventTypeC = _constants.EventTypeConsts,
17335    MOUSE_CLICK = _constants$EventTypeC.MOUSE_CLICK,
17336    MOUSE_SECOND_CLICK = _constants$EventTypeC.MOUSE_SECOND_CLICK,
17337    MOUSE_DOWN = _constants$EventTypeC.MOUSE_DOWN,
17338    MOUSE_UP = _constants$EventTypeC.MOUSE_UP,
17339    MOUSE_OVER = _constants$EventTypeC.MOUSE_OVER,
17340    MOUSE_OUT = _constants$EventTypeC.MOUSE_OUT,
17341    DROPDOWN_CLOSE = _constants$EventTypeC.DROPDOWN_CLOSE,
17342    DROPDOWN_OPEN = _constants$EventTypeC.DROPDOWN_OPEN,
17343    SLIDER_ACTIVE = _constants$EventTypeC.SLIDER_ACTIVE,
17344    SLIDER_INACTIVE = _constants$EventTypeC.SLIDER_INACTIVE,
17345    TAB_ACTIVE = _constants$EventTypeC.TAB_ACTIVE,
17346    TAB_INACTIVE = _constants$EventTypeC.TAB_INACTIVE,
17347    NAVBAR_CLOSE = _constants$EventTypeC.NAVBAR_CLOSE,
17348    NAVBAR_OPEN = _constants$EventTypeC.NAVBAR_OPEN,
17349    MOUSE_MOVE = _constants$EventTypeC.MOUSE_MOVE,
17350    PAGE_SCROLL_DOWN = _constants$EventTypeC.PAGE_SCROLL_DOWN,
17351    SCROLL_INTO_VIEW = _constants$EventTypeC.SCROLL_INTO_VIEW,
17352    SCROLL_OUT_OF_VIEW = _constants$EventTypeC.SCROLL_OUT_OF_VIEW,
17353    PAGE_SCROLL_UP = _constants$EventTypeC.PAGE_SCROLL_UP,
17354    SCROLLING_IN_VIEW = _constants$EventTypeC.SCROLLING_IN_VIEW,
17355    PAGE_FINISH = _constants$EventTypeC.PAGE_FINISH,
17356    ECOMMERCE_CART_CLOSE = _constants$EventTypeC.ECOMMERCE_CART_CLOSE,
17357    ECOMMERCE_CART_OPEN = _constants$EventTypeC.ECOMMERCE_CART_OPEN,
17358    PAGE_START = _constants$EventTypeC.PAGE_START,
17359    PAGE_SCROLL = _constants$EventTypeC.PAGE_SCROLL;
17360var COMPONENT_ACTIVE = 'COMPONENT_ACTIVE';
17361var COMPONENT_INACTIVE = 'COMPONENT_INACTIVE';
17362var COLON_DELIMITER = _constants.IX2EngineConstants.COLON_DELIMITER;
17363var getNamespacedParameterId = _shared.IX2VanillaUtils.getNamespacedParameterId;
17364
17365var composableFilter = function composableFilter(predicate) {
17366  return function (options) {
17367    if ((0, _typeof2["default"])(options) === 'object' && predicate(options)) {
17368      return true;
17369    }
17370
17371    return options;
17372  };
17373};
17374
17375var isElement = composableFilter(function (_ref) {
17376  var element = _ref.element,
17377      nativeEvent = _ref.nativeEvent;
17378  return element === nativeEvent.target;
17379});
17380var containsElement = composableFilter(function (_ref2) {
17381  var element = _ref2.element,
17382      nativeEvent = _ref2.nativeEvent;
17383  return element.contains(nativeEvent.target);
17384});
17385var isOrContainsElement = (0, _flow["default"])([isElement, containsElement]);
17386
17387var getAutoStopEvent = function getAutoStopEvent(store, autoStopEventId) {
17388  if (autoStopEventId) {
17389    var _store$getState = store.getState(),
17390        ixData = _store$getState.ixData;
17391
17392    var events = ixData.events;
17393    var eventToStop = events[autoStopEventId];
17394
17395    if (eventToStop && !AUTO_STOP_DISABLED_EVENTS[eventToStop.eventTypeId]) {
17396      return eventToStop;
17397    }
17398  }
17399
17400  return null;
17401};
17402
17403var hasAutoStopEvent = function hasAutoStopEvent(_ref3) {
17404  var store = _ref3.store,
17405      event = _ref3.event;
17406  var eventAction = event.action;
17407  var autoStopEventId = eventAction.config.autoStopEventId;
17408  return Boolean(getAutoStopEvent(store, autoStopEventId));
17409};
17410
17411var actionGroupCreator = function actionGroupCreator(_ref4, state) {
17412  var store = _ref4.store,
17413      event = _ref4.event,
17414      element = _ref4.element,
17415      eventStateKey = _ref4.eventStateKey;
17416  var eventAction = event.action,
17417      eventId = event.id;
17418  var _eventAction$config = eventAction.config,
17419      actionListId = _eventAction$config.actionListId,
17420      autoStopEventId = _eventAction$config.autoStopEventId;
17421  var eventToStop = getAutoStopEvent(store, autoStopEventId);
17422
17423  if (eventToStop) {
17424    (0, _IX2VanillaEngine.stopActionGroup)({
17425      store: store,
17426      eventId: autoStopEventId,
17427      eventTarget: element,
17428      eventStateKey: autoStopEventId + COLON_DELIMITER + eventStateKey.split(COLON_DELIMITER)[1],
17429      actionListId: (0, _get["default"])(eventToStop, 'action.config.actionListId')
17430    });
17431  }
17432
17433  (0, _IX2VanillaEngine.stopActionGroup)({
17434    store: store,
17435    eventId: eventId,
17436    eventTarget: element,
17437    eventStateKey: eventStateKey,
17438    actionListId: actionListId
17439  });
17440  (0, _IX2VanillaEngine.startActionGroup)({
17441    store: store,
17442    eventId: eventId,
17443    eventTarget: element,
17444    eventStateKey: eventStateKey,
17445    actionListId: actionListId
17446  });
17447  return state;
17448}; // $FlowFixMe
17449
17450
17451var withFilter = function withFilter(filter, handler) {
17452  return function (options, state) {
17453    return (// $FlowFixMe
17454      filter(options, state) === true ? handler(options, state) : state
17455    );
17456  };
17457};
17458
17459var baseActionGroupOptions = {
17460  handler: withFilter(isOrContainsElement, actionGroupCreator)
17461};
17462var baseActivityActionGroupOptions = (0, _extends2["default"])({}, baseActionGroupOptions, {
17463  types: [COMPONENT_ACTIVE, COMPONENT_INACTIVE].join(' ')
17464});
17465var SCROLL_EVENT_TYPES = [{
17466  target: window,
17467  types: 'resize orientationchange',
17468  throttle: true
17469}, {
17470  target: document,
17471  types: 'scroll wheel readystatechange IX2_PAGE_UPDATE',
17472  throttle: true
17473}];
17474var MOUSE_OVER_OUT_TYPES = 'mouseover mouseout';
17475var baseScrollActionGroupOptions = {
17476  types: SCROLL_EVENT_TYPES
17477};
17478var AUTO_STOP_DISABLED_EVENTS = {
17479  PAGE_START: PAGE_START,
17480  PAGE_FINISH: PAGE_FINISH
17481};
17482
17483var getDocumentState = function () {
17484  var supportOffset = window.pageXOffset !== undefined;
17485  var isCSS1Compat = document.compatMode === 'CSS1Compat';
17486  var rootElement = isCSS1Compat ? document.documentElement : document.body;
17487  return function () {
17488    return {
17489      // $FlowFixMe
17490      scrollLeft: supportOffset ? window.pageXOffset : rootElement.scrollLeft,
17491      // $FlowFixMe
17492      scrollTop: supportOffset ? window.pageYOffset : rootElement.scrollTop,
17493      // required to remove elasticity in Safari scrolling.
17494      stiffScrollTop: (0, _clamp["default"])( // $FlowFixMe
17495      supportOffset ? window.pageYOffset : rootElement.scrollTop, 0, // $FlowFixMe
17496      rootElement.scrollHeight - window.innerHeight),
17497      // $FlowFixMe
17498      scrollWidth: rootElement.scrollWidth,
17499      // $FlowFixMe
17500      scrollHeight: rootElement.scrollHeight,
17501      // $FlowFixMe
17502      clientWidth: rootElement.clientWidth,
17503      // $FlowFixMe
17504      clientHeight: rootElement.clientHeight,
17505      innerWidth: window.innerWidth,
17506      innerHeight: window.innerHeight
17507    };
17508  };
17509}();
17510
17511var areBoxesIntersecting = function areBoxesIntersecting(a, b) {
17512  return !(a.left > b.right || a.right < b.left || a.top > b.bottom || a.bottom < b.top);
17513};
17514
17515var isElementHovered = function isElementHovered(_ref5) {
17516  var element = _ref5.element,
17517      nativeEvent = _ref5.nativeEvent;
17518  var type = nativeEvent.type,
17519      target = nativeEvent.target,
17520      relatedTarget = nativeEvent.relatedTarget;
17521  var containsTarget = element.contains(target);
17522
17523  if (type === 'mouseover' && containsTarget) {
17524    return true;
17525  }
17526
17527  var containsRelated = element.contains(relatedTarget);
17528
17529  if (type === 'mouseout' && containsTarget && containsRelated) {
17530    return true;
17531  }
17532
17533  return false;
17534};
17535
17536var isElementVisible = function isElementVisible(options) {
17537  var element = options.element,
17538      config = options.event.config;
17539
17540  var _getDocumentState = getDocumentState(),
17541      clientWidth = _getDocumentState.clientWidth,
17542      clientHeight = _getDocumentState.clientHeight;
17543
17544  var scrollOffsetValue = config.scrollOffsetValue;
17545  var scrollOffsetUnit = config.scrollOffsetUnit;
17546  var isPX = scrollOffsetUnit === 'PX';
17547  var offsetPadding = isPX ? scrollOffsetValue : clientHeight * (scrollOffsetValue || 0) / 100;
17548  return areBoxesIntersecting(element.getBoundingClientRect(), {
17549    left: 0,
17550    top: offsetPadding,
17551    right: clientWidth,
17552    bottom: clientHeight - offsetPadding
17553  });
17554};
17555
17556var whenComponentActiveChange = function whenComponentActiveChange(handler) {
17557  return function (options, oldState) {
17558    var type = options.nativeEvent.type; // prettier-ignore
17559
17560    var isActive = [COMPONENT_ACTIVE, COMPONENT_INACTIVE].indexOf(type) !== -1 ? type === COMPONENT_ACTIVE : oldState.isActive;
17561    var newState = (0, _extends2["default"])({}, oldState, {
17562      isActive: isActive
17563    });
17564
17565    if (!oldState || newState.isActive !== oldState.isActive) {
17566      return handler(options, newState) || newState;
17567    }
17568
17569    return newState;
17570  };
17571};
17572
17573var whenElementHoverChange = function whenElementHoverChange(handler) {
17574  return function (options, oldState) {
17575    var newState = {
17576      elementHovered: isElementHovered(options)
17577    };
17578
17579    if (oldState ? newState.elementHovered !== oldState.elementHovered : newState.elementHovered) {
17580      return handler(options, newState) || newState;
17581    }
17582
17583    return newState;
17584  };
17585}; // $FlowFixMe
17586
17587
17588var whenElementVisibiltyChange = function whenElementVisibiltyChange(handler) {
17589  return function (options, oldState) {
17590    var newState = (0, _extends2["default"])({}, oldState, {
17591      elementVisible: isElementVisible(options)
17592    });
17593
17594    if (oldState ? newState.elementVisible !== oldState.elementVisible : newState.elementVisible) {
17595      return handler(options, newState) || newState;
17596    }
17597
17598    return newState;
17599  };
17600}; // $FlowFixMe
17601
17602
17603var whenScrollDirectionChange = function whenScrollDirectionChange(handler) {
17604  return function (options) {
17605    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
17606
17607    var _getDocumentState2 = getDocumentState(),
17608        scrollTop = _getDocumentState2.stiffScrollTop,
17609        scrollHeight = _getDocumentState2.scrollHeight,
17610        innerHeight = _getDocumentState2.innerHeight;
17611
17612    var _options$event = options.event,
17613        config = _options$event.config,
17614        eventTypeId = _options$event.eventTypeId;
17615    var scrollOffsetValue = config.scrollOffsetValue,
17616        scrollOffsetUnit = config.scrollOffsetUnit;
17617    var isPX = scrollOffsetUnit === 'PX';
17618    var scrollHeightBounds = scrollHeight - innerHeight; // percent top since innerHeight may change for mobile devices which also changes the scrollTop value.
17619
17620    var percentTop = Number((scrollTop / scrollHeightBounds).toFixed(2)); // no state change
17621
17622    if (oldState && oldState.percentTop === percentTop) {
17623      return oldState;
17624    }
17625
17626    var scrollTopPadding = (isPX ? scrollOffsetValue : innerHeight * (scrollOffsetValue || 0) / 100) / scrollHeightBounds;
17627    var scrollingDown;
17628    var scrollDirectionChanged;
17629    var anchorTop = 0;
17630
17631    if (oldState) {
17632      scrollingDown = percentTop > oldState.percentTop;
17633      scrollDirectionChanged = oldState.scrollingDown !== scrollingDown;
17634      anchorTop = scrollDirectionChanged ? percentTop : oldState.anchorTop;
17635    }
17636
17637    var inBounds = eventTypeId === PAGE_SCROLL_DOWN ? percentTop >= anchorTop + scrollTopPadding : percentTop <= anchorTop - scrollTopPadding;
17638    var newState = (0, _extends2["default"])({}, oldState, {
17639      percentTop: percentTop,
17640      inBounds: inBounds,
17641      anchorTop: anchorTop,
17642      scrollingDown: scrollingDown
17643    });
17644
17645    if (oldState && inBounds && (scrollDirectionChanged || newState.inBounds !== oldState.inBounds)) {
17646      return handler(options, newState) || newState;
17647    }
17648
17649    return newState;
17650  };
17651};
17652
17653var pointIntersects = function pointIntersects(point, rect) {
17654  return point.left > rect.left && point.left < rect.right && point.top > rect.top && point.top < rect.bottom;
17655};
17656
17657var whenPageLoadFinish = function whenPageLoadFinish(handler) {
17658  return function (options, oldState) {
17659    var newState = {
17660      finished: document.readyState === 'complete'
17661    };
17662
17663    if (newState.finished && !(oldState && oldState.finshed)) {
17664      handler(options);
17665    }
17666
17667    return newState;
17668  };
17669};
17670
17671var whenPageLoadStart = function whenPageLoadStart(handler) {
17672  return function (options, oldState) {
17673    var newState = {
17674      started: true
17675    };
17676
17677    if (!oldState) {
17678      handler(options);
17679    }
17680
17681    return newState;
17682  };
17683};
17684
17685var whenClickCountChange = function whenClickCountChange(handler) {
17686  return function (options) {
17687    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17688      clickCount: 0
17689    };
17690    var newState = {
17691      clickCount: oldState.clickCount % 2 + 1
17692    };
17693
17694    if (newState.clickCount !== oldState.clickCount) {
17695      return handler(options, newState) || newState;
17696    }
17697
17698    return newState;
17699  };
17700};
17701
17702var getComponentActiveOptions = function getComponentActiveOptions() {
17703  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
17704  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
17705    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
17706      return state.isActive ? baseActionGroupOptions.handler(options, state) : state;
17707    }))
17708  });
17709};
17710
17711var getComponentInactiveOptions = function getComponentInactiveOptions() {
17712  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
17713  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
17714    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
17715      return !state.isActive ? baseActionGroupOptions.handler(options, state) : state;
17716    }))
17717  });
17718};
17719
17720var scrollIntoOutOfViewOptions = (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17721  handler: whenElementVisibiltyChange(function (options, state) {
17722    var elementVisible = state.elementVisible;
17723    var event = options.event,
17724        store = options.store;
17725
17726    var _store$getState2 = store.getState(),
17727        ixData = _store$getState2.ixData;
17728
17729    var events = ixData.events; // trigger the handler only once if only one of SCROLL_INTO or SCROLL_OUT_OF event types
17730    // are registered.
17731
17732    if (!events[event.action.config.autoStopEventId] && state.triggered) {
17733      return state;
17734    }
17735
17736    if (event.eventTypeId === SCROLL_INTO_VIEW === elementVisible) {
17737      actionGroupCreator(options);
17738      return (0, _extends2["default"])({}, state, {
17739        triggered: true
17740      });
17741    } else {
17742      return state;
17743    }
17744  })
17745});
17746var MOUSE_OUT_ROUND_THRESHOLD = 0.05;
17747
17748var _default = (_default2 = {}, (0, _defineProperty2["default"])(_default2, SLIDER_ACTIVE, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, SLIDER_INACTIVE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, DROPDOWN_OPEN, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, DROPDOWN_CLOSE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, NAVBAR_OPEN, getComponentActiveOptions(false)), (0, _defineProperty2["default"])(_default2, NAVBAR_CLOSE, getComponentInactiveOptions(false)), (0, _defineProperty2["default"])(_default2, TAB_ACTIVE, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, TAB_INACTIVE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_OPEN, {
17749  types: 'ecommerce-cart-open',
17750  handler: withFilter(isOrContainsElement, actionGroupCreator)
17751}), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_CLOSE, {
17752  types: 'ecommerce-cart-close',
17753  handler: withFilter(isOrContainsElement, actionGroupCreator)
17754}), (0, _defineProperty2["default"])(_default2, MOUSE_CLICK, {
17755  types: 'click',
17756  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref6) {
17757    var clickCount = _ref6.clickCount;
17758
17759    if (hasAutoStopEvent(options)) {
17760      clickCount === 1 && actionGroupCreator(options);
17761    } else {
17762      actionGroupCreator(options);
17763    }
17764  }))
17765}), (0, _defineProperty2["default"])(_default2, MOUSE_SECOND_CLICK, {
17766  types: 'click',
17767  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref7) {
17768    var clickCount = _ref7.clickCount;
17769
17770    if (clickCount === 2) {
17771      actionGroupCreator(options);
17772    }
17773  }))
17774}), (0, _defineProperty2["default"])(_default2, MOUSE_DOWN, (0, _extends2["default"])({}, baseActionGroupOptions, {
17775  types: 'mousedown'
17776})), (0, _defineProperty2["default"])(_default2, MOUSE_UP, (0, _extends2["default"])({}, baseActionGroupOptions, {
17777  types: 'mouseup'
17778})), (0, _defineProperty2["default"])(_default2, MOUSE_OVER, {
17779  types: MOUSE_OVER_OUT_TYPES,
17780  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
17781    if (state.elementHovered) {
17782      actionGroupCreator(options);
17783    }
17784  }))
17785}), (0, _defineProperty2["default"])(_default2, MOUSE_OUT, {
17786  types: MOUSE_OVER_OUT_TYPES,
17787  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
17788    if (!state.elementHovered) {
17789      actionGroupCreator(options);
17790    }
17791  }))
17792}), (0, _defineProperty2["default"])(_default2, MOUSE_MOVE, {
17793  types: 'mousemove mouseout scroll',
17794  handler: function handler( // $FlowFixMe
17795  _ref8) {
17796    var store = _ref8.store,
17797        element = _ref8.element,
17798        eventConfig = _ref8.eventConfig,
17799        nativeEvent = _ref8.nativeEvent,
17800        eventStateKey = _ref8.eventStateKey;
17801    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17802      clientX: 0,
17803      clientY: 0,
17804      pageX: 0,
17805      pageY: 0
17806    };
17807    var basedOn = eventConfig.basedOn,
17808        selectedAxis = eventConfig.selectedAxis,
17809        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
17810        reverse = eventConfig.reverse,
17811        _eventConfig$restingS = eventConfig.restingState,
17812        restingState = _eventConfig$restingS === void 0 ? 0 : _eventConfig$restingS;
17813    var _nativeEvent$clientX = nativeEvent.clientX,
17814        clientX = _nativeEvent$clientX === void 0 ? state.clientX : _nativeEvent$clientX,
17815        _nativeEvent$clientY = nativeEvent.clientY,
17816        clientY = _nativeEvent$clientY === void 0 ? state.clientY : _nativeEvent$clientY,
17817        _nativeEvent$pageX = nativeEvent.pageX,
17818        pageX = _nativeEvent$pageX === void 0 ? state.pageX : _nativeEvent$pageX,
17819        _nativeEvent$pageY = nativeEvent.pageY,
17820        pageY = _nativeEvent$pageY === void 0 ? state.pageY : _nativeEvent$pageY;
17821    var isXAxis = selectedAxis === 'X_AXIS';
17822    var isMouseOut = nativeEvent.type === 'mouseout';
17823    var value = restingState / 100;
17824    var namespacedParameterId = continuousParameterGroupId;
17825    var elementHovered = false;
17826
17827    switch (basedOn) {
17828      case _constants.EventBasedOn.VIEWPORT:
17829        {
17830          value = isXAxis ? Math.min(clientX, window.innerWidth) / window.innerWidth : Math.min(clientY, window.innerHeight) / window.innerHeight;
17831          break;
17832        }
17833
17834      case _constants.EventBasedOn.PAGE:
17835        {
17836          var _getDocumentState3 = getDocumentState(),
17837              scrollLeft = _getDocumentState3.scrollLeft,
17838              scrollTop = _getDocumentState3.scrollTop,
17839              scrollWidth = _getDocumentState3.scrollWidth,
17840              scrollHeight = _getDocumentState3.scrollHeight;
17841
17842          value = isXAxis ? Math.min(scrollLeft + pageX, scrollWidth) / scrollWidth : Math.min(scrollTop + pageY, scrollHeight) / scrollHeight;
17843          break;
17844        }
17845
17846      case _constants.EventBasedOn.ELEMENT:
17847      default:
17848        {
17849          namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
17850          var isMouseEvent = nativeEvent.type.indexOf('mouse') === 0; // Use isOrContainsElement for mouse events since they are fired from the target
17851
17852          if (isMouseEvent && isOrContainsElement({
17853            element: element,
17854            nativeEvent: nativeEvent
17855          }) !== true) {
17856            break;
17857          }
17858
17859          var rect = element.getBoundingClientRect();
17860          var left = rect.left,
17861              top = rect.top,
17862              width = rect.width,
17863              height = rect.height; // Otherwise we'll need to calculate the mouse position from the previous handler state
17864          // against the target element's rect
17865
17866          if (!isMouseEvent && !pointIntersects({
17867            left: clientX,
17868            top: clientY
17869          }, rect)) {
17870            break;
17871          }
17872
17873          elementHovered = true;
17874          value = isXAxis ? (clientX - left) / width : (clientY - top) / height;
17875          break;
17876        }
17877    } // cover case where the event is a mouse out, but the value is not quite at 100%
17878
17879
17880    if (isMouseOut && (value > 1 - MOUSE_OUT_ROUND_THRESHOLD || value < MOUSE_OUT_ROUND_THRESHOLD)) {
17881      value = Math.round(value);
17882    } // Only update based on element if the mouse is moving over or has just left the element
17883
17884
17885    if (basedOn !== _constants.EventBasedOn.ELEMENT || elementHovered || // $FlowFixMe
17886    elementHovered !== state.elementHovered) {
17887      value = reverse ? 1 - value : value;
17888      store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, value));
17889    }
17890
17891    return {
17892      elementHovered: elementHovered,
17893      clientX: clientX,
17894      clientY: clientY,
17895      pageX: pageX,
17896      pageY: pageY
17897    };
17898  }
17899}), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL, {
17900  types: SCROLL_EVENT_TYPES,
17901  // $FlowFixMe
17902  handler: function handler(_ref9) {
17903    var store = _ref9.store,
17904        eventConfig = _ref9.eventConfig;
17905    var continuousParameterGroupId = eventConfig.continuousParameterGroupId,
17906        reverse = eventConfig.reverse;
17907
17908    var _getDocumentState4 = getDocumentState(),
17909        scrollTop = _getDocumentState4.scrollTop,
17910        scrollHeight = _getDocumentState4.scrollHeight,
17911        clientHeight = _getDocumentState4.clientHeight;
17912
17913    var value = scrollTop / (scrollHeight - clientHeight);
17914    value = reverse ? 1 - value : value;
17915    store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
17916  }
17917}), (0, _defineProperty2["default"])(_default2, SCROLLING_IN_VIEW, {
17918  types: SCROLL_EVENT_TYPES,
17919  handler: function handler( // $FlowFixMe
17920  _ref10) {
17921    var element = _ref10.element,
17922        store = _ref10.store,
17923        eventConfig = _ref10.eventConfig,
17924        eventStateKey = _ref10.eventStateKey;
17925    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17926      scrollPercent: 0
17927    };
17928
17929    var _getDocumentState5 = getDocumentState(),
17930        scrollLeft = _getDocumentState5.scrollLeft,
17931        scrollTop = _getDocumentState5.scrollTop,
17932        scrollWidth = _getDocumentState5.scrollWidth,
17933        scrollHeight = _getDocumentState5.scrollHeight,
17934        visibleHeight = _getDocumentState5.clientHeight;
17935
17936    var basedOn = eventConfig.basedOn,
17937        selectedAxis = eventConfig.selectedAxis,
17938        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
17939        startsEntering = eventConfig.startsEntering,
17940        startsExiting = eventConfig.startsExiting,
17941        addEndOffset = eventConfig.addEndOffset,
17942        addStartOffset = eventConfig.addStartOffset,
17943        _eventConfig$addOffse = eventConfig.addOffsetValue,
17944        addOffsetValue = _eventConfig$addOffse === void 0 ? 0 : _eventConfig$addOffse,
17945        _eventConfig$endOffse = eventConfig.endOffsetValue,
17946        endOffsetValue = _eventConfig$endOffse === void 0 ? 0 : _eventConfig$endOffse;
17947    var isXAxis = selectedAxis === 'X_AXIS';
17948
17949    if (basedOn === _constants.EventBasedOn.VIEWPORT) {
17950      var value = isXAxis ? scrollLeft / scrollWidth : scrollTop / scrollHeight;
17951
17952      if (value !== state.scrollPercent) {
17953        store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
17954      }
17955
17956      return {
17957        scrollPercent: value
17958      };
17959    } else {
17960      var namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
17961      var elementRect = element.getBoundingClientRect();
17962      var offsetStartPerc = (addStartOffset ? addOffsetValue : 0) / 100;
17963      var offsetEndPerc = (addEndOffset ? endOffsetValue : 0) / 100; // flip the offset percentages depending on start / exit type
17964
17965      offsetStartPerc = startsEntering ? offsetStartPerc : 1 - offsetStartPerc;
17966      offsetEndPerc = startsExiting ? offsetEndPerc : 1 - offsetEndPerc;
17967      var offsetElementTop = elementRect.top + Math.min(elementRect.height * offsetStartPerc, visibleHeight);
17968      var offsetElementBottom = elementRect.top + elementRect.height * offsetEndPerc;
17969      var offsetHeight = offsetElementBottom - offsetElementTop;
17970      var fixedScrollHeight = Math.min(visibleHeight + offsetHeight, scrollHeight);
17971      var fixedScrollTop = Math.min(Math.max(0, visibleHeight - offsetElementTop), fixedScrollHeight);
17972      var fixedScrollPerc = fixedScrollTop / fixedScrollHeight;
17973
17974      if (fixedScrollPerc !== state.scrollPercent) {
17975        store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, fixedScrollPerc));
17976      }
17977
17978      return {
17979        scrollPercent: fixedScrollPerc
17980      };
17981    }
17982  }
17983}), (0, _defineProperty2["default"])(_default2, SCROLL_INTO_VIEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, SCROLL_OUT_OF_V
17983IEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_DOWN, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17984  handler: whenScrollDirectionChange(function (options, state) {
17985    if (state.scrollingDown) {
17986      actionGroupCreator(options);
17987    }
17988  })
17989})), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_UP, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17990  handler: whenScrollDirectionChange(function (options, state) {
17991    if (!state.scrollingDown) {
17992      actionGroupCreator(options);
17993    }
17994  })
17995})), (0, _defineProperty2["default"])(_default2, PAGE_FINISH, {
17996  types: 'readystatechange IX2_PAGE_UPDATE',
17997  handler: withFilter(isElement, whenPageLoadFinish(actionGroupCreator))
17998}), (0, _defineProperty2["default"])(_default2, PAGE_START, {
17999  types: 'readystatechange IX2_PAGE_UPDATE',
18000  handler: withFilter(isElement, whenPageLoadStart(actionGroupCreator))
18001}), _default2);
18002
18003exports["default"] = _default;
18004
18005/***/ }),
18006/* 313 */
18007/***/ (function(module, exports, __webpack_require__) {
18008
vendor: 4,744 bytes, lines 18009-18188
18009var createFlow = __webpack_require__(314);
18010
18011/**
18012 * Creates a function that returns the result of invoking the given functions
18013 * with the `this` binding of the created function, where each successive
18014 * invocation is supplied the return value of the previous.
18015 *
18016 * @static
18017 * @memberOf _
18018 * @since 3.0.0
18019 * @category Util
18020 * @param {...(Function|Function[])} [funcs] The functions to invoke.
18021 * @returns {Function} Returns the new composite function.
18022 * @see _.flowRight
18023 * @example
18024 *
18025 * function square(n) {
18026 *   return n * n;
18027 * }
18028 *
18029 * var addSquare = _.flow([_.add, square]);
18030 * addSquare(1, 2);
18031 * // => 9
18032 */
18033var flow = createFlow();
18034
18035module.exports = flow;
18036
18037
18038/***/ }),
18039/* 314 */
18040/***/ (function(module, exports, __webpack_require__) {
18041
18042var LodashWrapper = __webpack_require__(66),
18043    flatRest = __webpack_require__(315),
18044    getData = __webpack_require__(127),
18045    getFuncName = __webpack_require__(128),
18046    isArray = __webpack_require__(2),
18047    isLaziable = __webpack_require__(328);
18048
18049/** Error message constants. */
18050var FUNC_ERROR_TEXT = 'Expected a function';
18051
18052/** Used to compose bitmasks for function metadata. */
18053var WRAP_CURRY_FLAG = 8,
18054    WRAP_PARTIAL_FLAG = 32,
18055    WRAP_ARY_FLAG = 128,
18056    WRAP_REARG_FLAG = 256;
18057
18058/**
18059 * Creates a `_.flow` or `_.flowRight` function.
18060 *
18061 * @private
18062 * @param {boolean} [fromRight] Specify iterating from right to left.
18063 * @returns {Function} Returns the new flow function.
18064 */
18065function createFlow(fromRight) {
18066  return flatRest(function(funcs) {
18067    var length = funcs.length,
18068        index = length,
18069        prereq = LodashWrapper.prototype.thru;
18070
18071    if (fromRight) {
18072      funcs.reverse();
18073    }
18074    while (index--) {
18075      var func = funcs[index];
18076      if (typeof func != 'function') {
18077        throw new TypeError(FUNC_ERROR_TEXT);
18078      }
18079      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
18080        var wrapper = new LodashWrapper([], true);
18081      }
18082    }
18083    index = wrapper ? index : length;
18084    while (++index < length) {
18085      func = funcs[index];
18086
18087      var funcName = getFuncName(func),
18088          data = funcName == 'wrapper' ? getData(func) : undefined;
18089
18090      if (data && isLaziable(data[0]) &&
18091            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
18092            !data[4].length && data[9] == 1
18093          ) {
18094        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
18095      } else {
18096        wrapper = (func.length == 1 && isLaziable(func))
18097          ? wrapper[funcName]()
18098          : wrapper.thru(func);
18099      }
18100    }
18101    return function() {
18102      var args = arguments,
18103          value = args[0];
18104
18105      if (wrapper && args.length == 1 && isArray(value)) {
18106        return wrapper.plant(value).value();
18107      }
18108      var index = 0,
18109          result = length ? funcs[index].apply(this, args) : value;
18110
18111      while (++index < length) {
18112        result = funcs[index].call(this, result);
18113      }
18114      return result;
18115    };
18116  });
18117}
18118
18119module.exports = createFlow;
18120
18121
18122/***/ }),
18123/* 315 */
18124/***/ (function(module, exports, __webpack_require__) {
18125
18126var flatten = __webpack_require__(316),
18127    overRest = __webpack_require__(319),
18128    setToString = __webpack_require__(321);
18129
18130/**
18131 * A specialized version of `baseRest` which flattens the rest array.
18132 *
18133 * @private
18134 * @param {Function} func The function to apply a rest parameter to.
18135 * @returns {Function} Returns the new function.
18136 */
18137function flatRest(func) {
18138  return setToString(overRest(func, undefined, flatten), func + '');
18139}
18140
18141module.exports = flatRest;
18142
18143
18144/***/ }),
18145/* 316 */
18146/***/ (function(module, exports, __webpack_require__) {
18147
18148var baseFlatten = __webpack_require__(317);
18149
18150/**
18151 * Flattens `array` a single level deep.
18152 *
18153 * @static
18154 * @memberOf _
18155 * @since 0.1.0
18156 * @category Array
18157 * @param {Array} array The array to flatten.
18158 * @returns {Array} Returns the new flattened array.
18159 * @example
18160 *
18161 * _.flatten([1, [2, [3, [4]], 5]]);
18162 * // => [1, 2, [3, [4]], 5]
18163 */
18164function flatten(array) {
18165  var length = array == null ? 0 : array.length;
18166  return length ? baseFlatten(array, 1) : [];
18167}
18168
18169module.exports = flatten;
18170
18171
18172/***/ }),
18173/* 317 */
18174/***/ (function(module, exports, __webpack_require__) {
18175
18176var arrayPush = __webpack_require__(52),
18177    isFlattenable = __webpack_require__(318);
18178
18179/**
18180 * The base implementation of `_.flatten` with support for restricting flattening.
18181 *
18182 * @private
18183 * @param {Array} array The array to flatten.
18184 * @param {number} depth The maximum recursion depth.
18185 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
18186 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
18187 * @param {Array} [result=[]] The initial result value.
18188 * @returns {Array} Returns the new flattened array.
vendor: 4,491 bytes, lines 18189-18360
18189 */
18190function baseFlatten(array, depth, predicate, isStrict, result) {
18191  var index = -1,
18192      length = array.length;
18193
18194  predicate || (predicate = isFlattenable);
18195  result || (result = []);
18196
18197  while (++index < length) {
18198    var value = array[index];
18199    if (depth > 0 && predicate(value)) {
18200      if (depth > 1) {
18201        // Recursively flatten arrays (susceptible to call stack limits).
18202        baseFlatten(value, depth - 1, predicate, isStrict, result);
18203      } else {
18204        arrayPush(result, value);
18205      }
18206    } else if (!isStrict) {
18207      result[result.length] = value;
18208    }
18209  }
18210  return result;
18211}
18212
18213module.exports = baseFlatten;
18214
18215
18216/***/ }),
18217/* 318 */
18218/***/ (function(module, exports, __webpack_require__) {
18219
18220var Symbol = __webpack_require__(23),
18221    isArguments = __webpack_require__(36),
18222    isArray = __webpack_require__(2);
18223
18224/** Built-in value references. */
18225var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
18226
18227/**
18228 * Checks if `value` is a flattenable `arguments` object or array.
18229 *
18230 * @private
18231 * @param {*} value The value to check.
18232 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
18233 */
18234function isFlattenable(value) {
18235  return isArray(value) || isArguments(value) ||
18236    !!(spreadableSymbol && value && value[spreadableSymbol]);
18237}
18238
18239module.exports = isFlattenable;
18240
18241
18242/***/ }),
18243/* 319 */
18244/***/ (function(module, exports, __webpack_require__) {
18245
18246var apply = __webpack_require__(320);
18247
18248/* Built-in method references for those with the same name as other `lodash` methods. */
18249var nativeMax = Math.max;
18250
18251/**
18252 * A specialized version of `baseRest` which transforms the rest array.
18253 *
18254 * @private
18255 * @param {Function} func The function to apply a rest parameter to.
18256 * @param {number} [start=func.length-1] The start position of the rest parameter.
18257 * @param {Function} transform The rest array transform.
18258 * @returns {Function} Returns the new function.
18259 */
18260function overRest(func, start, transform) {
18261  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
18262  return function() {
18263    var args = arguments,
18264        index = -1,
18265        length = nativeMax(args.length - start, 0),
18266        array = Array(length);
18267
18268    while (++index < length) {
18269      array[index] = args[start + index];
18270    }
18271    index = -1;
18272    var otherArgs = Array(start + 1);
18273    while (++index < start) {
18274      otherArgs[index] = args[index];
18275    }
18276    otherArgs[start] = transform(array);
18277    return apply(func, this, otherArgs);
18278  };
18279}
18280
18281module.exports = overRest;
18282
18283
18284/***/ }),
18285/* 320 */
18286/***/ (function(module, exports) {
18287
18288/**
18289 * A faster alternative to `Function#apply`, this function invokes `func`
18290 * with the `this` binding of `thisArg` and the arguments of `args`.
18291 *
18292 * @private
18293 * @param {Function} func The function to invoke.
18294 * @param {*} thisArg The `this` binding of `func`.
18295 * @param {Array} args The arguments to invoke `func` with.
18296 * @returns {*} Returns the result of `func`.
18297 */
18298function apply(func, thisArg, args) {
18299  switch (args.length) {
18300    case 0: return func.call(thisArg);
18301    case 1: return func.call(thisArg, args[0]);
18302    case 2: return func.call(thisArg, args[0], args[1]);
18303    case 3: return func.call(thisArg, args[0], args[1], args[2]);
18304  }
18305  return func.apply(thisArg, args);
18306}
18307
18308module.exports = apply;
18309
18310
18311/***/ }),
18312/* 321 */
18313/***/ (function(module, exports, __webpack_require__) {
18314
18315var baseSetToString = __webpack_require__(322),
18316    shortOut = __webpack_require__(324);
18317
18318/**
18319 * Sets the `toString` method of `func` to return `string`.
18320 *
18321 * @private
18322 * @param {Function} func The function to modify.
18323 * @param {Function} string The `toString` result.
18324 * @returns {Function} Returns `func`.
18325 */
18326var setToString = shortOut(baseSetToString);
18327
18328module.exports = setToString;
18329
18330
18331/***/ }),
18332/* 322 */
18333/***/ (function(module, exports, __webpack_require__) {
18334
18335var constant = __webpack_require__(323),
18336    defineProperty = __webpack_require__(125),
18337    identity = __webpack_require__(63);
18338
18339/**
18340 * The base implementation of `setToString` without support for hot loop shorting.
18341 *
18342 * @private
18343 * @param {Function} func The function to modify.
18344 * @param {Function} string The `toString` result.
18345 * @returns {Function} Returns `func`.
18346 */
18347var baseSetToString = !defineProperty ? identity : function(func, string) {
18348  return defineProperty(func, 'toString', {
18349    'configurable': true,
18350    'enumerable': false,
18351    'value': constant(string),
18352    'writable': true
18353  });
18354};
18355
18356module.exports = baseSetToString;
18357
18358
18359/***/ }),
18360/* 323 */
vendor: 7,235 bytes, lines 18361-18594
18361/***/ (function(module, exports) {
18362
18363/**
18364 * Creates a function that returns `value`.
18365 *
18366 * @static
18367 * @memberOf _
18368 * @since 2.4.0
18369 * @category Util
18370 * @param {*} value The value to return from the new function.
18371 * @returns {Function} Returns the new constant function.
18372 * @example
18373 *
18374 * var objects = _.times(2, _.constant({ 'a': 1 }));
18375 *
18376 * console.log(objects);
18377 * // => [{ 'a': 1 }, { 'a': 1 }]
18378 *
18379 * console.log(objects[0] === objects[1]);
18380 * // => true
18381 */
18382function constant(value) {
18383  return function() {
18384    return value;
18385  };
18386}
18387
18388module.exports = constant;
18389
18390
18391/***/ }),
18392/* 324 */
18393/***/ (function(module, exports) {
18394
18395/** Used to detect hot functions by number of calls within a span of milliseconds. */
18396var HOT_COUNT = 800,
18397    HOT_SPAN = 16;
18398
18399/* Built-in method references for those with the same name as other `lodash` methods. */
18400var nativeNow = Date.now;
18401
18402/**
18403 * Creates a function that'll short out and invoke `identity` instead
18404 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
18405 * milliseconds.
18406 *
18407 * @private
18408 * @param {Function} func The function to restrict.
18409 * @returns {Function} Returns the new shortable function.
18410 */
18411function shortOut(func) {
18412  var count = 0,
18413      lastCalled = 0;
18414
18415  return function() {
18416    var stamp = nativeNow(),
18417        remaining = HOT_SPAN - (stamp - lastCalled);
18418
18419    lastCalled = stamp;
18420    if (remaining > 0) {
18421      if (++count >= HOT_COUNT) {
18422        return arguments[0];
18423      }
18424    } else {
18425      count = 0;
18426    }
18427    return func.apply(undefined, arguments);
18428  };
18429}
18430
18431module.exports = shortOut;
18432
18433
18434/***/ }),
18435/* 325 */
18436/***/ (function(module, exports, __webpack_require__) {
18437
18438var WeakMap = __webpack_require__(109);
18439
18440/** Used to store function metadata. */
18441var metaMap = WeakMap && new WeakMap;
18442
18443module.exports = metaMap;
18444
18445
18446/***/ }),
18447/* 326 */
18448/***/ (function(module, exports) {
18449
18450/**
18451 * This method returns `undefined`.
18452 *
18453 * @static
18454 * @memberOf _
18455 * @since 2.3.0
18456 * @category Util
18457 * @example
18458 *
18459 * _.times(2, _.noop);
18460 * // => [undefined, undefined]
18461 */
18462function noop() {
18463  // No operation performed.
18464}
18465
18466module.exports = noop;
18467
18468
18469/***/ }),
18470/* 327 */
18471/***/ (function(module, exports) {
18472
18473/** Used to lookup unminified function names. */
18474var realNames = {};
18475
18476module.exports = realNames;
18477
18478
18479/***/ }),
18480/* 328 */
18481/***/ (function(module, exports, __webpack_require__) {
18482
18483var LazyWrapper = __webpack_require__(68),
18484    getData = __webpack_require__(127),
18485    getFuncName = __webpack_require__(128),
18486    lodash = __webpack_require__(329);
18487
18488/**
18489 * Checks if `func` has a lazy counterpart.
18490 *
18491 * @private
18492 * @param {Function} func The function to check.
18493 * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
18494 *  else `false`.
18495 */
18496function isLaziable(func) {
18497  var funcName = getFuncName(func),
18498      other = lodash[funcName];
18499
18500  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
18501    return false;
18502  }
18503  if (func === other) {
18504    return true;
18505  }
18506  var data = getData(other);
18507  return !!data && func === data[0];
18508}
18509
18510module.exports = isLaziable;
18511
18512
18513/***/ }),
18514/* 329 */
18515/***/ (function(module, exports, __webpack_require__) {
18516
18517var LazyWrapper = __webpack_require__(68),
18518    LodashWrapper = __webpack_require__(66),
18519    baseLodash = __webpack_require__(67),
18520    isArray = __webpack_require__(2),
18521    isObjectLike = __webpack_require__(12),
18522    wrapperClone = __webpack_require__(330);
18523
18524/** Used for built-in method references. */
18525var objectProto = Object.prototype;
18526
18527/** Used to check objects for own properties. */
18528var hasOwnProperty = objectProto.hasOwnProperty;
18529
18530/**
18531 * Creates a `lodash` object which wraps `value` to enable implicit method
18532 * chain sequences. Methods that operate on and return arrays, collections,
18533 * and functions can be chained together. Methods that retrieve a single value
18534 * or may return a primitive value will automatically end the chain sequence
18535 * and return the unwrapped value. Otherwise, the value must be unwrapped
18536 * with `_#value`.
18537 *
18538 * Explicit chain sequences, which must be unwrapped with `_#value`, may be
18539 * enabled using `_.chain`.
18540 *
18541 * The execution of chained methods is lazy, that is, it's deferred until
18542 * `_#value` is implicitly or explicitly called.
18543 *
18544 * Lazy evaluation allows several methods to support shortcut fusion.
18545 * Shortcut fusion is an optimization to merge iteratee calls; this avoids
18546 * the creation of intermediate arrays and can greatly reduce the number of
18547 * iteratee executions. Sections of a chain sequence qualify for shortcut
18548 * fusion if the section is applied to an array and iteratees accept only
18549 * one argument. The heuristic for whether a section qualifies for shortcut
18550 * fusion is subject to change.
18551 *
18552 * Chaining is supported in custom builds as long as the `_#value` method is
18553 * directly or indirectly included in the build.
18554 *
18555 * In addition to lodash methods, wrappers have `Array` and `String` methods.
18556 *
18557 * The wrapper `Array` methods are:
18558 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
18559 *
18560 * The wrapper `String` methods are:
18561 * `replace` and `split`
18562 *
18563 * The wrapper methods that support shortcut fusion are:
18564 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
18565 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
18566 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
18567 *
18568 * The chainable wrapper methods are:
18569 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
18570 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
18571 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
18572 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
18573 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
18574 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
18575 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
18576 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
18577 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
18578 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
18579 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
18580 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
18581 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
18582 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
18583 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
18584 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
18585 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
18586 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
18587 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
18588 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
18589 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
18590 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
18591 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
18592 * `zipObject`, `zipObjectDeep`, and `zipWith`
18593 *
18594 * The wrapper methods that are **not** chainable by default are:
18595 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
18596 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
18597 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
18598 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
18599 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
18600 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
18601 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
18602 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
18603 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
18604 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
18605 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
18606 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
18607 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
18608 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
18609 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
18610 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
18611 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
18612 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
18613 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
18614 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
18615 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
18616 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
18617 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
18618 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
18619 * `upperFirst`, `value`, and `words`
18620 *
18621 * @name _
18622 * @constructor
18623 * @category Seq
18624 * @param {*} value The value to wrap in a `lodash` instance.
18625 * @returns {Object} Returns the new `lodash` wrapper instance.
18626 * @example
18627 *
18628 * function square(n) {
18629 *   return n * n;
18630 * }
18631 *
18632 * var wrapped = _([1, 2, 3]);
18633 *
18634 * // Returns an unwrapped value.
18635 * wrapped.reduce(_.add);
18636 * // => 6
18637 *
18638 * // Returns a wrapped value.
18639 * var squares = wrapped.map(square);
18640 *
18641 * _.isArray(squares);
18642 * // => false
18643 *
18644 * _.isArray(squares.value());
18645 * // => true
18646 */
18647function lodash(value) {
18648  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
18649    if (value instanceof LodashWrapper) {
18650      return value;
18651    }
18652    if (hasOwnProperty.call(value, '__wrapped__')) {
18653      return wrapperClone(value);
18654    }
18655  }
18656  return new LodashWrapper(value);
18657}
18658
18659// Ensure wrappers are instances of `baseLodash`.
18660lodash.prototype = baseLodash.prototype;
18661lodash.prototype.constructor = lodash;
18662
18663module.exports = lodash;
18664
18665
18666/***/ }),
18667/* 330 */
18668/***/ (function(module, exports, __webpack_require__) {
18669
18670var LazyWrapper = __webpack_require__(68),
18671    LodashWrapper = __webpack_require__(66),
18672    copyArray = __webpack_require__(331);
18673
18674/**
18675 * Creates a clone of `wrapper`.
18676 *
18677 * @private
18678 * @param {Object} wrapper The wrapper to clone.
18679 * @returns {Object} Returns the cloned wrapper.
18680 */
18681function wrapperClone(wrapper) {
18682  if (wrapper instanceof LazyWrapper) {
18683    return wrapper.clone();
18684  }
18685  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
18686  result.__actions__ = copyArray(wrapper.__actions__);
18687  result.__index__  = wrapper.__index__;
18688  result.__values__ = wrapper.__values__;
18689  return result;
18690}
18691
18692module.exports = wrapperClone;
18693
18694
18695/***/ }),
18696/* 331 */
18697/***/ (function(module, exports) {
18698
18699/**
18700 * Copies the values of `source` to `array`.
18701 *
18702 * @private
18703 * @param {Array} source The array to copy values from.
18704 * @param {Array} [array=[]] The array to copy values to.
18705 * @returns {Array} Returns `array`.
18706 */
18707function copyArray(source, array) {
18708  var index = -1,
18709      length = source.length;
18710
18711  array || (array = Array(length));
18712  while (++index < length) {
18713    array[index] = source[index];
18714  }
18715  return array;
18716}
18717
18718module.exports = copyArray;
18719
18720
18721/***/ }),
18722/* 332 */
18723/***/ (function(module, exports, __webpack_require__) {
18724
18725var baseClamp = __webpack_require__(333),
18726    toNumber = __webpack_require__(64);
18727
18728/**
18729 * Clamps `number` within the inclusive `lower` and `upper` bounds.
18730 *
18731 * @static
18732 * @memberOf _
18733 * @since 4.0.0
18734 * @category Number
18735 * @param {number} number The number to clamp.
18736 * @param {number} [lower] The lower bound.
18737 * @param {number} upper The upper bound.
18738 * @returns {number} Returns the clamped number.
18739 * @example
18740 *
18741 * _.clamp(-10, -5, 5);
18742 * // => -5
18743 *
18744 * _.clamp(10, -5, 5);
18745 * // => 5
18746 */
18747function clamp(number, lower, upper) {
18748  if (upper === undefined) {
18749    upper = lower;
18750    lower = undefined;
18751  }
18752  if (upper !== undefined) {
18753    upper = toNumber(upper);
18754    upper = upper === upper ? upper : 0;
18755  }
18756  if (lower !== undefined) {
18757    lower = toNumber(lower);
18758    lower = lower === lower ? lower : 0;
18759  }
18760  return baseClamp(toNumber(number), lower, upper);
18761}
18762
18763module.exports = clamp;
18764
18765
18766/***/ }),
18767/* 333 */
18768/***/ (function(module, exports) {
18769
18770/**
18771 * The base implementation of `_.clamp` which doesn't coerce arguments.
18772 *
18773 * @private
18774 * @param {number} number The number to clamp.
18775 * @param {number} [lower] The lower bound.
18776 * @param {number} upper The upper bound.
18777 * @returns {number} Returns the clamped number.
18778 */
18779function baseClamp(number, lower, upper) {
18780  if (number === number) {
18781    if (upper !== undefined) {
18782      number = number <= upper ? number : upper;
18783    }
18784    if (lower !== undefined) {
18785      number = number >= lower ? number : lower;
18786    }
18787  }
18788  return number;
18789}
18790
18791module.exports = baseClamp;
18792
18793
18794/***/ }),
18795/* 334 */
18796/***/ (function(module, exports, __webpack_require__) {
18797
18798"use strict";
18799 // @wf-will-never-add-flow-to-this-file
18800
18801/* globals window, document */
18802
18803/* eslint-disable no-var */
18804
18805/**
18806 * Webflow: Auto-select links to current page or section
18807 */
18808
18809var Webflow = __webpack_require__(3);
18810
18811Webflow.define('links', module.exports = function ($, _) {
18812  var api = {};
18813  var $win = $(window);
18814  var designer;
18815  var inApp = Webflow.env();
18816  var location = window.location;
18817  var tempLink = document.createElement('a');
18818  var linkCurrent = 'w--current';
18819  var indexPage = /index\.(html|php)$/;
18820  var dirList = /\/$/;
18821  var anchors;
18822  var slug; // -----------------------------------
18823  // Module methods
18824
18825  api.ready = api.design = api.preview = init; // -----------------------------------
18826  // Private methods
18827
18828  function init() {
18829    designer = inApp && Webflow.env('design');
18830    slug = Webflow.env('slug') || location.pathname || ''; // Reset scroll listener, init anchors
18831
18832    Webflow.scroll.off(scroll);
18833    anchors = []; // Test all links for a selectable href
18834
18835    var links = document.links;
18836
18837    for (var i = 0; i < links.length; ++i) {
18838      select(links[i]);
18839    } // Listen for scroll if any anchors exist
18840
18841
18842    if (anchors.length) {
18843      Webflow.scroll.on(scroll);
18844      scroll();
18845    }
18846  }
18847
18848  function select(link) {
18849    var href = designer && link.getAttribute('href-disabled') || link.getAttribute('href');
18850    tempLink.href = href; // Ignore any hrefs with a colon to safely avoid all uri schemes
18851
18852    if (href.indexOf(':') >= 0) {
18853      return;
18854    }
18855
18856    var $link = $(link); // Check for all links with hash (eg (this-host)(/this-path)#section) to this page
18857
18858    if (tempLink.hash.length > 1 && tempLink.host + tempLink.pathname === location.host + location.pathname) {
18859      // Ignore any hrefs with Google Translate type hash
18860      // Example: jQuery can't parse $('#googtrans(en|es)')
18861      // https://forum.webflow.com/t/dropdown-menus-not-working-on-site/87140
18862      if (!/^#[a-zA-Z0-9\-\_]+$/.test(tempLink.hash)) {
18863        return;
18864      }
18865
18866      var $section = $(tempLink.hash);
18867      $section.length && anchors.push({
18868        link: $link,
18869        sec: $section,
18870        active: false
18871      });
18872      return;
18873    } // Ignore empty # links
18874
18875
18876    if (href === '#' || href === '') {
18877      return;
18878    } // Determine whether the link should be selected
18879
18880
18881    var match = tempLink.href === location.href || href === slug || indexPage.test(href) && dirList.test(slug);
18882    setClass($link, linkCurrent, match);
18883  }
18884
18885  function scroll() {
18886    var viewTop = $win.scrollTop();
18887    var viewHeight = $win.height(); // Check each anchor for a section in view
18888
18889    _.each(anchors, function (anchor) {
18890      var $link = anchor.link;
18891      var $section = anchor.sec;
18892      var top = $section.offset().top;
18893      var height = $section.outerHeight();
18894      var offset = viewHeight * 0.5;
18895      var active = $section.is(':visible') && top + height - offset >= viewTop && top + offset <= viewTop + viewHeight;
18896
18897      if (anchor.active === active) {
18898        return;
18899      }
18900
18901      anchor.active = active;
18902      setClass($link, linkCurrent, active);
18903    });
18904  }
18905
18906  function setClass($elem, className, add) {
18907    var exists = $elem.hasClass(className);
18908
18909    if (add && exists) {
18910      return;
18911    }
18912
18913    if (!add && !exists) {
18914      return;
18915    }
18916
18917    add ? $elem.addClass(className) : $elem.removeClass(className);
18918  } // Export module
18919
18920
18921  return api;
18922});
18923
18924/***/ }),
18925/* 335 */
18926/***/ (function(module, exports, __webpack_require__) {
18927
18928"use strict";
18929 // @wf-will-never-add-flow-to-this-file
18930
18931/* globals window, document */
18932
18933/* eslint-disable no-var */
18934
18935/**
18936 * Webflow: Smooth scroll
18937 */
18938
18939var Webflow = __webpack_require__(3);
18940
18941Webflow.define('scroll', module.exports = function ($) {
18942  /**
18943   * A collection of namespaced events found in this module.
18944   * Namespaced events encapsulate our code, and make it safer and easier
18945   * for designers to apply custom code overrides.
18946   * @see https://api.jquery.com/on/#event-names
18947   * @typedef {Object.<string>} NamespacedEventsCollection
18948   */
18949  var NS_EVENTS = {
18950    WF_CLICK_EMPTY: 'click.wf-empty-link',
18951    WF_CLICK_SCROLL: 'click.wf-scroll'
18952  };
18953  var loc = window.location;
18954  var history = inIframe() ? null : window.history;
18955  var $win = $(window);
18956  var $doc = $(document);
18957  var $body = $(document.body);
18958
18959  var animate = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (fn) {
18960    window.setTimeout(fn, 15);
18961  };
18962
18963  var rootTag = Webflow.env('editor') ? '.w-editor-body' : 'body';
18964  var headerSelector = 'header, ' + rootTag + ' > .header, ' + rootTag + ' > .w-nav:not([data-no-scroll])';
18965  var emptyHrefSelector = 'a[href="#"]';
18966  /**
18967   * Select only links whose href:
18968   * - contains a #
18969   * - is not one of our namespaced TabLink elements
18970   * - is not _only_ a #
18971   */
18972
18973  var localHrefSelector = 'a[href*="#"]:not(.w-tab-link):not(' + emptyHrefSelector + ')';
18974  var scrollTargetOutlineCSS = '.wf-force-outline-none[tabindex="-1"]:focus{outline:none;}';
18975  var focusStylesEl = document.createElement('style');
18976  focusStylesEl.appendChild(document.createTextNode(scrollTargetOutlineCSS));
18977
18978  function inIframe() {
18979    try {
18980      return Boolean(window.frameElement);
18981    } catch (e) {
18982      return true;
18983    }
18984  }
18985
18986  var validHash = /^#[a-zA-Z0-9][\w:.-]*$/;
18987  /**
18988   * Determine if link navigates to current page
18989   * @param {HTMLAnchorElement} link
18990   */
18991
18992  function linksToCurrentPage(link) {
18993    return validHash.test(link.hash) && link.host + link.pathname === loc.host + loc.pathname;
18994  }
18995  /**
18996   * Check if the designer has indicated that this page should
18997   * have no scroll animation, or if the end user has set
18998   * prefers-reduced-motion in their OS
18999   */
19000
19001
19002  var reducedMotionMediaQuery = typeof window.matchMedia === 'function' && window.matchMedia('(prefers-reduced-motion: reduce)');
19003
19004  function reducedMotionEnabled() {
19005    return document.body.getAttribute('data-wf-scroll-motion') === 'none' || reducedMotionMediaQuery.matches;
19006  }
19007
19008  function setFocusable($el, action) {
19009    var initialTabindex;
19010
19011    switch (action) {
19012      case 'add':
19013        initialTabindex = $el.attr('tabindex');
19014
19015        if (initialTabindex) {
19016          $el.attr('data-wf-tabindex-swap', initialTabindex);
19017        } else {
19018          $el.attr('tabindex', '-1');
19019        }
19020
19021        break;
19022
19023      case 'remove':
19024        initialTabindex = $el.attr('data-wf-tabindex-swap');
19025
19026        if (initialTabindex) {
19027          $el.attr('tabindex', initialTabindex);
19028          $el.removeAttr('data-wf-tabindex-swap');
19029        } else {
19030          $el.removeAttr('tabindex');
19031        }
19032
19033        break;
19034    }
19035
19036    $el.toggleClass('wf-force-outline-none', action === 'add');
19037  }
19038  /**
19039   * Determine if we should execute custom scroll
19040   */
19041
19042
19043  function validateScroll(evt) {
19044    var target = evt.currentTarget;
19045
19046    if ( // Bail if in Designer
19047    Webflow.env('design') || // Ignore links being used by jQuery mobile
19048    window.$.mobile && /(?:^|\s)ui-link(?:$|\s)/.test(target.className)) {
19049      return;
19050    }
19051
19052    var hash = linksToCurrentPage(target) ? target.hash : '';
19053    if (hash === '') return;
19054    var $el = $(hash);
19055
19056    if (!$el.length) {
19057      return;
19058    }
19059
19060    if (evt) {
19061      evt.preventDefault();
19062      evt.stopPropagation();
19063    }
19064
19065    updateHistory(hash, evt);
19066    window.setTimeout(function () {
19067      scroll($el, function setFocus() {
19068        setFocusable($el, 'add');
19069        $el.get(0).focus({
19070          preventScroll: true
19071        });
19072        setFocusable($el, 'remove');
19073      });
19074    }, evt ? 0 : 300);
19075  }
19076
19077  function updateHistory(hash) {
19078    // Push new history state
19079    if (loc.hash !== hash && history && history.pushState && // Navigation breaks Chrome when the protocol is `file:`.
19080    !(Webflow.env.chrome && loc.protocol === 'file:')) {
19081      var oldHash = history.state && history.state.hash;
19082
19083      if (oldHash !== hash) {
19084        history.pushState({
19085          hash: hash
19086        }, '', hash);
19087      }
19088    }
19089  }
19090
19091  function scroll($targetEl, cb) {
19092    var start = $win.scrollTop();
19093    var end = calculateScrollEndPosition($targetEl);
19094    if (start === end) return;
19095    var duration = calculateScrollDuration($targetEl, start, end);
19096    var clock = Date.now();
19097
19098    var step = function step() {
19099      var elapsed = Date.now() - clock;
19100      window.scroll(0, getY(start, end, elapsed, duration));
19101
19102      if (elapsed <= duration) {
19103        animate(step);
19104      } else if (typeof cb === 'function') {
19105        cb();
19106      }
19107    };
19108
19109    animate(step);
19110  }
19111
19112  function calculateScrollEndPosition($targetEl) {
19113    // If a fixed header exists, offset for the height
19114    var $header = $(headerSelector);
19115    var offsetY = $header.css('position') === 'fixed' ? $header.outerHeight() : 0;
19116    var end = $targetEl.offset().top - offsetY; // If specified, scroll so that the element ends up in the middle of the viewport
19117
19118    if ($targetEl.data('scroll') === 'mid') {
19119      var available = $win.height() - offsetY;
19120      var elHeight = $targetEl.outerHeight();
19121
19122      if (elHeight < available) {
19123        end -= Math.round((available - elHeight) / 2);
19124      }
19125    }
19126
19127    return end;
19128  }
19129
19130  function calculateScrollDuration($targetEl, start, end) {
19131    if (reducedMotionEnabled()) return 0;
19132    var mult = 1; // Check for custom time multiplier on the body and the scroll target
19133
19134    $body.add($targetEl).each(function (_, el) {
19135      var time = parseFloat(el.getAttribute('data-scroll-time'));
19136
19137      if (!isNaN(time) && time >= 0) {
19138        mult = time;
19139      }
19140    });
19141    return (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult;
19142  }
19143
19144  function getY(start, end, elapsed, duration) {
19145    if (elapsed > duration) {
19146      return end;
19147    }
19148
19149    return start + (end - start) * ease(elapsed / duration);
19150  }
19151
19152  function ease(t) {
19153    return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
19154  }
19155
19156  function ready() {
19157    var WF_CLICK_EMPTY = NS_EVENTS.WF_CLICK_EMPTY,
19158        WF_CLICK_SCROLL = NS_EVENTS.WF_CLICK_SCROLL;
19159    $doc.on(WF_CLICK_SCROLL, localHrefSelector, validateScroll);
19160    /**
19161     * Prevent empty hash links from triggering scroll.
19162     * Legacy feature to preserve: use the default "#" link
19163     * to trigger an interaction, and do not want the page
19164     * to scroll to the top.
19165     */
19166
19167    $doc.on(WF_CLICK_EMPTY, emptyHrefSelector, function (e) {
19168      e.preventDefault();
19169    });
19170    document.head.insertBefore(focusStylesEl, document.head.firstChild);
19171  } // Export module
19172
19173
19174  return {
19175    ready: ready
19176  };
19177});
19178
19179/***/ }),
19180/* 336 */
19181/***/ (function(module, exports, __webpack_require__) {
19182
19183"use strict";
19184 // @wf-will-never-add-flow-to-this-file
19185
19186/* globals document, window */
19187
19188/* eslint-disable no-var */
19189
19190/**
19191 * Webflow: Touch events
19192 * Supports legacy 'tap' event
19193 * Adds a 'swipe' event to desktop and mobile
19194 */
19195
19196var Webflow = __webpack_require__(3);
19197
19198Webflow.define('touch', module.exports = function ($) {
19199  var api = {};
19200  var getSelection = window.getSelection; // Delegate all legacy 'tap' events to 'click'
19201
19202  $.event.special.tap = {
19203    bindType: 'click',
19204    delegateType: 'click'
19205  };
19206
19207  api.init = function (el) {
19208    el = typeof el === 'string' ? $(el).get(0) : el;
19209    return el ? new Touch(el) : null;
19210  };
19211
19212  function Touch(el) {
19213    var active = false;
19214    var useTouch = false;
19215    var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40);
19216    var startX;
19217    var lastX;
19218    el.addEventListener('touchstart', start, false);
19219    el.addEventListener('touchmove', move, false);
19220    el.addEventListener('touchend', end, false);
19221    el.addEventListener('touchcancel', cancel, false);
19222    el.addEventListener('mousedown', start, false);
19223    el.addEventListener('mousemove', move, false);
19224    el.addEventListener('mouseup', end, false);
19225    el.addEventListener('mouseout', cancel, false);
19226
19227    function start(evt) {
19228      // We don’t handle multi-touch events yet.
19229      var touches = evt.touches;
19230
19231      if (touches && touches.length > 1) {
19232        return;
19233      }
19234
19235      active = true;
19236
19237      if (touches) {
19238        useTouch = true;
19239        startX = touches[0].clientX;
19240      } else {
19241        startX = evt.clientX;
19242      }
19243
19244      lastX = startX;
19245    }
19246
19247    function move(evt) {
19248      if (!active) {
19249        return;
19250      }
19251
19252      if (useTouch && evt.type === 'mousemove') {
19253        evt.preventDefault();
19254        evt.stopPropagation();
19255        return;
19256      }
19257
19258      var touches = evt.touches;
19259      var x = touches ? touches[0].clientX : evt.clientX;
19260      var velocityX = x - lastX;
19261      lastX = x; // Allow swipes while pointer is down, but prevent them during text selection
19262
19263      if (Math.abs(velocityX) > thresholdX && getSelection && String(getSelection()) === '') {
19264        triggerEvent('swipe', evt, {
19265          direction: velocityX > 0 ? 'right' : 'left'
19266        });
19267        cancel();
19268      }
19269    }
19270
19271    function end(evt) {
19272      if (!active) {
19273        return;
19274      }
19275
19276      active = false;
19277
19278      if (useTouch && evt.type === 'mouseup') {
19279        evt.preventDefault();
19280        evt.stopPropagation();
19281        useTouch = false;
19282        return;
19283      }
19284    }
19285
19286    function cancel() {
19287      active = false;
19288    }
19289
19290    function destroy() {
19291      el.removeEventListener('touchstart', start, false);
19292      el.removeEventListener('touchmove', move, false);
19293      el.removeEventListener('touchend', end, false);
19294      el.removeEventListener('touchcancel', cancel, false);
19295      el.removeEventListener('mousedown', start, false);
19296      el.removeEventListener('mousemove', move, false);
19297      el.removeEventListener('mouseup', end, false);
19298      el.removeEventListener('mouseout', cancel, false);
19299      el = null;
19300    } // Public instance methods
19301
19302
19303    this.destroy = destroy;
19304  } // Wrap native event to supoprt preventdefault + stopPropagation
19305
19306
19307  function triggerEvent(type, evt, data) {
19308    var newEvent = $.Event(type, {
19309      originalEvent: evt
19310    });
19311    $(evt.target).trigger(newEvent, data);
19312  } // Listen for touch events on all nodes by default.
19313
19314
19315  api.instance = api.init(document); // Export module
19316
19317  return api;
19318});
19319
19320/***/ }),
19321/* 337 */
19322/***/ (function(module, exports, __webpack_require__) {
19323
19324"use strict";
19325 // @wf-will-never-add-flow-to-this-file
19326
19327/* globals window, document */
19328
19329/* eslint-disable no-var */
19330
19331/**
19332 * Webflow: Dropdown component
19333 */
19334
19335var Webflow = __webpack_require__(3);
19336
19337var IXEvents = __webpack_require__(39);
19338
19339var KEY_CODES = {
19340  ARROW_LEFT: 37,
19341  ARROW_UP: 38,
19342  ARROW_RIGHT: 39,
19343  ARROW_DOWN: 40,
19344  ESCAPE: 27,
19345  SPACE: 32,
19346  ENTER: 13,
19347  HOME: 36,
19348  END: 35
19349};
19350var FORCE_CLOSE = true;
19351/**
19352 * This pattern matches links that begin with a `#` AND have some alphanumeric
19353 * characters after it, including also hyphens and underscores
19354 *
19355 * Matches:
19356 * #foo
19357 * #999
19358 * #foo-bar_baz
19359 *
19360 * Does not match:
19361 * #
19362 */
19363
19364var INTERNAL_PAGE_LINK_HASHES_PATTERN = /^#[a-zA-Z0-9\-_]+$/;
19365Webflow.define('dropdown', module.exports = function ($, _) {
19366  var debounce = _.debounce;
19367  var api = {};
19368  var inApp = Webflow.env();
19369  var inPreview = false;
19370  var inDesigner;
19371  var touch = Webflow.env.touch;
19372  var namespace = '.w-dropdown';
19373  var openStateClassName = 'w--open';
19374  var ix = IXEvents.triggers;
19375  var defaultZIndex = 900; // @dropdown-depth
19376
19377  var focusOutEvent = 'focusout' + namespace;
19378  var keydownEvent = 'keydown' + namespace;
19379  var mouseEnterEvent = 'mouseenter' + namespace;
19380  var mouseMoveEvent = 'mousemove' + namespace;
19381  var mouseLeaveEvent = 'mouseleave' + namespace;
19382  var mouseUpEvent = (touch ? 'click' : 'mouseup') + namespace;
19383  var closeEvent = 'w-close' + namespace;
19384  var settingEvent = 'setting' + namespace;
19385  var $doc = $(document);
19386  var $dropdowns; // -----------------------------------
19387  // Module methods
19388
19389  api.ready = init;
19390
19391  api.design = function () {
19392    // Close all when returning from preview
19393    if (inPreview) {
19394      closeAll();
19395    }
19396
19397    inPreview = false;
19398    init();
19399  };
19400
19401  api.preview = function () {
19402    inPreview = true;
19403    init();
19404  }; // -----------------------------------
19405  // Private methods
19406
19407
19408  function init() {
19409    inDesigner = inApp && Webflow.env('design'); // Find all instances on the page
19410
19411    $dropdowns = $doc.find(namespace);
19412    $dropdowns.each(build);
19413  }
19414
19415  function build(i, el) {
19416    var $el = $(el); // Store state in data
19417
19418    var data = $.data(el, namespace);
19419
19420    if (!data) {
19421      data = $.data(el, namespace, {
19422        open: false,
19423        el: $el,
19424        config: {},
19425        selectedIdx: -1
19426      });
19427    }
19428
19429    data.toggle = data.el.children('.w-dropdown-toggle');
19430    data.list = data.el.children('.w-dropdown-list');
19431    data.links = data.list.find('a:not(.w-dropdown .w-dropdown a)');
19432    data.complete = complete(data);
19433    data.mouseLeave = makeMouseLeaveHandler(data);
19434    data.mouseUpOutside = outside(data);
19435    data.mouseMoveOutside = moveOutside(data); // Set config from data attributes
19436
19437    configure(data); // Store the IDs of the toggle button & list
19438
19439    var toggleId = data.toggle.attr('id');
19440    var listId = data.list.attr('id'); // If user did not provide toggle ID, set it
19441
19442    if (!toggleId) {
19443      toggleId = 'w-dropdown-toggle-' + i;
19444    } // If user did not provide list ID, set it
19445
19446
19447    if (!listId) {
19448      listId = 'w-dropdown-list-' + i;
19449    } // Add attributes to toggle element
19450
19451
19452    data.toggle.attr('id', toggleId);
19453    data.toggle.attr('aria-controls', listId);
19454    data.toggle.attr('aria-haspopup', 'menu');
19455    data.toggle.attr('aria-expanded', 'false'); // Hide toggle icon from ATs
19456
19457    data.toggle.find('.w-icon-dropdown-toggle').attr('aria-hidden', 'true'); // If toggle element is not a button
19458
19459    if (data.toggle.prop('tagName') !== 'BUTTON') {
19460      // Give it an appropriate role
19461      data.toggle.attr('role', 'button'); // And give it a tabindex if user has not provided one
19462
19463      if (!data.toggle.attr('tabindex')) {
19464        data.toggle.attr('tabindex', '0');
19465      }
19466    } // Add attributes to list element
19467
19468
19469    data.list.attr('id', listId);
19470    data.list.attr('aria-labelledby', toggleId);
19471    data.links.each(function (idx, link) {
19472      /**
19473       * In macOS Safari, links don't take focus on click unless they have
19474       * a tabindex. Without this, the dropdown will break.
19475       * @see https://gist.github.com/cvrebert/68659d0333a578d75372
19476       */
19477      if (!link.hasAttribute('tabindex')) link.setAttribute('tabindex', '0'); // We want to close the drop down if the href links somewhere internally
19478      // to the page
19479
19480      if (INTERNAL_PAGE_LINK_HASHES_PATTERN.test(link.hash)) {
19481        link.addEventListener('click', close.bind(null, data));
19482      }
19483    }); // Remove old events
19484
19485    data.el.off(namespace);
19486    data.toggle.off(namespace);
19487
19488    if (data.nav) {
19489      data.nav.off(namespace);
19490    }
19491
19492    var initialToggler = makeToggler(data, FORCE_CLOSE);
19493
19494    if (inDesigner) {
19495      data.el.on(settingEvent, makeSettingEventHandler(data));
19496    }
19497
19498    if (!inDesigner) {
19499      // Close in preview mode and clean the data.hovering state
19500      if (inApp) {
19501        data.hovering = false;
19502        close(data);
19503      }
19504
19505      if (data.config.hover) {
19506        data.toggle.on(mouseEnterEvent, makeMouseEnterHandler(data));
19507      }
19508
19509      data.el.on(closeEvent, initialToggler);
19510      data.el.on(keydownEvent, makeDropdownKeydownHandler(data));
19511      data.el.on(focusOutEvent, makeDropdownFocusOutHandler(data));
19512      data.toggle.on(mouseUpEvent, initialToggler);
19513      data.toggle.on(keydownEvent, makeToggleKeydownHandler(data));
19514      data.nav = data.el.closest('.w-nav');
19515      data.nav.on(closeEvent, initialToggler);
19516    }
19517  }
19518  /**
19519   * Mutate the data object with a new config property
19520   */
19521
19522
19523  function configure(data) {
19524    // Determine if z-index should be managed
19525    var zIndex = Number(data.el.css('z-index'));
19526    data.manageZ = zIndex === defaultZIndex || zIndex === defaultZIndex + 1;
19527    data.config = {
19528      hover: data.el.attr('data-hover') === 'true' && !touch,
19529      delay: data.el.attr('data-delay')
19530    };
19531  }
19532
19533  function makeSettingEventHandler(data) {
19534    return function (evt, options) {
19535      options = options || {};
19536      configure(data);
19537      options.open === true && open(data, true);
19538      options.open === false && close(data, {
19539        immediate: true
19540      });
19541    };
19542  }
19543
19544  function makeToggler(data, forceClose) {
19545    return debounce(function (evt) {
19546      if (data.open || evt && evt.type === 'w-close') {
19547        return close(data, {
19548          forceClose: forceClose
19549        });
19550      }
19551
19552      open(data);
19553    });
19554  }
19555
19556  function open(data) {
19557    if (data.open) {
19558      return;
19559    }
19560
19561    closeOthers(data);
19562    data.open = true;
19563    data.list.addClass(openStateClassName);
19564    data.toggle.addClass(openStateClassName);
19565    data.toggle.attr('aria-expanded', 'true'); // ARIA
19566
19567    ix.intro(0, data.el[0]);
19568    Webflow.redraw.up(); // Increase z-index to keep above other managed dropdowns
19569
19570    data.manageZ && data.el.css('z-index', defaultZIndex + 1); // Listen for click outside events
19571
19572    var isEditor = Webflow.env('editor');
19573
19574    if (!inDesigner) {
19575      $doc.on(mouseUpEvent, data.mouseUpOutside);
19576    }
19577
19578    if (data.hovering && !isEditor) {
19579      data.el.on(mouseLeaveEvent, data.mouseLeave);
19580    }
19581
19582    if (data.hovering && isEditor) {
19583      $doc.on(mouseMoveEvent, data.mouseMoveOutside);
19584    } // Clear previous delay
19585
19586
19587    window.clearTimeout(data.delayId);
19588  }
19589
19590  function close(data) {
19591    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
19592        immediate = _ref.immediate,
19593        forceClose = _ref.forceClose;
19594
19595    if (!data.open) {
19596      return;
19597    } // Do not close hover-based menus if currently hovering
19598
19599
19600    if (data.config.hover && data.hovering && !forceClose) {
19601      return;
19602    }
19603
19604    data.toggle.attr('aria-expanded', 'false');
19605    data.open = false;
19606    var config = data.config;
19607    ix.outro(0, data.el[0]); // Stop listening for click outside events
19608
19609    $doc.off(mouseUpEvent, data.mouseUpOutside);
19610    $doc.off(mouseMoveEvent, data.mouseMoveOutside);
19611    data.el.off(mouseLeaveEvent, data.mouseLeave); // Clear previous delay
19612
19613    window.clearTimeout(data.delayId); // Skip delay during immediate
19614
19615    if (!config.delay || immediate) {
19616      return data.complete();
19617    } // Optionally wait for delay before close
19618
19619
19620    data.delayId = window.setTimeout(data.complete, config.delay);
19621  }
19622
19623  function closeAll() {
19624    $doc.find(namespace).each(function (i, el) {
19625      $(el).triggerHandler(closeEvent);
19626    });
19627  }
19628
19629  function closeOthers(data) {
19630    var self = data.el[0];
19631    $dropdowns.each(function (i, other) {
19632      var $other = $(other);
19633
19634      if ($other.is(self) || $other.has(self).length) {
19635        return;
19636      }
19637
19638      $other.triggerHandler(closeEvent);
19639    });
19640  }
19641
19642  function outside(data) {
19643    // Unbind previous click handler if it exists
19644    if (data.mouseUpOutside) {
19645      $doc.off(mouseUpEvent, data.mouseUpOutside);
19646    } // Close menu when clicked outside
19647
19648
19649    return debounce(function (evt) {
19650      if (!data.open) {
19651        return;
19652      }
19653
19654      var $target = $(evt.target);
19655
19656      if ($target.closest('.w-dropdown-toggle').length) {
19657        return;
19658      }
19659
19660      var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1;
19661      var isEditor = Webflow.env('editor');
19662
19663      if (isEventOutsideDropdowns) {
19664        if (isEditor) {
19665          var isEventOnDetachedSvg = $target.parents().length === 1 && $target.parents('svg').length === 1;
19666          var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length;
19667
19668          if (isEventOnDetachedSvg || isEventOnHoverControls) {
19669            return;
19670          }
19671        }
19672
19673        close(data);
19674      }
19675    });
19676  }
19677
19678  function complete(data) {
19679    return function () {
19680      data.list.removeClass(openStateClassName);
19681      data.toggle.removeClass(openStateClassName); // Reset z-index for managed dropdowns
19682
19683      data.manageZ && data.el.css('z-index', '');
19684    };
19685  }
19686
19687  function makeMouseEnterHandler(data) {
19688    return function () {
19689      data.hovering = true;
19690      open(data);
19691    };
19692  }
19693
19694  function makeMouseLeaveHandler(data) {
19695    return function () {
19696      data.hovering = false; // We do not want the list to close upon mouseleave
19697      // if one of the links has focus
19698
19699      if (!data.links.is(':focus')) {
19700        close(data);
19701      }
19702    };
19703  }
19704
19705  function moveOutside(data) {
19706    return debounce(function (evt) {
19707      if (!data.open) {
19708        return;
19709      }
19710
19711      var $target = $(evt.target);
19712      var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1;
19713
19714      if (isEventOutsideDropdowns) {
19715        var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length;
19716        var isEventOnHoverToolbar = $target.parents('.w-editor-bem-RTToolbar').length;
19717        var $editorOverlay = $('.w-editor-bem-EditorOverlay');
19718        var isDropdownInEdition = $editorOverlay.find('.w-editor-edit-outline').length || $editorOverlay.find('.w-editor-bem-RTToolbar').length;
19719
19720        if (isEventOnHoverControls || isEventOnHoverToolbar || isDropdownInEdition) {
19721          return;
19722        }
19723
19724        data.hovering = false;
19725        close(data);
19726      }
19727    });
19728  }
19729
19730  function makeDropdownKeydownHandler(data) {
19731    return function (evt) {
19732      // Don't respond to keyboard in designer or if the list is not open
19733      if (inDesigner || !data.open) {
19734        return;
19735      } // Realign selectedIdx with the menu item that is currently in focus.
19736      // We need this because we do not track the `Tab` key activity!
19737
19738
19739      data.selectedIdx = data.links.index(document.activeElement); // Evaluate item-selection logic
19740
19741      switch (evt.keyCode) {
19742        case KEY_CODES.HOME:
19743          {
19744            if (!data.open) return;
19745            data.selectedIdx = 0;
19746            focusSelectedLink(data);
19747            return evt.preventDefault();
19748          }
19749
19750        case KEY_CODES.END:
19751          {
19752            if (!data.open) return;
19753            data.selectedIdx = data.links.length - 1;
19754            focusSelectedLink(data);
19755            return evt.preventDefault();
19756          }
19757
19758        case KEY_CODES.ESCAPE:
19759          {
19760            close(data);
19761            data.toggle.focus();
19762            return evt.stopPropagation();
19763          }
19764
19765        case KEY_CODES.ARROW_RIGHT:
19766        case KEY_CODES.ARROW_DOWN:
19767          {
19768            data.selectedIdx = Math.min(data.links.length - 1, data.selectedIdx + 1);
19769            focusSelectedLink(data);
19770            return evt.preventDefault();
19771          }
19772
19773        case KEY_CODES.ARROW_LEFT:
19774        case KEY_CODES.ARROW_UP:
19775          {
19776            data.selectedIdx = Math.max(-1, data.selectedIdx - 1);
19777            focusSelectedLink(data);
19778            return evt.preventDefault();
19779          }
19780      }
19781    };
19782  }
19783
19784  function focusSelectedLink(data) {
19785    if (data.links[data.selectedIdx]) {
19786      data.links[data.selectedIdx].focus();
19787    }
19788  }
19789
19790  function makeToggleKeydownHandler(data) {
19791    // We want to close immediately
19792    // if interacting via keyboard
19793    var toggler = makeToggler(data, FORCE_CLOSE);
19794    return function (evt) {
19795      if (inDesigner) return; // If the menu is not open, we don't want
19796      // the up or Down arrows to do anything
19797
19798      if (!data.open) {
19799        switch (evt.keyCode) {
19800          case KEY_CODES.ARROW_UP:
19801          case KEY_CODES.ARROW_DOWN:
19802            {
19803              return evt.stopPropagation();
19804            }
19805        }
19806      }
19807
19808      switch (evt.keyCode) {
19809        case KEY_CODES.SPACE:
19810        case KEY_CODES.ENTER:
19811          {
19812            toggler();
19813            evt.stopPropagation();
19814            return evt.preventDefault();
19815          }
19816      }
19817    };
19818  }
19819
19820  function makeDropdownFocusOutHandler(data) {
19821    return debounce(function (evt) {
19822      var relatedTarget = evt.relatedTarget,
19823          target = evt.target;
19824      var menuEl = data.el[0];
19825      /**
19826       * Close menu
19827       * With focusout events, the `relatedTarget` is the element that will next receive focus.
19828       * @see: https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/relatedTarget
19829       */
19830
19831      var menuContainsFocus = menuEl.contains(relatedTarget) || menuEl.contains(target);
19832
19833      if (!menuContainsFocus) {
19834        close(data);
19835      }
19836
19837      return evt.stopPropagation();
19838    });
19839  } // Export module
19840
19841
19842  return api;
19843});
19844
19845/***/ }),
19846/* 338 */
19847/***/ (function(module, exports, __webpack_require__) {
19848
19849"use strict";
19850 // @wf-will-never-add-flow-to-this-file
19851
19852/* globals
19853  window,
19854  document,
19855  FormData,
19856  WEBFLOW_FORM_API_HOST,
19857  WEBFLOW_FORM_OLDIE_HOST
19858*/
19859
19860/* eslint-disable no-var */
19861
19862/**
19863 * Webflow: Forms
19864 */
19865
19866var _interopRequireDefault = __webpack_require__(0);
19867
19868var _slicedToArray2 = _interopRequireDefault(__webpack_require__(339));
19869
19870var Webflow = __webpack_require__(3);
19871
19872Webflow.define('forms', module.exports = function ($, _) {
19873  var api = {};
19874  var $doc = $(document);
19875  var $forms;
19876  var loc = window.location;
19877  var retro = window.XDomainRequest && !window.atob;
19878  var namespace = '.w-form';
19879  var siteId;
19880  var emailField = /e(-)?mail/i;
19881  var emailValue = /^\S+@\S+$/;
19882  var alert = window.alert;
19883  var inApp = Webflow.env();
19884  var listening;
19885  var formUrl;
19886  var signFileUrl; // MailChimp domains: list-manage.com + mirrors
19887
19888  var chimpRegex = /list-manage[1-9]?.com/i;
19889
19890  var disconnected = _.debounce(function () {
19891    alert('Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.');
19892  }, 100);
19893
19894  api.ready = api.design = api.preview = function () {
19895    // Init forms
19896    init(); // Wire document events on published site only once
19897
19898    if (!inApp && !listening) {
19899      addListeners();
19900    }
19901  };
19902
19903  function init() {
19904    siteId = $('html').attr('data-wf-site');
19905    formUrl = "https://webflow.com" + '/api/v1/form/' + siteId; // Work around same-protocol IE XDR limitation - without this IE9 and below forms won't submit
19906
19907    if (retro && formUrl.indexOf("https://webflow.com") >= 0) {
19908      formUrl = formUrl.replace("https://webflow.com", "https://formdata.webflow.com");
19909    }
19910
19911    signFileUrl = "".concat(formUrl, "/signFile");
19912    $forms = $(namespace + ' form');
19913
19914    if (!$forms.length) {
19915      return;
19916    }
19917
19918    $forms.each(build);
19919  }
19920
19921  function build(i, el) {
19922    // Store form state using namespace
19923    var $el = $(el);
19924    var data = $.data(el, namespace);
19925
19926    if (!data) {
19927      data = $.data(el, namespace, {
19928        form: $el
19929      });
19930    } // data.form
19931
19932
19933    reset(data);
19934    var wrap = $el.closest('div.w-form');
19935    data.done = wrap.find('> .w-form-done');
19936    data.fail = wrap.find('> .w-form-fail');
19937    data.fileUploads = wrap.find('.w-file-upload');
19938    data.fileUploads.each(function (j) {
19939      initFileUpload(j, data);
19940    }); // Accessiblity fixes
19941
19942    var formName = data.form.attr('aria-label') || data.form.attr('data-name') || 'Form';
19943
19944    if (!data.done.attr('aria-label')) {
19945      data.form.attr('aria-label', formName);
19946    }
19947
19948    data.done.attr('tabindex', '-1');
19949    data.done.attr('role', 'region');
19950
19951    if (!data.done.attr('aria-label')) {
19952      data.done.attr('aria-label', formName + ' success');
19953    }
19954
19955    data.fail.attr('tabindex', '-1');
19956    data.fail.attr('role', 'region');
19957
19958    if (!data.fail.attr('aria-label')) {
19959      data.fail.attr('aria-label', formName + ' failure');
19960    }
19961
19962    var action = data.action = $el.attr('action');
19963    data.handler = null;
19964    data.redirect = $el.attr('data-redirect'); // MailChimp form
19965
19966    if (chimpRegex.test(action)) {
19967      data.handler = submitMailChimp;
19968      return;
19969    } // Custom form action
19970
19971
19972    if (action) {
19973      return;
19974    } // Webflow forms for hosting accounts
19975
19976
19977    if (siteId) {
19978      data.handler = typeof hostedSubmitWebflow === 'function' ? hostedSubmitWebflow : exportedSubmitWebflow;
19979      return;
19980    } // Alert for disconnected Webflow forms
19981
19982
19983    disconnected();
19984  }
19985
19986  function addListeners() {
19987    listening = true; // Handle form submission for Webflow forms
19988
19989    $doc.on('submit', namespace + ' form', function (evt) {
19990      var data = $.data(this, namespace);
19991
19992      if (data.handler) {
19993        data.evt = evt;
19994        data.handler(data);
19995      }
19996    }); // handle checked ui for custom checkbox and radio button
19997
19998    var CHECKBOX_CLASS_NAME = '.w-checkbox-input';
19999    var RADIO_INPUT_CLASS_NAME = '.w-radio-input';
20000    var CHECKED_CLASS = 'w--redirected-checked';
20001    var FOCUSED_CLASS = 'w--redirected-focus';
20002    var FOCUSED_VISIBLE_CLASS = 'w--redirected-focus-visible';
20003    var focusVisibleSelectors = ':focus-visible, [data-wf-focus-visible]';
20004    var CUSTOM_CONTROLS = [['checkbox', CHECKBOX_CLASS_NAME], ['radio', RADIO_INPUT_CLASS_NAME]];
20005    $doc.on('change', namespace + " form input[type=\"checkbox\"]:not(" + CHECKBOX_CLASS_NAME + ')', function (evt) {
20006      $(evt.target).siblings(CHECKBOX_CLASS_NAME).toggleClass(CHECKED_CLASS);
20007    });
20008    $doc.on('change', namespace + " form input[type=\"radio\"]", function (evt) {
20009      $("input[name=\"".concat(evt.target.name, "\"]:not(").concat(CHECKBOX_CLASS_NAME, ")")).map(function (i, el) {
20010        return $(el).siblings(RADIO_INPUT_CLASS_NAME).removeClass(CHECKED_CLASS);
20011      });
20012      var $target = $(evt.target);
20013
20014      if (!$target.hasClass('w-radio-input')) {
20015        $target.siblings(RADIO_INPUT_CLASS_NAME).addClass(CHECKED_CLASS);
20016      }
20017    });
20018    CUSTOM_CONTROLS.forEach(function (_ref) {
20019      var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
20020          controlType = _ref2[0],
20021          customControlClassName = _ref2[1];
20022
20023      $doc.on('focus', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
20024        $(evt.target).siblings(customControlClassName).addClass(FOCUSED_CLASS);
20025        $(evt.target).filter(focusVisibleSelectors).siblings(customControlClassName).addClass(FOCUSED_VISIBLE_CLASS);
20026      });
20027      $doc.on('blur', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
20028        $(evt.target).siblings(customControlClassName).removeClass("".concat(FOCUSED_CLASS, " ").concat(FOCUSED_VISIBLE_CLASS));
20029      });
20030    });
20031  } // Reset data common to all submit handlers
20032
20033
20034  function reset(data) {
20035    var btn = data.btn = data.form.find(':input[type="submit"]');
20036    data.wait = data.btn.attr('data-wait') || null;
20037    data.success = false;
20038    btn.prop('disabled', false);
20039    data.label && btn.val(data.label);
20040  } // Disable submit button
20041
20042
20043  function disableBtn(data) {
20044    var btn = data.btn;
20045    var wait = data.wait;
20046    btn.prop('disabled', true); // Show wait text and store previous label
20047
20048    if (wait) {
20049      data.label = btn.val();
20050      btn.val(wait);
20051    }
20052  } // Find form fields, validate, and set value pairs
20053
20054
20055  function findFields(form, result) {
20056    var status = null;
20057    result = result || {}; // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas
20058
20059    form.find(':input:not([type="submit"]):not([type="file"])').each(function (i, el) {
20060      var field = $(el);
20061      var type = field.attr('type');
20062      var name = field.attr('data-name') || field.attr('name') || 'Field ' + (i + 1);
20063      var value = field.val();
20064
20065      if (type === 'checkbox') {
20066        value = field.is(':checked');
20067      } else if (type === 'radio') {
20068        // Radio group value already processed
20069        if (result[name] === null || typeof result[name] === 'string') {
20070          return;
20071        }
20072
20073        value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null;
20074      }
20075
20076      if (typeof value === 'string') {
20077        value = $.trim(value);
20078      }
20079
20080      result[name] = value;
20081      status = status || getStatus(field, type, name, value);
20082    });
20083    return status;
20084  }
20085
20086  function findFileUploads(form) {
20087    var result = {};
20088    form.find(':input[type="file"]').each(function (i, el) {
20089      var field = $(el);
20090      var name = field.attr('data-name') || field.attr('name') || 'File ' + (i + 1);
20091      var value = field.attr('data-value');
20092
20093      if (typeof value === 'string') {
20094        value = $.trim(value);
20095      }
20096
20097      result[name] = value;
20098    });
20099    return result;
20100  }
20101
20102  var trackingCookieNameMap = {
20103    _mkto_trk: 'marketo' // __hstc: 'hubspot',
20104
20105  };
20106
20107  function collectEnterpriseTrackingCookies() {
20108    var cookies = document.cookie.split('; ').reduce(function (acc, cookie) {
20109      var splitCookie = cookie.split('=');
20110      var name = splitCookie[0];
20111
20112      if (name in trackingCookieNameMap) {
20113        var mappedName = trackingCookieNameMap[name];
20114        var value = splitCookie.slice(1).join('=');
20115        acc[mappedName] = value;
20116      }
20117
20118      return acc;
20119    }, {});
20120    return cookies;
20121  }
20122
20123  function getStatus(field, type, name, value) {
20124    var status = null;
20125
20126    if (type === 'password') {
20127      status = 'Passwords cannot be submitted.';
20128    } else if (field.attr('required')) {
20129      if (!value) {
20130        status = 'Please fill out the required field: ' + name;
20131      } else if (emailField.test(field.attr('type'))) {
20132        if (!emailValue.test(value)) {
20133          status = 'Please enter a valid email address for: ' + name;
20134        }
20135      }
20136    } else if (name === 'g-recaptcha-response' && !value) {
20137      status = 'Please confirm you’re not a robot.';
20138    }
20139
20140    return status;
20141  }
20142
20143  function exportedSubmitWebflow(data) {
20144    preventDefault(data);
20145    afterSubmit(data);
20146  }
20147  /* WEBFLOW_HOSTED_BLOCK:START */
20148  // Submit form to Webflow
20149
20150
20151  function hostedSubmitWebflow(data) {
20152    reset(data);
20153    var form = data.form;
20154    var payload = {
20155      name: form.attr('data-name') || form.attr('name') || 'Untitled Form',
20156      source: loc.href,
20157      test: Webflow.env(),
20158      fields: {},
20159      fileUploads: {},
20160      dolphin: /pass[\s-_]?(word|code)|secret|login|credentials/i.test(form.html()),
20161      trackingCookies: collectEnterpriseTrackingCookies()
20162    };
20163    var wfFlow = form.attr('data-wf-flow');
20164
20165    if (wfFlow) {
20166      payload.wfFlow = wfFlow;
20167    }
20168
20169    preventDefault(data); // Find & populate all fields
20170
20171    var status = findFields(form, payload.fields);
20172
20173    if (status) {
20174      return alert(status);
20175    }
20176
20177    payload.fileUploads = findFileUploads(form); // Disable submit button
20178
20179    disableBtn(data); // Read site ID
20180    // NOTE: If this site is exported, the HTML tag must retain the data-wf-site attribute for forms to work
20181
20182    if (!siteId) {
20183      afterSubmit(data);
20184      return;
20185    }
20186
20187    $.ajax({
20188      url: formUrl,
20189      type: 'POST',
20190      data: payload,
20191      dataType: 'json',
20192      crossDomain: true
20193    }).done(function (response) {
20194      if (response && response.code === 200) {
20195        data.success = true;
20196      }
20197
20198      afterSubmit(data);
20199    }).fail(function () {
20200      afterSubmit(data);
20201    });
20202  }
20203  /* WEBFLOW_HOSTED_BLOCK:END */
20204  // Submit form to MailChimp
20205
20206
20207  function submitMailChimp(data) {
20208    reset(data);
20209    var form = data.form;
20210    var payload = {}; // Skip Ajax submission if http/s mismatch, fallback to POST instead
20211
20212    if (/^https/.test(loc.href) && !/^https/.test(data.action)) {
20213      form.attr('method', 'post');
20214      return;
20215    }
20216
20217    preventDefault(data); // Find & populate all fields
20218
20219    var status = findFields(form, payload);
20220
20221    if (status) {
20222      return alert(status);
20223    } // Disable submit button
20224
20225
20226    disableBtn(data); // Use special format for MailChimp params
20227
20228    var fullName;
20229
20230    _.each(payload, function (value, key) {
20231      if (emailField.test(key)) {
20232        payload.EMAIL = value;
20233      }
20234
20235      if (/^((full[ _-]?)?name)$/i.test(key)) {
20236        fullName = value;
20237      }
20238
20239      if (/^(first[ _-]?name)$/i.test(key)) {
20240        payload.FNAME = value;
20241      }
20242
20243      if (/^(last[ _-]?name)$/i.test(key)) {
20244        payload.LNAME = value;
20245      }
20246    });
20247
20248    if (fullName && !payload.FNAME) {
20249      fullName = fullName.split(' ');
20250      payload.FNAME = fullName[0];
20251      payload.LNAME = payload.LNAME || fullName[1];
20252    } // Use the (undocumented) MailChimp jsonp api
20253
20254
20255    var url = data.action.replace('/post?', '/post-json?') + '&c=?'; // Add special param to prevent bot signups
20256
20257    var userId = url.indexOf('u=') + 2;
20258    userId = url.substring(userId, url.indexOf('&', userId));
20259    var listId = url.indexOf('id=') + 3;
20260    listId = url.substring(listId, url.indexOf('&', listId));
20261    payload['b_' + userId + '_' + listId] = '';
20262    $.ajax({
20263      url: url,
20264      data: payload,
20265      dataType: 'jsonp'
20266    }).done(function (resp) {
20267      data.success = resp.result === 'success' || /already/.test(resp.msg);
20268
20269      if (!data.success) {
20270        console.info('MailChimp error: ' + resp.msg);
20271      }
20272
20273      afterSubmit(data);
20274    }).fail(function () {
20275      afterSubmit(data);
20276    });
20277  } // Common callback which runs after all Ajax submissions
20278
20279
20280  function afterSubmit(data) {
20281    var form = data.form;
20282    var redirect = data.redirect;
20283    var success = data.success; // Redirect to a success url if defined
20284
20285    if (success && redirect) {
20286      Webflow.location(redirect);
20287      return;
20288    } // Show or hide status divs
20289
20290
20291    data.done.toggle(success);
20292    data.fail.toggle(!success);
20293
20294    if (success) {
20295      data.done.focus();
20296    } else {
20297      data.fail.focus();
20298    } // Hide form on success
20299
20300
20301    form.toggle(!success); // Reset data and enable submit button
20302
20303    reset(data);
20304  }
20305
20306  function preventDefault(data) {
20307    data.evt && data.evt.preventDefault();
20308    data.evt = null;
20309  }
20310
20311  function initFileUpload(i, form) {
20312    if (!form.fileUploads || !form.fileUploads[i]) {
20313      return;
20314    }
20315
20316    var file;
20317    var $el = $(form.fileUploads[i]);
20318    var $defaultWrap = $el.find('> .w-file-upload-default');
20319    var $uploadingWrap = $el.find('> .w-file-upload-uploading');
20320    var $successWrap = $el.find('> .w-file-upload-success');
20321    var $errorWrap = $el.find('> .w-file-upload-error');
20322    var $input = $defaultWrap.find('.w-file-upload-input');
20323    var $label = $defaultWrap.find('.w-file-upload-label');
20324    var $labelChildren = $label.children();
20325    var $errorMsgEl = $errorWrap.find('.w-file-upload-error-msg');
20326    var $fileEl = $successWrap.find('.w-file-upload-file');
20327    var $removeEl = $successWrap.find('.w-file-remove-link');
20328    var $fileNameEl = $fileEl.find('.w-file-upload-file-name');
20329    var sizeErrMsg = $errorMsgEl.attr('data-w-size-error');
20330    var typeErrMsg = $errorMsgEl.attr('data-w-type-error');
20331    var genericErrMsg = $errorMsgEl.attr('data-w-generic-error'); // Accessiblity fixes
20332    // The file upload Input is not stylable by the designer, so we are
20333    // going to pretend the Label is the input. ¯\_(ツ)_/¯
20334
20335    if (!inApp) {
20336      $label.on('click keydown', function (e) {
20337        if (e.type === 'keydown' && e.which !== 13 && e.which !== 32) {
20338          return;
20339        }
20340
20341        e.preventDefault();
20342        $input.click();
20343      });
20344    } // Both of these are added through CSS
20345
20346
20347    $label.find('.w-icon-file-upload-icon').attr('aria-hidden', 'true');
20348    $removeEl.find('.w-icon-file-upload-remove').attr('aria-hidden', 'true');
20349
20350    if (!inApp) {
20351      $removeEl.on('click keydown', function (e) {
20352        if (e.type === 'keydown') {
20353          if (e.which !== 13 && e.which !== 32) {
20354            return;
20355          }
20356
20357          e.preventDefault();
20358        }
20359
20360        $input.removeAttr('data-value');
20361        $input.val('');
20362        $fileNameEl.html('');
20363        $defaultWrap.toggle(true);
20364        $successWrap.toggle(false);
20365        $label.focus();
20366      });
20367      $input.on('change', function (e) {
20368        file = e.target && e.target.files && e.target.files[0];
20369
20370        if (!file) {
20371          return;
20372        } // Show uploading
20373
20374
20375        $defaultWrap.toggle(false);
20376        $errorWrap.toggle(false);
20377        $uploadingWrap.toggle(true);
20378        $uploadingWrap.focus(); // Set filename
20379
20380        $fileNameEl.text(file.name); // Disable submit button
20381
20382        if (!isUploading()) {
20383          disableBtn(form);
20384        }
20385
20386        form.fileUploads[i].uploading = true;
20387        signFile(file, afterSign);
20388      }); // Setting input width 1px and height equal label
20389      // This is so the browser required error will show up
20390
20391      var height = $label.outerHeight();
20392      $input.height(height);
20393      $input.width(1);
20394    } else {
20395      $input.on('click', function (e) {
20396        e.preventDefault();
20397      });
20398      $label.on('click', function (e) {
20399        e.preventDefault();
20400      });
20401      $labelChildren.on('click', function (e) {
20402        e.preventDefault();
20403      });
20404    }
20405
20406    function parseError(err) {
20407      var errorMsg = err.responseJSON && err.responseJSON.msg;
20408      var userError = genericErrMsg;
20409
20410      if (typeof errorMsg === 'string' && errorMsg.indexOf('InvalidFileTypeError') === 0) {
20411        userError = typeErrMsg;
20412      } else if (typeof errorMsg === 'string' && errorMsg.indexOf('MaxFileSizeError') === 0) {
20413        userError = sizeErrMsg;
20414      }
20415
20416      $errorMsgEl.text(userError);
20417      $input.removeAttr('data-value');
20418      $input.val('');
20419      $uploadingWrap.toggle(false);
20420      $defaultWrap.toggle(true);
20421      $errorWrap.toggle(true);
20422      $errorWrap.focus();
20423      form.fileUploads[i].uploading = false;
20424
20425      if (!isUploading()) {
20426        reset(form);
20427      }
20428    }
20429
20430    function afterSign(err, data) {
20431      if (err) {
20432        return parseError(err);
20433      }
20434
20435      var fileName = data.fileName;
20436      var postData = data.postData;
20437      var fileId = data.fileId;
20438      var s3Url = data.s3Url;
20439      $input.attr('data-value', fileId);
20440      uploadS3(s3Url, postData, file, fileName, afterUpload);
20441    }
20442
20443    function afterUpload(err) {
20444      if (err) {
20445        return parseError(err);
20446      } // Show success
20447
20448
20449      $uploadingWrap.toggle(false);
20450      $successWrap.css('display', 'inline-block');
20451      $successWrap.focus();
20452      form.fileUploads[i].uploading = false;
20453
20454      if (!isUploading()) {
20455        reset(form);
20456      }
20457    }
20458
20459    function isUploading() {
20460      var uploads = form.fileUploads && form.fileUploads.toArray() || [];
20461      return uploads.some(function (value) {
20462        return value.uploading;
20463      });
20464    }
20465  }
20466
20467  function signFile(file, cb) {
20468    var payload = new URLSearchParams({
20469      name: file.name,
20470      size: file.size
20471    });
20472    $.ajax({
20473      type: 'GET',
20474      url: "".concat(signFileUrl, "?").concat(payload),
20475      crossDomain: true
20476    }).done(function (data) {
20477      cb(null, data);
20478    }).fail(function (err) {
20479      cb(err);
20480    });
20481  }
20482
20483  function uploadS3(url, data, file, fileName, cb) {
20484    var formData = new FormData();
20485
20486    for (var k in data) {
20487      formData.append(k, data[k]);
20488    }
20489
20490    formData.append('file', file, fileName);
20491    $.ajax({
20492      type: 'POST',
20493      url: url,
20494      data: formData,
20495      processData: false,
20496      contentType: false
20497    }).done(function () {
20498      cb(null);
20499    }).fail(function (err) {
20500      cb(err);
20501    });
20502  } // Export module
20503
20504
20505  return api;
20506});
20507
20508/***/ }),
20509/* 339 */
20510/***/ (function(module, exports, __webpack_require__) {
20511
20512var arrayWithHoles = __webpack_require__(340);
20513
20514var iterableToArrayLimit = __webpack_require__(341);
20515
20516var nonIterableRest = __webpack_require__(342);
20517
20518function _slicedToArray(arr, i) {
20519  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
20520}
20521
20522module.exports = _slicedToArray;
20523
20524/***/ }),
20525/* 340 */
20526/***/ (function(module, exports) {
20527
20528function _arrayWithHoles(arr) {
20529  if (Array.isArray(arr)) return arr;
20530}
20531
20532module.exports = _arrayWithHoles;
20533
20534/***/ }),
20535/* 341 */
20536/***/ (function(module, exports) {
20537
20538function _iterableToArrayLimit(arr, i) {
20539  var _arr = [];
20540  var _n = true;
20541  var _d = false;
20542  var _e = undefined;
20543
20544  try {
20545    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
20546      _arr.push(_s.value);
20547
20548      if (i && _arr.length === i) break;
20549    }
20550  } catch (err) {
20551    _d = true;
20552    _e = err;
20553  } finally {
20554    try {
20555      if (!_n && _i["return"] != null) _i["return"]();
20556    } finally {
20557      if (_d) throw _e;
20558    }
20559  }
20560
20561  return _arr;
20562}
20563
20564module.exports = _iterableToArrayLimit;
20565
20566/***/ }),
20567/* 342 */
20568/***/ (function(module, exports) {
20569
20570function _nonIterableRest() {
20571  throw new TypeError("Invalid attempt to destructure non-iterable instance");
20572}
20573
20574module.exports = _nonIterableRest;
20575
20576/***/ }),
20577/* 343 */
20578/***/ (function(module, exports, __webpack_require__) {
20579
20580"use strict";
20581 // @wf-will-never-add-flow-to-this-file
20582
20583/* globals window, document */
20584
20585/* eslint-disable no-var */
20586
20587/**
20588 * Webflow: Navbar component
20589 */
20590
20591var Webflow = __webpack_require__(3);
20592
20593var IXEvents = __webpack_require__(39);
20594
20595var KEY_CODES = {
20596  ARROW_LEFT: 37,
20597  ARROW_UP: 38,
20598  ARROW_RIGHT: 39,
20599  ARROW_DOWN: 40,
20600  ESCAPE: 27,
20601  SPACE: 32,
20602  ENTER: 13,
20603  HOME: 36,
20604  END: 35
20605};
20606Webflow.define('navbar', module.exports = function ($, _) {
20607  var api = {};
20608  var tram = $.tram;
20609  var $win = $(window);
20610  var $doc = $(document);
20611  var debounce = _.debounce;
20612  var $body;
20613  var $navbars;
20614  var designer;
20615  var inEditor;
20616  var inApp = Webflow.env();
20617  var overlay = '<div class="w-nav-overlay" data-wf-ignore />';
20618  var namespace = '.w-nav';
20619  var navbarOpenedButton = 'w--open';
20620  var navbarOpenedDropdown = 'w--nav-dropdown-open';
20621  var navbarOpenedDropdownToggle = 'w--nav-dropdown-toggle-open';
20622  var navbarOpenedDropdownList = 'w--nav-dropdown-list-open';
20623  var navbarOpenedLink = 'w--nav-link-open';
20624  var ix = IXEvents.triggers;
20625  var menuSibling = $(); // -----------------------------------
20626  // Module methods
20627
20628  api.ready = api.design = api.preview = init;
20629
20630  api.destroy = function () {
20631    menuSibling = $();
20632    removeListeners();
20633
20634    if ($navbars && $navbars.length) {
20635      $navbars.each(teardown);
20636    }
20637  }; // -----------------------------------
20638  // Private methods
20639
20640
20641  function init() {
20642    designer = inApp && Webflow.env('design');
20643    inEditor = Webflow.env('editor');
20644    $body = $(document.body); // Find all instances on the page
20645
20646    $navbars = $doc.find(namespace);
20647
20648    if (!$navbars.length) {
20649      return;
20650    }
20651
20652    $navbars.each(build); // Wire events
20653
20654    removeListeners();
20655    addListeners();
20656  }
20657
20658  function removeListeners() {
20659    Webflow.resize.off(resizeAll);
20660  }
20661
20662  function addListeners() {
20663    Webflow.resize.on(resizeAll);
20664  }
20665
20666  function resizeAll() {
20667    $navbars.each(resize);
20668  }
20669
20670  function build(i, el) {
20671    var $el = $(el); // Store state in data
20672
20673    var data = $.data(el, namespace);
20674
20675    if (!data) {
20676      data = $.data(el, namespace, {
20677        open: false,
20678        el: $el,
20679        config: {},
20680        selectedIdx: -1
20681      });
20682    }
20683
20684    data.menu = $el.find('.w-nav-menu');
20685    data.links = data.menu.find('.w-nav-link');
20686    data.dropdowns = data.menu.find('.w-dropdown');
20687    data.dropdownToggle = data.menu.find('.w-dropdown-toggle');
20688    data.dropdownList = data.menu.find('.w-dropdown-list');
20689    data.button = $el.find('.w-nav-button');
20690    data.container = $el.find('.w-container');
20691    data.overlayContainerId = 'w-nav-overlay-' + i;
20692    data.outside = outside(data); //   If the brand links exists and is set to link to the homepage, the
20693    // default setting, then add an aria-label
20694
20695    var navBrandLink = $el.find('.w-nav-brand');
20696
20697    if (navBrandLink && navBrandLink.attr('href') === '/' && navBrandLink.attr('aria-label') == null) {
20698      navBrandLink.attr('aria-label', 'home');
20699    } //   VoiceOver bug, when items that disallow user selection are focused
20700    // VoiceOver gets confused and scrolls to the end of the page. ¯\_(ツ)_/¯
20701
20702
20703    data.button.attr('style', '-webkit-user-select: text;'); // Add attributes to toggle element
20704
20705    if (data.button.attr('aria-label') == null) {
20706      data.button.attr('aria-label', 'menu');
20707    }
20708
20709    data.button.attr('role', 'button');
20710    data.button.attr('tabindex', '0');
20711    data.button.attr('aria-controls', data.overlayContainerId);
20712    data.button.attr('aria-haspopup', 'menu');
20713    data.button.attr('aria-expanded', 'false'); // Remove old events
20714
20715    data.el.off(namespace);
20716    data.button.off(namespace);
20717    data.menu.off(namespace); // Set config from data attributes
20718
20719    configure(data); // Add events based on mode
20720
20721    if (designer) {
20722      removeOverlay(data);
20723      data.el.on('setting' + namespace, handler(data));
20724    } else {
20725      addOverlay(data);
20726      data.button.on('click' + namespace, toggle(data));
20727      data.menu.on('click' + namespace, 'a', navigate(data));
20728      data.button.on('keydown' + namespace, makeToggleButtonKeyboardHandler(data));
20729      data.el.on('keydown' + namespace, makeLinksKeyboardHandler(data));
20730    } // Trigger initial resize
20731
20732
20733    resize(i, el);
20734  }
20735
20736  function teardown(i, el) {
20737    var data = $.data(el, namespace);
20738
20739    if (data) {
20740      removeOverlay(data);
20741      $.removeData(el, namespace);
20742    }
20743  }
20744
20745  function removeOverlay(data) {
20746    if (!data.overlay) {
20747      return;
20748    }
20749
20750    close(data, true);
20751    data.overlay.remove();
20752    data.overlay = null;
20753  }
20754
20755  function addOverlay(data) {
20756    if (data.overlay) {
20757      return;
20758    }
20759
20760    data.overlay = $(overlay).appendTo(data.el);
20761    data.overlay.attr('id', data.overlayContainerId);
20762    data.parent = data.menu.parent();
20763    close(data, true);
20764  }
20765
20766  function configure(data) {
20767    var config = {};
20768    var old = data.config || {}; // Set config options from data attributes
20769
20770    var animation = config.animation = data.el.attr('data-animation') || 'default';
20771    config.animOver = /^over/.test(animation);
20772    config.animDirect = /left$/.test(animation) ? -1 : 1; // Re-open menu if the animation type changed
20773
20774    if (old.animation !== animation) {
20775      data.open && _.defer(reopen, data);
20776    }
20777
20778    config.easing = data.el.attr('data-easing') || 'ease';
20779    config.easing2 = data.el.attr('data-easing2') || 'ease';
20780    var duration = data.el.attr('data-duration');
20781    config.duration = duration != null ? Number(duration) : 400;
20782    config.docHeight = data.el.attr('data-doc-height'); // Store config in data
20783
20784    data.config = config;
20785  }
20786
20787  function handler(data) {
20788    return function (evt, options) {
20789      options = options || {};
20790      var winWidth = $win.width();
20791      configure(data);
20792      options.open === true && open(data, true);
20793      options.open === false && close(data, true); // Reopen if media query changed after setting
20794
20795      data.open && _.defer(function () {
20796        if (winWidth !== $win.width()) {
20797          reopen(data);
20798        }
20799      });
20800    };
20801  }
20802
20803  function makeToggleButtonKeyboardHandler(data) {
20804    return function (evt) {
20805      switch (evt.keyCode) {
20806        case KEY_CODES.SPACE:
20807        case KEY_CODES.ENTER:
20808          {
20809            // Toggle returns a function
20810            toggle(data)();
20811            evt.preventDefault();
20812            return evt.stopPropagation();
20813          }
20814
20815        case KEY_CODES.ESCAPE:
20816          {
20817            close(data);
20818            evt.preventDefault();
20819            return evt.stopPropagation();
20820          }
20821
20822        case KEY_CODES.ARROW_RIGHT:
20823        case KEY_CODES.ARROW_DOWN:
20824        case KEY_CODES.HOME:
20825        case KEY_CODES.END:
20826          {
20827            if (!data.open) {
20828              evt.preventDefault();
20829              return evt.stopPropagation();
20830            }
20831
20832            if (evt.keyCode === KEY_CODES.END) {
20833              data.selectedIdx = data.links.length - 1;
20834            } else {
20835              data.selectedIdx = 0;
20836            }
20837
20838            focusSelectedLink(data);
20839            evt.preventDefault();
20840            return evt.stopPropagation();
20841          }
20842      }
20843    };
20844  }
20845
20846  function makeLinksKeyboardHandler(data) {
20847    return function (evt) {
20848      if (!data.open) {
20849        return;
20850      } // Realign selectedIdx with the menu item that is currently in focus.
20851      // We need this because we do not track the `Tab` key activity!
20852
20853
20854      data.selectedIdx = data.links.index(document.activeElement);
20855
20856      switch (evt.keyCode) {
20857        case KEY_CODES.HOME:
20858        case KEY_CODES.END:
20859          {
20860            if (evt.keyCode === KEY_CODES.END) {
20861              data.selectedIdx = data.links.length - 1;
20862            } else {
20863              data.selectedIdx = 0;
20864            }
20865
20866            focusSelectedLink(data);
20867            evt.preventDefault();
20868            return evt.stopPropagation();
20869          }
20870
20871        case KEY_CODES.ESCAPE:
20872          {
20873            close(data); // Focus toggle button
20874
20875            data.button.focus();
20876            evt.preventDefault();
20877            return evt.stopPropagation();
20878          }
20879
20880        case KEY_CODES.ARROW_LEFT:
20881        case KEY_CODES.ARROW_UP:
20882          {
20883            data.selectedIdx = Math.max(-1, data.selectedIdx - 1);
20884            focusSelectedLink(data);
20885            evt.preventDefault();
20886            return evt.stopPropagation();
20887          }
20888
20889        case KEY_CODES.ARROW_RIGHT:
20890        case KEY_CODES.ARROW_DOWN:
20891          {
20892            data.selectedIdx = Math.min(data.links.length - 1, data.selectedIdx + 1);
20893            focusSelectedLink(data);
20894            evt.preventDefault();
20895            return evt.stopPropagation();
20896          }
20897      }
20898    };
20899  }
20900
20901  function focusSelectedLink(data) {
20902    if (data.links[data.selectedIdx]) {
20903      var selectedElement = data.links[data.selectedIdx];
20904      selectedElement.focus();
20905      navigate(selectedElement);
20906    }
20907  }
20908
20909  function reopen(data) {
20910    if (!data.open) {
20911      return;
20912    }
20913
20914    close(data, true);
20915    open(data, true);
20916  }
20917
20918  function toggle(data) {
20919    // Debounce toggle to wait for accurate open state
20920    return debounce(function () {
20921      data.open ? close(data) : open(data);
20922    });
20923  }
20924
20925  function navigate(data) {
20926    return function (evt) {
20927      var link = $(this);
20928      var href = link.attr('href'); // Avoid late clicks on touch devices
20929
20930      if (!Webflow.validClick(evt.currentTarget)) {
20931        evt.preventDefault();
20932        return;
20933      } // Close when navigating to an in-page anchor
20934
20935
20936      if (href && href.indexOf('#') === 0 && data.open) {
20937        close(data);
20938      }
20939    };
20940  }
20941
20942  function outside(data) {
20943    // Unbind previous click handler if it exists
20944    if (data.outside) {
20945      $doc.off('click' + namespace, data.outside);
20946    }
20947
20948    return function (evt) {
20949      var $target = $(evt.target); // Ignore clicks on Editor overlay UI
20950
20951      if (inEditor && $target.closest('.w-editor-bem-EditorOverlay').length) {
20952        return;
20953      } // Close menu when clicked outside, debounced to wait for state
20954
20955
20956      outsideDebounced(data, $target);
20957    };
20958  }
20959
20960  var outsideDebounced = debounce(function (data, $target) {
20961    if (!data.open) {
20962      return;
20963    }
20964
20965    var menu = $target.closest('.w-nav-menu');
20966
20967    if (!data.menu.is(menu)) {
20968      close(data);
20969    }
20970  });
20971
20972  function resize(i, el) {
20973    var data = $.data(el, namespace);
20973 // Check for collapsed state based on button display
20974
20975    var collapsed = data.collapsed = data.button.css('display') !== 'none'; // Close menu if button is no longer visible (and not in designer)
20976
20977    if (data.open && !collapsed && !designer) {
20978      close(data, true);
20979    } // Set max-width of links + dropdowns to match container
20980
20981
20982    if (data.container.length) {
20983      var updateEachMax = updateMax(data);
20984      data.links.each(updateEachMax);
20985      data.dropdowns.each(updateEachMax);
20986    } // If currently open, update height to match body
20987
20988
20989    if (data.open) {
20990      setOverlayHeight(data);
20991    }
20992  }
20993
20994  var maxWidth = 'max-width';
20995
20996  function updateMax(data) {
20997    // Set max-width of each element to match container
20998    var containMax = data.container.css(maxWidth);
20999
21000    if (containMax === 'none') {
21001      containMax = '';
21002    }
21003
21004    return function (i, link) {
21005      link = $(link);
21006      link.css(maxWidth, ''); // Don't set the max-width if an upstream value exists
21007
21008      if (link.css(maxWidth) === 'none') {
21009        link.css(maxWidth, containMax);
21010      }
21011    };
21012  }
21013
21014  function addMenuOpen(i, el) {
21015    el.setAttribute('data-nav-menu-open', '');
21016  }
21017
21018  function removeMenuOpen(i, el) {
21019    el.removeAttribute('data-nav-menu-open');
21020  }
21021
21022  function open(data, immediate) {
21023    if (data.open) {
21024      return;
21025    }
21026
21027    data.open = true;
21028    data.menu.each(addMenuOpen);
21029    data.links.addClass(navbarOpenedLink);
21030    data.dropdowns.addClass(navbarOpenedDropdown);
21031    data.dropdownToggle.addClass(navbarOpenedDropdownToggle);
21032    data.dropdownList.addClass(navbarOpenedDropdownList);
21033    data.button.addClass(navbarOpenedButton);
21034    var config = data.config;
21035    var animation = config.animation;
21036
21037    if (animation === 'none' || !tram.support.transform || config.duration <= 0) {
21038      immediate = true;
21039    }
21040
21041    var bodyHeight = setOverlayHeight(data);
21042    var menuHeight = data.menu.outerHeight(true);
21043    var menuWidth = data.menu.outerWidth(true);
21044    var navHeight = data.el.height();
21045    var navbarEl = data.el[0];
21046    resize(0, navbarEl);
21047    ix.intro(0, navbarEl);
21048    Webflow.redraw.up(); // Listen for click outside events
21049
21050    if (!designer) {
21051      $doc.on('click' + namespace, data.outside);
21052    } // No transition for immediate
21053
21054
21055    if (immediate) {
21056      complete();
21057      return;
21058    }
21059
21060    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing; // Add menu to overlay
21061
21062    if (data.overlay) {
21063      menuSibling = data.menu.prev();
21064      data.overlay.show().append(data.menu);
21065    } // Over left/right
21066
21067
21068    if (config.animOver) {
21069      tram(data.menu).add(transConfig).set({
21070        x: config.animDirect * menuWidth,
21071        height: bodyHeight
21072      }).start({
21073        x: 0
21074      }).then(complete);
21075      data.overlay && data.overlay.width(menuWidth);
21076      return;
21077    } // Drop Down
21078
21079
21080    var offsetY = navHeight + menuHeight;
21081    tram(data.menu).add(transConfig).set({
21082      y: -offsetY
21083    }).start({
21084      y: 0
21085    }).then(complete);
21086
21087    function complete() {
21088      data.button.attr('aria-expanded', 'true');
21089    }
21090  }
21091
21092  function setOverlayHeight(data) {
21093    var config = data.config;
21094    var bodyHeight = config.docHeight ? $doc.height() : $body.height();
21095
21096    if (config.animOver) {
21097      data.menu.height(bodyHeight);
21098    } else if (data.el.css('position') !== 'fixed') {
21099      bodyHeight -= data.el.outerHeight(true);
21100    }
21101
21102    data.overlay && data.overlay.height(bodyHeight);
21103    return bodyHeight;
21104  }
21105
21106  function close(data, immediate) {
21107    if (!data.open) {
21108      return;
21109    }
21110
21111    data.open = false;
21112    data.button.removeClass(navbarOpenedButton);
21113    var config = data.config;
21114
21115    if (config.animation === 'none' || !tram.support.transform || config.duration <= 0) {
21116      immediate = true;
21117    }
21118
21119    ix.outro(0, data.el[0]); // Stop listening for click outside events
21120
21121    $doc.off('click' + namespace, data.outside);
21122
21123    if (immediate) {
21124      tram(data.menu).stop();
21125      complete();
21126      return;
21127    }
21128
21129    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing2;
21130    var menuHeight = data.menu.outerHeight(true);
21131    var menuWidth = data.menu.outerWidth(true);
21132    var navHeight = data.el.height(); // Over left/right
21133
21134    if (config.animOver) {
21135      tram(data.menu).add(transConfig).start({
21136        x: menuWidth * config.animDirect
21137      }).then(complete);
21138      return;
21139    } // Drop Down
21140
21141
21142    var offsetY = navHeight + menuHeight;
21143    tram(data.menu).add(transConfig).start({
21144      y: -offsetY
21145    }).then(complete);
21146
21147    function complete() {
21148      data.menu.height('');
21149      tram(data.menu).set({
21150        x: 0,
21151        y: 0
21152      });
21153      data.menu.each(removeMenuOpen);
21154      data.links.removeClass(navbarOpenedLink);
21155      data.dropdowns.removeClass(navbarOpenedDropdown);
21156      data.dropdownToggle.removeClass(navbarOpenedDropdownToggle);
21157      data.dropdownList.removeClass(navbarOpenedDropdownList);
21158
21159      if (data.overlay && data.overlay.children().length) {
21160        // Move menu back to parent at the original location
21161        menuSibling.length ? data.menu.insertAfter(menuSibling) : data.menu.prependTo(data.parent);
21162        data.overlay.attr('style', '').hide();
21163      } // Trigger event so other components can hook in (dropdown)
21164
21165
21166      data.el.triggerHandler('w-close');
21167      data.button.attr('aria-expanded', 'false');
21168    }
21169  } // Export module
21170
21171
21172  return api;
21173});
21174
21175/***/ })
21176/******/ ]);/**
21177 * ----------------------------------------------------------------------
21178 * Webflow: Interactions 2.0: Init
21179 */
21180Webflow.require('ix2').init(
21181{"events":{"e-11":{"id":"e-11","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-55"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f75160","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f75160","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1601059006788},"e-17":{"id":"e-17","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-36"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f7516c","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f7516c","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":1250,"direction":"TOP","effectIn":true},"createdOn":1601059110944},"e-20":{"id":"e-20","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-38"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f75163","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f75163","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":500,"direction":"TOP","effectIn":true},"createdOn":1601059034895},"e-26":{"id":"e-26","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-49"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f75166","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f75166","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":5000,"direction":"TOP","effectIn":true},"createdOn":1601059062457},"e-27":{"id":"e-27","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-46"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f7516f","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f7516f","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":1500,"direction":"TOP","effectIn":true},"createdOn":1601059136048},"e-32":{"id":"e-32","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-42"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f75169","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8601feb8afb41b69743804|dbbceee8-97dc-092b-55cd-5ed738f75169","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":1000,"direction":"TOP","effectIn":true},"createdOn":1601059466853},"e-39":{"id":"e-39","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-49"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8db42285a38dd966a89990|d153f736-16e5-6b4a-bb88-33dc279b6dec","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8db42285a38dd966a89990|d153f736-16e5-6b4a-bb88-33dc279b6dec","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":5000,"direction":"TOP","effectIn":true},"createdOn":1601059062457},"e-40":{"id":"e-40","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-42"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8db42285a38dd966a89990|d153f736-16e5-6b4a-bb88-33dc279b6def","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8db42285a38dd966a89990|d153f736-16e5-6b4a-bb88-33dc279b6def","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":1000,"direction":"TOP","effectIn":true},"createdOn":1601059466853},"e-53":{"id":"e-53","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-55"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8db42285a38dd966a89990|d153f736-16e5-6b4a-bb88-33dc279b6de6","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8db42285a38dd966a89990|d153f736-16e5-6b4a-bb88-33dc279b6de6","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":3000,"direction":"TOP","effectIn":true},"createdOn":1601059006788},"e-57":{"id":"e-57","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-36"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8db42285a38dd966a89990|d153f736-16e5-6b4a-bb88-33dc279b6df2","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8db42285a38dd966a89990|d153f736-16e5-6b4a-bb88-33dc279b6df2","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":1250,"direction":"TOP","effectIn":true},"createdOn":1601059110944}
21181,"e-74":{"id":"e-74","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-75"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|dbbceee8-97dc-092b-55cd-5ed738f7516c","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|dbbceee8-97dc-092b-55cd-5ed738f7516c","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":1250,"direction":"TOP","effectIn":true},"createdOn":1603263295631},"e-118":{"id":"e-118","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-119"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|93e5d913-d870-afd5-5fb0-1e3fd139c271","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|93e5d913-d870-afd5-5fb0-1e3fd139c271","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264485085},"e-120":{"id":"e-120","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-121"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|9148e634-24d3-c327-120c-5df8766eec66","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|9148e634-24d3-c327-120c-5df8766eec66","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264487889},"e-122":{"id":"e-122","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-123"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|284c257d-b590-3b1d-28aa-555011aebc99","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|284c257d-b590-3b1d-28aa-555011aebc99","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":1000,"direction":"TOP","effectIn":true},"createdOn":1603264490025},"e-124":{"id":"e-124","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-125"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|5dd012d1-bb4e-882a-3bb5-9433c4bb6827","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|5dd012d1-bb4e-882a-3bb5-9433c4bb6827","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264547773},"e-126":{"id":"e-126","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-127"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|9a299750-69a4-b0fc-77e3-89bad430dab7","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|9a299750-69a4-b0fc-77e3-89bad430dab7","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264584983},"e-128":{"id":"e-128","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-129"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|67613253-f672-ef84-c4a5-22b260a4358a","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|67613253-f672-ef84-c4a5-22b260a4358a","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264587053},"e-130":{"id":"e-130","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-131"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|e09bcf2b-3125-b539-f651-a1a4b0f37f01","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|e09bcf2b-3125-b539-f651-a1a4b0f37f01","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264588442},"e-132":{"id":"e-132","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-133"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|23ac03aa-e758-93df-aff0-d1cf5335673f","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|23ac03aa-e758-93df-aff0-d1cf5335673f","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264589782},"e-134":{"id":"e-134","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-135"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|8de6c440-2ab1-98d5-3250-9eaed0dbbdb2","a
21181ppliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|8de6c440-2ab1-98d5-3250-9eaed0dbbdb2","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264778425},"e-136":{"id":"e-136","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-137"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|19ab831e-47a6-3d17-8378-db1e26ce3b8b","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|19ab831e-47a6-3d17-8378-db1e26ce3b8b","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264781970},"e-138":{"id":"e-138","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-139"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|b30036f6-03c1-b8d1-5b4a-f3bd97d68ed4","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|b30036f6-03c1-b8d1-5b4a-f3bd97d68ed4","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264783043},"e-140":{"id":"e-140","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-141"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|35749504-81c4-2070-7ca2-fb7411032d52","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|35749504-81c4-2070-7ca2-fb7411032d52","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264783938},"e-142":{"id":"e-142","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-143"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|0b4e5451-d2b7-70fd-e455-44b3a24db97f","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|0b4e5451-d2b7-70fd-e455-44b3a24db97f","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264784810},"e-144":{"id":"e-144","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-145"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|5f9cdce2-7bf9-cfd3-7b7a-90a6fdb33767","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|5f9cdce2-7bf9-cfd3-7b7a-90a6fdb33767","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264785634},"e-146":{"id":"e-146","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-147"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|62114dc9-54c0-3266-8eab-0c6e85fee5d5","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|62114dc9-54c0-3266-8eab-0c6e85fee5d5","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264786442},"e-148":{"id":"e-148","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-149"}}
21181,"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|ba8c0366-a87a-4198-112e-4b0e922b5278","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|ba8c0366-a87a-4198-112e-4b0e922b5278","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264787232},"e-150":{"id":"e-150","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-151"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|449e847b-6679-7b43-a100-54129e295a52","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|449e847b-6679-7b43-a100-54129e295a52","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264787999},"e-152":{"id":"e-152","name":"","animationType":"preset","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FLY_EFFECT","instant":false,"config":{"actionListId":"flyInTop","autoStopEventId":"e-153"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5f8fdb3ee6daa89407b3cd77|8fefff8b-99d6-9ef2-bfd9-80d1d2c8de2b","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5f8fdb3ee6daa89407b3cd77|8fefff8b-99d6-9ef2-bfd9-80d1d2c8de2b","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":4750,"direction":"TOP","effectIn":true},"createdOn":1603264788818},"e-155":{"id":"e-155","name":"","animationType":"custom","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-154"}},"mediaQueries":["main"],"target":{"selector":".walsh-button-circle","originalId":"6345ab75e9f6365601b223ac|67294640-98ee-618a-f2f3-233661fb7263","appliesTo":"CLASS"},"targets":[{"selector":".walsh-button-circle","originalId":"6345ab75e9f6365601b223ac|67294640-98ee-618a-f2f3-233661fb7263","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1656968267609},"e-156":{"id":"e-156","name":"","animationType":"preset","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-2","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-157"}},"mediaQueries":["main"],"target":{"selector":".walsh-link-block-orange","originalId":"634d8b6e827ec3e1f1cd8bca|7abca713-aeae-4ee9-429d-a2804bd42882","appliesTo":"CLASS"},"targets":[{"selector":".walsh-link-block-orange","originalId":"634d8b6e827ec3e1f1cd8bca|7abca713-aeae-4ee9-429d-a2804bd42882","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1666312770566},"e-157":{"id":"e-157","name":"","animationType":"preset","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-3","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-156"}},"mediaQueries":["main"],"target":{"selector":".walsh-link-block-orange","originalId":"634d8b6e827ec3e1f1cd8bca|7abca713-aeae-4ee9-429d-a2804bd42882","appliesTo":"CLASS"},"targets":[{"selector":".walsh-link-block-orange","originalId":"634d8b6e827ec3e1f1cd8bca|7abca713-aeae-4ee9-429d-a2804bd42882","appliesTo":"CLASS"}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1666312770566}},"actionLists":{"a":{"id":"a","title":"Button Circle - Hover Out","actionItemGroups":[{"actionItems":[{"id":"a-n","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"swingTo","duration":500,"target":{},"zValue":0,"xUnit":"DEG","yUnit":"DEG","zUnit":"deg"}},{"id":"a-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"inOutCirc","duration":500,"target":{},"xValue":0,"xUnit":"rem","yUnit":"PX","zUnit":"PX"}},{"id":"a-n-3","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"swingTo","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".walsh-button-circle","selectorGuids":["28b0eedd-8690-1185-13f6-fc68575d57e0"]},"xValue":1,"yValue":1,"locked":true}},{"id":"a-n-4","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"swingTo","duration":500,"target":{},"xValue":1,"yValue":1,"locked":true}},{"id":"a-n-5","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outQuart","duration":700,"target":{"useEventTarget":"CHILDREN","selector":".walsh-button-fill","selectorGuids":["28b0eedd-8690-1185-13f6-fc68575d57de"]},"xValue":0.1,"yValue":0.1,"locked":true}},{"id":"a-n-6","actionTypeId":"STYLE_OPACITY","config":{"delay":300,"easing":"","duration":150,"target":{"useEventTarget":"CHILDREN","selector":".walsh-button-fill","selectorGuids":["28b0eedd-8690-1185-13f6-fc68575d57de"]},"value":0,"unit":""}}]}],"useFirstGroupAsInitialState":false,"createdOn":1656968270180}
21181,"a-2":{"id":"a-2","title":"Button Default - Hover On","actionItemGroups":[{"actionItems":[{"id":"a-2-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"inOutExpo","duration":1250,"target":{"useEventTarget":"CHILDREN","selector":".walsh-button-hover-fill","selectorGuids":["f7b0ca52-1098-7e87-737b-2921174a77d6"]},"xValue":3.8,"yValue":3.8,"locked":true}},{"id":"a-2-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"inOutExpo","duration":1250,"target":{"useEventTarget":"CHILDREN","selector":".walsh-button-hover-fill","selectorGuids":["f7b0ca52-1098-7e87-737b-2921174a77d6"]},"xValue":180,"yValue":80,"xUnit":"%","yUnit":"%","zUnit":"PX"}},{"id":"a-2-n-3","actionTypeId":"TRANSFORM_MOVE","config":{"delay":300,"easing":"inOutExpo","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".walsh-icon-arrow-flip","selectorGuids":["f7b0ca52-1098-7e87-737b-2921174a77d7"]},"yValue":-100,"xUnit":"PX","yUnit":"%","zUnit":"PX"}},{"id":"a-2-n-4","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":300,"easing":"","duration":250,"target":{"useEventTarget":"CHILDREN","selector":".walsh-label-button","selectorGuids":["f7b0ca52-1098-7e87-737b-2921174a77d9"]},"globalSwatchId":"","rValue":255,"bValue":255,"gValue":255,"aValue":1}}]}],"useFirstGroupAsInitialState":false,"createdOn":1661474026364},"a-3":{"id":"a-3","title":"Button Default - Hover Out","actionItemGroups":[{"actionItems":[{"id":"a-3-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outQuart","duration":600,"target":{"useEventTarget":"CHILDREN","selector":".walsh-button-hover-fill","selectorGuids":["f7b0ca52-1098-7e87-737b-2921174a77d6"]},"xValue":1,"yValue":1,"locked":true}},{"id":"a-3-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outQuart","duration":600,"target":{"useEventTarget":"CHILDREN","selector":".walsh-button-hover-fill","selectorGuids":["f7b0ca52-1098-7e87-737b-2921174a77d6"]},"xValue":0,"yValue":0,"xUnit":"%","yUnit":"%","zUnit":"PX"}},{"id":"a-3-n-3","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":250,"easing":"outQuart","duration":300,"target":{"useEventTarget":"CHILDREN","selector":".walsh-label-button","selectorGuids":["f7b0ca52-1098-7e87-737b-2921174a77d9"]},"globalSwatchId":"","rValue":255,"bValue":255,"gValue":255,"aValue":1}},{"id":"a-3-n-4","actionTypeId":"TRANSFORM_MOVE","config":{"delay":300,"easing":"outQuart","duration":300,"target":{"useEventTarget":"CHILDREN","selector":".walsh-icon-arrow-flip","selectorGuids":["f7b0ca52-1098-7e87-737b-2921174a77d7"]},"yValue":0,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]}],"useFirstGroupAsInitialState":false,"createdOn":1661474026364},"flyInTop":{"id":"flyInTop","useFirstGroupAsInitialState":true,"actionItemGroups":[{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"duration":0,"delay":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":0}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"yValue":-800,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":0.25,"yValue":0.25}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":0,"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"inOutQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":1,"yValue":1}},{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":1}}]}]}},"site":{"mediaQueries":[{"key":"main","min":992,"max":10000},{"key":"medium","min":768,"max":991},{"key":"small","min":480,"max":767},{"key":"tiny","min":0,"max":479}]}}
21182);

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.