PageSourceSearch

https://sketchrunner.com/js/webflow.js

js sketchrunner.com collected 2026-10-03 21:37:12 UTC 571,778 bytes, 19,140 lines download raw bytes

vendor: 4,813 bytes, lines 1-153
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 = 120);
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) {
109
110/**
111 * Checks if `value` is classified as an `Array` object.
112 *
113 * @static
114 * @memberOf _
115 * @since 0.1.0
116 * @category Lang
117 * @param {*} value The value to check.
118 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
119 * @example
120 *
121 * _.isArray([1, 2, 3]);
122 * // => true
123 *
124 * _.isArray(document.body.children);
125 * // => false
126 *
127 * _.isArray('abc');
128 * // => false
129 *
130 * _.isArray(_.noop);
131 * // => false
132 */
133var isArray = Array.isArray;
134
135module.exports = isArray;
136
137
138/***/ }),
139/* 2 */
140/***/ (function(module, exports, __webpack_require__) {
141
142"use strict";
143
144
145var _interopRequireWildcard = __webpack_require__(14);
146
147Object.defineProperty(exports, "__esModule", {
148  value: true
149});
150var _exportNames = {
151  IX2EngineActionTypes: true,
152  IX2EngineConstants: true
153};
154exports.IX2EngineConstants = exports.IX2EngineActionTypes = void 0;
155
156var _triggerEvents = __webpack_require__(170);
157
158Object.keys(_triggerEvents).forEach(function (key) {
159  if (key === "default" || key === "__esModule") return;
160  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
161  Object.defineProperty(exports, key, {
162    enumerable: true,
163    get: function get() {
164      return _triggerEvents[key];
165    }
166  });
167});
168
169var _animationActions = __webpack_require__(171);
170
171Object.keys(_animationActions).forEach(function (key) {
172  if (key === "default" || key === "__esModule") return;
173  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
174  Object.defineProperty(exports, key, {
175    enumerable: true,
176    get: function get() {
177      return _animationActions[key];
178    }
179  });
180});
181
182var _triggerInteractions = __webpack_require__(172);
183
184Object.keys(_triggerInteractions).forEach(function (key) {
185  if (key === "default" || key === "__esModule") return;
186  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
187  Object.defineProperty(exports, key, {
188    enumerable: true,
189    get: function get() {
190      return _triggerInteractions[key];
191    }
192  });
193});
194
195var IX2EngineActionTypes = _interopRequireWildcard(__webpack_require__(173));
196
197exports.IX2EngineActionTypes = IX2EngineActionTypes;
198
199var IX2EngineConstants = _interopRequireWildcard(__webpack_require__(174));
200
201exports.IX2EngineConstants = IX2EngineConstants;
202
203/***/ }),
204/* 3 */
205/***/ (function(module, exports, __webpack_require__) {
206
207/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';
208var check = function (it) {
209  return it && it.Math == Math && it;
210};
211
212// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
213module.exports =
214  // eslint-disable-next-line no-undef
215  check(typeof globalThis == O && globalThis) ||
216  check(typeof window == O && window) ||
217  check(typeof self == O && self) ||
218  check(typeof global == O && global) ||
219  // eslint-disable-next-line no-new-func
220  Function('return this')();
221
222/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(22)))
223
224/***/ }),
225/* 4 */
226/***/ (function(module, exports, __webpack_require__) {
227
228var freeGlobal = __webpack_require__(89);
229
230/** Detect free variable `self`. */
231var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
232
233/** Used as a reference to the global object. */
234var root = freeGlobal || freeSelf || Function('return this')();
235
236module.exports = root;
237
238
239/***/ }),
240/* 5 */
241/***/ (function(module, exports) {
242
243/**
244 * Checks if `value` is the
245 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
246 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
247 *
248 * @static
249 * @memberOf _
250 * @since 0.1.0
251 * @category Lang
252 * @param {*} value The value to check.
253 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
254 * @example
255 *
256 * _.isObject({});
257 * // => true
258 *
259 * _.isObject([1, 2, 3]);
260 * // => true
261 *
262 * _.isObject(_.noop);
263 * // => true
264 *
265 * _.isObject(null);
266 * // => false
267 */
268function isObject(value) {
269  var type = typeof value;
270  return value != null && (type == 'object' || type == 'function');
271}
272
273module.exports = isObject;
274
275
276/***/ }),
277/* 6 */
278/***/ (function(module, exports, __webpack_require__) {
279
280"use strict";
281 // @wf-will-never-add-flow-to-this-file
282
283/* globals window, document, navigator, WEBFLOW_ENV_TEST */
284
285/* eslint-disable no-var */
286
287/**
288 * Webflow: Core site library
289 */
290
291var Webflow = {};
292var modules = {};
293var primary = [];
294var secondary = window.Webflow || [];
295var $ = window.jQuery;
296var $win = $(window);
297var $doc = $(document);
298var isFunction = $.isFunction;
299
300var _ = Webflow._ = __webpack_require__(123);
301
302var tram = Webflow.tram = __webpack_require__(64) && $.tram;
303var domready = false;
304var destroyed = false;
305tram.config.hideBackface = false;
306tram.config.keepInherited = true;
307/**
308 * Webflow.define - Define a named module
309 * @param  {string} name
310 * @param  {function} factory
311 * @param  {object} options
312 * @return {object}
313 */
314
315Webflow.define = function (name, factory, options) {
316  if (modules[name]) {
317    unbindModule(modules[name]);
318  }
319
320  var instance = modules[name] = factory($, _, options) || {};
321  bindModule(instance);
322  return instance;
323};
324/**
325 * Webflow.require - Require a named module
326 * @param  {string} name
327 * @return {object}
328 */
329
330
331Webflow.require = function (name) {
332  return modules[name];
333};
334
335function bindModule(module) {
336  // If running in Webflow app, subscribe to design/preview events
337  if (Webflow.env()) {
338    isFunction(module.design) && $win.on('__wf_design', module.design);
339    isFunction(module.preview) && $win.on('__wf_preview', module.preview);
340  } // Subscribe to front-end destroy event
341
342
343  isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy); // Look for ready method on module
344
345  if (module.ready && isFunction(module.ready)) {
346    addReady(module);
347  }
348}
349
350function addReady(module) {
351  // If domready has already happened, run ready method
352  if (domready) {
353    module.ready();
354    return;
355  } // Otherwise add ready method to the primary queue (only once)
356
357
358  if (_.contains(primary, module.ready)) {
359    return;
360  }
361
362  primary.push(module.ready);
363}
364
365function unbindModule(module) {
366  // Unsubscribe module from window events
367  isFunction(module.design) && $win.off('__wf_design', module.design);
368  isFunction(module.preview) && $win.off('__wf_preview', module.preview);
369  isFunction(module.destroy) && $win.off('__wf_destroy', module.destroy); // Remove ready method from primary queue
370
371  if (module.ready && isFunction(module.ready)) {
372    removeReady(module);
373  }
374}
375
376function removeReady(module) {
377  primary = _.filter(primary, function (readyFn) {
378    return readyFn !== module.ready;
379  });
380}
381/**
382 * Webflow.push - Add a ready handler into secondary queue
383 * @param {function} ready  Callback to invoke on domready
384 */
385
386
387Webflow.push = function (ready) {
388  // If domready has already happened, invoke handler
389  if (domready) {
390    isFunction(ready) && ready();
391    return;
392  } // Otherwise push into secondary queue
393
394
395  secondary.push(ready);
396};
397/**
398 * Webflow.env - Get the state of the Webflow app
399 * @param {string} mode [optional]
400 * @return {boolean}
401 */
402
403
404Webflow.env = function (mode) {
405  var designFlag = window.__wf_design;
406  var inApp = typeof designFlag !== 'undefined';
407
408  if (!mode) {
409    return inApp;
410  }
411
412  if (mode === 'design') {
413    return inApp && designFlag;
414  }
415
416  if (mode === 'preview') {
417    return inApp && !designFlag;
418  }
419
420  if (mode === 'slug') {
421    return inApp && window.__wf_slug;
422  }
423
424  if (mode === 'editor') {
425    return window.WebflowEditor;
426  }
427
428  if (mode === 'test') {
429    return  false || window.__wf_test;
430  }
431
432  if (mode === 'frame') {
433    return window !== window.top;
434  }
435}; // Feature detects + browser sniffs  ಠ_ಠ
436
437
438var userAgent = navigator.userAgent.toLowerCase();
439var touch = Webflow.env.touch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch;
440var chrome = Webflow.env.chrome = /chrome/.test(userAgent) && /Google/.test(navigator.vendor) && parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10);
441var ios = Webflow.env.ios = /(ipod|iphone|ipad)/.test(userAgent);
442Webflow.env.safari = /safari/.test(userAgent) && !chrome && !ios; // Maintain current touch target to prevent late clicks on touch devices
443
444var touchTarget; // Listen for both events to support touch/mouse hybrid devices
445
446touch && $doc.on('touchstart mousedown', function (evt) {
447  touchTarget = evt.target;
448});
449/**
450 * Webflow.validClick - validate click target against current touch target
451 * @param  {HTMLElement} clickTarget  Element being clicked
452 * @return {Boolean}  True if click target is valid (always true on non-touch)
453 */
454
455Webflow.validClick = touch ? function (clickTarget) {
456  return clickTarget === touchTarget || $.contains(clickTarget, touchTarget);
457} : function () {
458  return true;
459};
460/**
461 * Webflow.resize, Webflow.scroll - throttled event proxies
462 */
463
464var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
465var scrollEvents = 'scroll.webflow ' + resizeEvents;
466Webflow.resize = eventProxy($win, resizeEvents);
467Webflow.scroll = eventProxy($win, scrollEvents);
468Webflow.redraw = eventProxy(); // Create a proxy instance for throttled events
469
470function eventProxy(target, types) {
471  // Set up throttled method (using custom frame-based _.throttle)
472  var handlers = [];
473  var proxy = {};
474  proxy.up = _.throttle(function (evt) {
475    _.each(handlers, function (h) {
476      h(evt);
477    });
478  }); // Bind events to target
479
480  if (target && types) {
481    target.on(types, proxy.up);
482  }
483  /**
484   * Add an event handler
485   * @param  {function} handler
486   */
487
488
489  proxy.on = function (handler) {
490    if (typeof handler !== 'function') {
491      return;
492    }
493
494    if (_.contains(handlers, handler)) {
495      return;
496    }
497
498    handlers.push(handler);
499  };
500  /**
501   * Remove an event handler
502   * @param  {function} handler
503   */
504
505
506  proxy.off = function (handler) {
507    // If no arguments supplied, clear all handlers
508    if (!arguments.length) {
509      handlers = [];
510      return;
511    } // Otherwise, remove handler from the list
512
513
514    handlers = _.filter(handlers, function (h) {
515      return h !== handler;
516    });
517  };
518
519  return proxy;
520} // Webflow.location - Wrap window.location in api
521
522
523Webflow.location = function (url) {
524  window.location = url;
525};
526
527if (Webflow.env()) {
528  // Ignore redirects inside a Webflow design/edit environment
529  Webflow.location = function () {};
530} // Webflow.ready - Call primary and secondary handlers
531
532
533Webflow.ready = function () {
534  domready = true; // Restore modules after destroy
535
536  if (destroyed) {
537    restoreModules(); // Otherwise run primary ready methods
538  } else {
539    _.each(primary, callReady);
540  } // Run secondary ready methods
541
542
543  _.each(secondary, callReady); // Trigger resize
544
545
546  Webflow.resize.up();
547};
548
549function callReady(readyFn) {
550  isFunction(readyFn) && readyFn();
551}
552
553function restoreModules() {
554  destroyed = false;
555
556  _.each(modules, bindModule);
557}
558/**
559 * Webflow.load - Add a window load handler that will run even if load event has already happened
560 * @param  {function} handler
561 */
562
563
564var deferLoad;
565
566Webflow.load = function (handler) {
567  deferLoad.then(handler);
568};
569
570function bindLoad() {
571  // Reject any previous deferred (to support destroy)
572  if (deferLoad) {
573    deferLoad.reject();
574    $win.off('load', deferLoad.resolve);
575  } // Create deferred and bind window load event
576
577
578  deferLoad = new $.Deferred();
579  $win.on('load', deferLoad.resolve);
580} // Webflow.destroy - Trigger a destroy event for all modules
581
582
583Webflow.destroy = function (options) {
584  options = options || {};
585  destroyed = true;
586  $win.triggerHandler('__wf_destroy'); // Allow domready reset for tests
587
588  if (options.domready != null) {
589    domready = options.domready;
590  } // Unbind modules
591
592
593  _.each(modules, unbindModule); // Clear any proxy event handlers
594
595
596  Webflow.resize.off();
597  Webflow.scroll.off();
598  Webflow.redraw.off(); // Clear any queued ready methods
599
600  primary = [];
601  secondary = []; // If load event has not yet fired, replace the deferred
602
603  if (deferLoad.state() === 'pending') {
604    bindLoad();
605  }
606}; // Listen for domready
607
608
609$(Webflow.ready); // Listen for window.onload and resolve deferred
610
611bindLoad(); // Export commonjs module
612
613module.exports = window.Webflow = Webflow;
614
615/***/ }),
616/* 7 */
617/***/ (function(module, exports, __webpack_require__) {
618
619var baseMatches = __webpack_require__(177),
620    baseMatchesProperty = __webpack_require__(231),
621    identity = __webpack_require__(58),
622    isArray = __webpack_require__(1),
623    property = __webpack_require__(240);
624
625/**
626 * The base implementation of `_.iteratee`.
627 *
628 * @private
629 * @param {*} [value=_.identity] The value to convert to an iteratee.
630 * @returns {Function} Returns the iteratee.
631 */
632function baseIteratee(value) {
633  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
634  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
635  if (typeof value == 'function') {
636    return value;
637  }
638  if (value == null) {
639    return identity;
640  }
641  if (typeof value == 'object') {
642    return isArray(value)
643      ? baseMatchesProperty(value[0], value[1])
644      : baseMatches(value);
645  }
646  return property(value);
647}
648
649module.exports = baseIteratee;
650
651
652/***/ }),
653/* 8 */
654/***/ (function(module, exports, __webpack_require__) {
655
656var baseIsNative = __webpack_require__(189),
657    getValue = __webpack_require__(194);
658
659/**
660 * Gets the native function at `key` of `object`.
661 *
662 * @private
663 * @param {Object} object The object to query.
664 * @param {string} key The key of the method to get.
665 * @returns {*} Returns the function if it's native, else `undefined`.
666 */
667function getNative(object, key) {
668  var value = getValue(object, key);
669  return baseIsNative(value) ? value : undefined;
670}
671
672module.exports = getNative;
673
674
675/***/ }),
676/* 9 */
677/***/ (function(module, exports) {
678
679/**
680 * Checks if `value` is object-like. A value is object-like if it's not `null`
681 * and has a `typeof` result of "object".
682 *
683 * @static
684 * @memberOf _
685 * @since 4.0.0
686 * @category Lang
687 * @param {*} value The value to check.
688 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
689 * @example
690 *
691 * _.isObjectLike({});
692 * // => true
693 *
694 * _.isObjectLike([1, 2, 3]);
695 * // => true
696 *
697 * _.isObjectLike(_.noop);
698 * // => false
699 *
700 * _.isObjectLike(null);
701 * // => false
702 */
703function isObjectLike(value) {
704  return value != null && typeof value == 'object';
705}
706
707module.exports = isObjectLike;
708
709
710/***/ }),
711/* 10 */
712/***/ (function(module, exports, __webpack_require__) {
713
714"use strict";
715
716
717var _interopRequireWildcard = __webpack_require__(14);
718
719Object.defineProperty(exports, "__esModule", {
720  value: true
721});
722exports.IX2VanillaUtils = exports.IX2VanillaPlugins = exports.IX2ElementsReducer = exports.IX2EasingUtils = exports.IX2Easings = exp
722orts.IX2BrowserSupport = void 0;
723
724var IX2BrowserSupport = _interopRequireWildcard(__webpack_require__(43));
725
726exports.IX2BrowserSupport = IX2BrowserSupport;
727
728var IX2Easings = _interopRequireWildcard(__webpack_require__(106));
729
730exports.IX2Easings = IX2Easings;
731
732var IX2EasingUtils = _interopRequireWildcard(__webpack_require__(108));
733
734exports.IX2EasingUtils = IX2EasingUtils;
735
736var IX2ElementsReducer = _interopRequireWildcard(__webpack_require__(247));
737
738exports.IX2ElementsReducer = IX2ElementsReducer;
739
740var IX2VanillaPlugins = _interopRequireWildcard(__webpack_require__(110));
741
742exports.IX2VanillaPlugins = IX2VanillaPlugins;
743
744var IX2VanillaUtils = _interopRequireWildcard(__webpack_require__(249));
745
746exports.IX2VanillaUtils = IX2VanillaUtils;
747
748/***/ }),
749/* 11 */
750/***/ (function(module, exports, __webpack_require__) {
751
752var Symbol = __webpack_require__(20),
753    getRawTag = __webpack_require__(190),
754    objectToString = __webpack_require__(191);
755
756/** `Object#toString` result references. */
757var nullTag = '[object Null]',
758    undefinedTag = '[object Undefined]';
759
760/** Built-in value references. */
761var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
762
763/**
764 * The base implementation of `getTag` without fallbacks for buggy environments.
765 *
766 * @private
767 * @param {*} value The value to query.
768 * @returns {string} Returns the `toStringTag`.
769 */
770function baseGetTag(value) {
771  if (value == null) {
772    return value === undefined ? undefinedTag : nullTag;
773  }
774  return (symToStringTag && symToStringTag in Object(value))
775    ? getRawTag(value)
776    : objectToString(value);
777}
778
779module.exports = baseGetTag;
780
781
782/***/ }),
783/* 12 */
784/***/ (function(module, exports, __webpack_require__) {
785
786var isFunction = __webpack_require__(88),
787    isLength = __webpack_require__(51);
788
789/**
790 * Checks if `value` is array-like. A value is considered array-like if it's
791 * not a function and has a `value.length` that's an integer greater than or
792 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
793 *
794 * @static
795 * @memberOf _
796 * @since 4.0.0
797 * @category Lang
798 * @param {*} value The value to check.
799 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
800 * @example
801 *
802 * _.isArrayLike([1, 2, 3]);
803 * // => true
804 *
805 * _.isArrayLike(document.body.children);
806 * // => true
807 *
808 * _.isArrayLike('abc');
809 * // => true
810 *
811 * _.isArrayLike(_.noop);
812 * // => false
813 */
814function isArrayLike(value) {
815  return value != null && isLength(value.length) && !isFunction(value);
816}
817
818module.exports = isArrayLike;
819
820
821/***/ }),
822/* 13 */
823/***/ (function(module, exports) {
824
825function _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); }
826
827function _typeof(obj) {
828  if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
829    module.exports = _typeof = function _typeof(obj) {
830      return _typeof2(obj);
831    };
832  } else {
833    module.exports = _typeof = function _typeof(obj) {
834      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
835    };
836  }
837
838  return _typeof(obj);
839}
840
841module.exports = _typeof;
842
843/***/ }),
844/* 14 */
845/***/ (function(module, exports) {
846
847function _interopRequireWildcard(obj) {
848  if (obj && obj.__esModule) {
849    return obj;
850  } else {
851    var newObj = {};
852
853    if (obj != null) {
854      for (var key in obj) {
855        if (Object.prototype.hasOwnProperty.call(obj, key)) {
856          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
857
858          if (desc.get || desc.set) {
859            Object.defineProperty(newObj, key, desc);
860          } else {
861            newObj[key] = obj[key];
862          }
863        }
864      }
865    }
866
867    newObj["default"] = obj;
868    return newObj;
869  }
870}
871
872module.exports = _interopRequireWildcard;
873
874/***/ }),
875/* 15 */
876/***/ (function(module, exports, __webpack_require__) {
877
878var fails = __webpack_require__(16);
879
880// Thank's IE8 for his funny defineProperty
881module.exports = !fails(function () {
882  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
883});
884
885
886/***/ }),
887/* 16 */
888/***/ (function(module, exports) {
889
890module.exports = function (exec) {
891  try {
892    return !!exec();
893  } catch (error) {
894    return true;
895  }
896};
897
898
899/***/ }),
900/* 17 */
901/***/ (function(module, exports) {
902
903var hasOwnProperty = {}.hasOwnProperty;
904
905module.exports = function (it, key) {
906  return hasOwnProperty.call(it, key);
907};
908
909
910/***/ }),
911/* 18 */
912/***/ (function(module, exports, __webpack_require__) {
913
914var DESCRIPTORS = __webpack_require__(15);
915var definePropertyModule = __webpack_require__(37);
916var createPropertyDescriptor = __webpack_require__(67);
917
918module.exports = DESCRIPTORS ? function (object, key, value) {
919  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
920} : function (object, key, value) {
921  object[key] = value;
922  return object;
923};
924
925
926/***/ }),
927/* 19 */
928/***/ (function(module, exports, __webpack_require__) {
929
930"use strict";
931
932
933Object.defineProperty(exports, "__esModule", {
934  value: true
935});
936
937var _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; };
938
939exports.clone = clone;
940exports.addLast = addLast;
941exports.addFirst = addFirst;
942exports.removeLast = removeLast;
943exports.removeFirst = removeFirst;
944exports.insert = insert;
945exports.removeAt = removeAt;
946exports.replaceAt = replaceAt;
947exports.getIn = getIn;
948exports.set = set;
949exports.setIn = setIn;
950exports.update = update;
951exports.updateIn = updateIn;
952exports.merge = merge;
953exports.mergeDeep = mergeDeep;
954exports.mergeIn = mergeIn;
955exports.omit = omit;
956exports.addDefaults = addDefaults;
957
958
959/*!
960 * Timm
961 *
962 * Immutability helpers with fast reads and acceptable writes.
963 *
964 * @copyright Guillermo Grau Panea 2016
965 * @license MIT
966 */
967
968var INVALID_ARGS = 'INVALID_ARGS';
969
970// ===============================================
971// ### Helpers
972// ===============================================
973
974
975function throwStr(msg) {
976  throw new Error(msg);
977}
978
979function getKeysAndSymbols(obj) {
980  var keys = Object.keys(obj);
981  if (Object.getOwnPropertySymbols) {
982    return keys.concat(Object.getOwnPropertySymbols(obj));
983  }
984  return keys;
985}
986
987var hasOwnProperty = {}.hasOwnProperty;
988
989function clone(obj) {
990  if (Array.isArray(obj)) return obj.slice();
991  var keys = getKeysAndSymbols(obj);
992  var out = {};
993  for (var i = 0; i < keys.length; i++) {
994    var key = keys[i];
995    out[key] = obj[key];
996  }
997  return out;
998}
999
1000function doMerge(fAddDefaults, fDeep, first) {
1001  var out = first;
1002  !(out != null) && throwStr( false ? undefined : INVALID_ARGS);
1003  var fChanged = false;
1004
1005  for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
1006    rest[_key - 3] = arguments[_key];
1007  }
1008
1009  for (var idx = 0; idx < rest.length; idx++) {
1010    var obj = rest[idx];
1011    if (obj == null) continue;
1012    var keys = getKeysAndSymbols(obj);
1013    if (!keys.length) continue;
1014    for (var j = 0; j <= keys.length; j++) {
1015      var key = keys[j];
1016      if (fAddDefaults && out[key] !== undefined) continue;
1017      var nextVal = obj[key];
1018      if (fDeep && isObject(out[key]) && isObject(nextVal)) {
1019        nextVal = doMerge(fAddDefaults, fDeep, out[key], nextVal);
1020      }
1021      if (nextVal === undefined || nextVal === out[key]) continue;
1022      if (!fChanged) {
1023        fChanged = true;
1024        out = clone(out);
1025      }
1026      out[key] = nextVal;
1027    }
1028  }
1029  return out;
1030}
1031
1032function isObject(o) {
1033  var type = typeof o === 'undefined' ? 'undefined' : _typeof(o);
1034  return o != null && (type === 'object' || type === 'function');
1035}
1036
1037// _deepFreeze = (obj) ->
1038//   Object.freeze obj
1039//   for key in Object.getOwnPropertyNames obj
1040//     val = obj[key]
1041//     if isObject(val) and not Object.isFrozen val
1042//       _deepFreeze val
1043//   obj
1044
1045// ===============================================
1046// -- ### Arrays
1047// ===============================================
1048
1049// -- #### addLast()
1050// -- Returns a new array with an appended item or items.
1051// --
1052// -- Usage: `addLast<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1053// --
1054// -- ```js
1055// -- arr = ['a', 'b']
1056// -- arr2 = addLast(arr, 'c')
1057// -- // ['a', 'b', 'c']
1058// -- arr2 === arr
1059// -- // false
1060// -- arr3 = addLast(arr, ['c', 'd'])
1061// -- // ['a', 'b', 'c', 'd']
1062// -- ```
1063// `array.concat(val)` also handles the scalar case,
1064// but is apparently very slow
1065function addLast(array, val) {
1066  if (Array.isArray(val)) return array.concat(val);
1067  return array.concat([val]);
1068}
1069
1070// -- #### addFirst()
1071// -- Returns a new array with a prepended item or items.
1072// --
1073// -- Usage: `addFirst<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1074// --
1075// -- ```js
1076// -- arr = ['a', 'b']
1077// -- arr2 = addFirst(arr, 'c')
1078// -- // ['c', 'a', 'b']
1079// -- arr2 === arr
1080// -- // false
1081// -- arr3 = addFirst(arr, ['c', 'd'])
1082// -- // ['c', 'd', 'a', 'b']
1083// -- ```
1084function addFirst(array, val) {
1085  if (Array.isArray(val)) return val.concat(array);
1086  return [val].concat(array);
1087}
1088
1089// -- #### removeLast()
1090// -- Returns a new array removing the last item.
1091// --
1092// -- Usage: `removeLast<T>(array: Array<T>): Array<T>`
1093// --
1094// -- ```js
1095// -- arr = ['a', 'b']
1096// -- arr2 = removeLast(arr)
1097// -- // ['a']
1098// -- arr2 === arr
1099// -- // false
1100// --
1101// -- // The same array is returned if there are no changes:
1102// -- arr3 = []
1103// -- removeLast(arr3) === arr3
1104// -- // true
1105// -- ```
1106function removeLast(array) {
1107  if (!array.length) return array;
1108  return array.slice(0, array.length - 1);
1109}
1110
1111// -- #### removeFirst()
1112// -- Returns a new array removing the first item.
1113// --
1114// -- Usage: `removeFirst<T>(array: Array<T>): Array<T>`
1115// --
1116// -- ```js
1117// -- arr = ['a', 'b']
1118// -- arr2 = removeFirst(arr)
1119// -- // ['b']
1120// -- arr2 === arr
1121// -- // false
1122// --
1123// -- // The same array is returned if there are no changes:
1124// -- arr3 = []
1125// -- removeFirst(arr3) === arr3
1126// -- // true
1127// -- ```
1128function removeFirst(array) {
1129  if (!array.length) return array;
1130  return array.slice(1);
1131}
1132
1133// -- #### insert()
1134// -- Returns a new array obtained by inserting an item or items
1135// -- at a specified index.
1136// --
1137// -- Usage: `insert<T>(array: Array<T>, idx: number, val: Array<T>|T): Array<T>`
1138// --
1139// -- ```js
1140// -- arr = ['a', 'b', 'c']
1141// -- arr2 = insert(arr, 1, 'd')
1142// -- // ['a', 'd', 'b', 'c']
1143// -- arr2 === arr
1144// -- // false
1145// -- insert(arr, 1, ['d', 'e'])
1146// -- // ['a', 'd', 'e', 'b', 'c']
1147// -- ```
1148function insert(array, idx, val) {
1149  return array.slice(0, idx).concat(Array.isArray(val) ? val : [val]).concat(array.slice(idx));
1150}
1151
1152// -- #### removeAt()
1153// -- Returns a new array obtained by removing an item at
1154// -- a specified index.
1155// --
1156// -- Usage: `removeAt<T>(array: Array<T>, idx: number): Array<T>`
1157// --
1158// -- ```js
1159// -- arr = ['a', 'b', 'c']
1160// -- arr2 = removeAt(arr, 1)
1161// -- // ['a', 'c']
1162// -- arr2 === arr
1163// -- // false
1164// --
1165// -- // The same array is returned if there are no changes:
1166// -- removeAt(arr, 4) === arr
1167// -- // true
1168// -- ```
1169function removeAt(array, idx) {
1170  if (idx >= array.length || idx < 0) return array;
1171  return array.slice(0, idx).concat(array.slice(idx + 1));
1172}
1173
1174// -- #### replaceAt()
1175// -- Returns a new array obtained by replacing an item at
1176// -- a specified index. If the provided item is the same as
1177// -- (*referentially equal to*) the previous item at that position,
1178// -- the original array is returned.
1179// --
1180// -- Usage: `replaceAt<T>(array: Array<T>, idx: number, newItem: T): Array<T>`
1181// --
1182// -- ```js
1183// -- arr = ['a', 'b', 'c']
1184// -- arr2 = replaceAt(arr, 1, 'd')
1185// -- // ['a', 'd', 'c']
1186// -- arr2 === arr
1187// -- // false
1188// --
1189// -- // The same object is returned if there are no changes:
1190// -- replaceAt(arr, 1, 'b') === arr
1191// -- // true
1192// -- ```
1193function replaceAt(array, idx, newItem) {
1194  if (array[idx] === newItem) return array;
1195  var len = array.length;
1196  var result = Array(len);
1197  for (var i = 0; i < len; i++) {
1198    result[i] = array[i];
1199  }
1200  result[idx] = newItem;
1201  return result;
1202}
1203
1204// ===============================================
1205// -- ### Collections (objects and arrays)
1206// ===============================================
1207// -- The following types are used throughout this section
1208// -- ```js
1209// -- type ArrayOrObject = Array<any>|Object;
1210// -- type Key = number|string;
1211// -- ```
1212
1213// -- #### getIn()
1214// -- Returns a value from an object at a given path. Works with
1215// -- nested arrays and objects. If the path does not exist, it returns
1216// -- `undefined`.
1217// --
1218// -- Usage: `getIn(obj: ?ArrayOrObject, path: Array<Key>): any`
1219// --
1220// -- ```js
1221// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: ['a', 'b', 'c'] }
1222// -- getIn(obj, ['d', 'd1'])
1223// -- // 3
1224// -- getIn(obj, ['e', 1])
1225// -- // 'b'
1226// -- ```
1227function getIn(obj, path) {
1228  !Array.isArray(path) && throwStr( false ? undefined : INVALID_ARGS);
1229  if (obj == null) return undefined;
1230  var ptr = obj;
1231  for (var i = 0; i < path.length; i++) {
1232    var key = path[i];
1233    ptr = ptr != null ? ptr[key] : undefined;
1234    if (ptr === undefined) return ptr;
1235  }
1236  return ptr;
1237}
1238
1239// -- #### set()
1240// -- Returns a new object with a modified attribute.
1241// -- If the provided value is the same as (*referentially equal to*)
1242// -- the previous value, the original object is returned.
1243// --
1244// -- Usage: `set<T>(obj: ?T, key: Key, val: any): T`
1245// --
1246// -- ```js
1247// -- obj = { a: 1, b: 2, c: 3 }
1248// -- obj2 = set(obj, 'b', 5)
1249// -- // { a: 1, b: 5, c: 3 }
1250// -- obj2 === obj
1251// -- // false
1252// --
1253// -- // The same object is returned if there are no changes:
1254// -- set(obj, 'b', 2) === obj
1255// -- // true
1256// -- ```
1257function set(obj, key, val) {
1258  var fallback = typeof key === 'number' ? [] : {};
1259  var finalObj = obj == null ? fallback : obj;
1260  if (finalObj[key] === val) return finalObj;
1261  var obj2 = clone(finalObj);
1262  obj2[key] = val;
1263  return obj2;
1264}
1265
1266// -- #### setIn()
1267// -- Returns a new object with a modified **nested** attribute.
1268// --
1269// -- Notes:
1270// --
1271// -- * If the provided value is the same as (*referentially equal to*)
1272// -- the previous value, the original object is returned.
1273// -- * If the path does not exist, it will be created before setting
1274// -- the new value.
1275// --
1276// -- Usage: `setIn<T: ArrayOrObject>(obj: T, path: Array<Key>, val: any): T`
1277// --
1278// -- ```js
1279// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1280// -- obj2 = setIn(obj, ['d', 'd1'], 4)
1281// -- // { a: 1, b: 2, d: { d1: 4, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1282// -- obj2 === obj
1283// -- // false
1284// -- obj2.d === obj.d
1285// -- // false
1286// -- obj2.e === obj.e
1287// -- // true
1288// --
1289// -- // The same object is returned if there are no changes:
1290// -- obj3 = setIn(obj, ['d', 'd1'], 3)
1291// -- // { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1292// -- obj3 === obj
1293// -- // true
1294// -- obj3.d === obj.d
1295// -- // true
1296// -- obj3.e === obj.e
1297// -- // true
1298// --
1299// -- // ... unknown paths create intermediate keys. Numeric segments are treated as array indices:
1300// -- setIn({ a: 3 }, ['unknown', 0, 'path'], 4)
1301// -- // { a: 3, unknown: [{ path: 4 }] }
1302// -- ```
1303function doSetIn(obj, path, val, idx) {
1304  var newValue = void 0;
1305  var key = path[idx];
1306  if (idx === path.length - 1) {
1307    newValue = val;
1308  } else {
1309    var nestedObj = isObject(obj) && isObject(obj[key]) ? obj[key] : typeof path[idx + 1] === 'number' ? [] : {};
1310    newValue = doSetIn(nestedObj, path, val, idx + 1);
1311  }
1312  return set(obj, key, newValue);
1313}
1314
1315function setIn(obj, path, val) {
1316  if (!path.length) return val;
1317  return doSetIn(obj, path, val, 0);
1318}
1319
1320// -- #### update()
1321// -- Returns a new object with a modified attribute,
1322// -- calculated via a user-provided callback based on the current value.
1323// -- If the calculated value is the same as (*referentially equal to*)
1324// -- the previous value, the original object is returned.
1325// --
1326// -- Usage: `update<T: ArrayOrObject>(obj: T, key: Key,
1327// -- fnUpdate: (prevValue: any) => any): T`
1328// --
1329// -- ```js
1330// -- obj = { a: 1, b: 2, c: 3 }
1331// -- obj2 = update(obj, 'b', (val) => val + 1)
1332// -- // { a: 1, b: 3, c: 3 }
1333// -- obj2 === obj
1334// -- // false
1335// --
1336// -- // The same object is returned if there are no changes:
1337// -- update(obj, 'b', (val) => val) === obj
1338// -- // true
1339// -- ```
1340function update(obj, key, fnUpdate) {
1341  var prevVal = obj == null ? undefined : obj[key];
1342  var nextVal = fnUpdate(prevVal);
1343  return set(obj, key, nextVal);
1344}
1345
1346// -- #### updateIn()
1347// -- Returns a new object with a modified **nested** attribute,
1348// -- calculated via a user-provided callback based on the current value.
1349// -- If the calculated value is the same as (*referentially equal to*)
1350// -- the previous value, the original object is returned.
1351// --
1352// -- Usage: `updateIn<T: ArrayOrObject>(obj: T, path: Array<Key>,
1353// -- fnUpdate: (prevValue: any) => any): T`
1354// --
1355// -- ```js
1356// -- obj = { a: 1, d: { d1: 3, d2: 4 } }
1357// -- obj2 = updateIn(obj, ['d', 'd1'], (val) => val + 1)
1358// -- // { a: 1, d: { d1: 4, d2: 4 } }
1359// -- obj2 === obj
1360// -- // false
1361// --
1362// -- // The same object is returned if there are no changes:
1363// -- obj3 = updateIn(obj, ['d', 'd1'], (val) => val)
1364// -- // { a: 1, d: { d1: 3, d2: 4 } }
1365// -- obj3 === obj
1366// -- // true
1367// -- ```
1368function updateIn(obj, path, fnUpdate) {
1369  var prevVal = getIn(obj, path);
1370  var nextVal = fnUpdate(prevVal);
1371  return setIn(obj, path, nextVal);
1372}
1373
1374// -- #### merge()
1375// -- Returns a new object built as follows: the overlapping keys from the
1376// -- second one overwrite the corresponding entries from the first one.
1377// -- Similar to `Object.assign()`, but immutable.
1378// --
1379// -- Usage:
1380// --
1381// -- * `merge(obj1: Object, obj2: ?Object): Object`
1382// -- * `merge(obj1: Object, ...objects: Array<?Object>): Object`
1383// --
1384// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1385// -- new to* `obj1`, i.e. if either of the following
1386// -- conditions are true:
1387// --
1388// -- * `obj2` is `null` or `undefined`
1389// -- * `obj2` is an object, but it is empty
1390// -- * All attributes of `obj2` are `undefined`
1391// -- * All attributes of `obj2` are referentially equal to the
1392// --   corresponding attributes of `obj1`
1393// --
1394// -- Note that `undefined` attributes in `obj2` do not modify the
1395// -- corresponding attributes in `obj1`.
1396// --
1397// -- ```js
1398// -- obj1 = { a: 1, b: 2, c: 3 }
1399// -- obj2 = { c: 4, d: 5 }
1400// -- obj3 = merge(obj1, obj2)
1401// -- // { a: 1, b: 2, c: 4, d: 5 }
1402// -- obj3 === obj1
1403// -- // false
1404// --
1405// -- // The same object is returned if there are no changes:
1406// -- merge(obj1, { c: 3 }) === obj1
1407// -- // true
1408// -- ```
1409function merge(a, b, c, d, e, f) {
1410  for (var _len2 = arguments.length, rest = Array(_len2 > 6 ? _len2 - 6 : 0), _key2 = 6; _key2 < _len2; _key2++) {
1411    rest[_key2 - 6] = arguments[_key2];
1412  }
1413
1414  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);
1415}
1416
1417// -- #### mergeDeep()
1418// -- Returns a new object built as follows: the overlapping keys from the
1419// -- second one overwrite the corresponding entries from the first one.
1420// -- If both the first and second entries are objects they are merged recursively.
1421// -- Similar to `Object.assign()`, but immutable, and deeply merging.
1422// --
1423// -- Usage:
1424// --
1425// -- * `mergeDeep(obj1: Object, obj2: ?Object): Object`
1426// -- * `mergeDeep(obj1: Object, ...objects: Array<?Object>): Object`
1427// --
1428// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1429// -- new to* `obj1`, i.e. if either of the following
1430// -- conditions are true:
1431// --
1432// -- * `obj2` is `null` or `undefined`
1433// -- * `obj2` is an object, but it is empty
1434// -- * All attributes of `obj2` are `undefined`
1435// -- * All attributes of `obj2` are referentially equal to the
1436// --   corresponding attributes of `obj1`
1437// --
1438// -- Note that `undefined` attributes in `obj2` do not modify the
1439// -- corresponding attributes in `obj1`.
1440// --
1441// -- ```js
1442// -- obj1 = { a: 1, b: 2, c: { a: 1 } }
1443// -- obj2 = { b: 3, c: { b: 2 } }
1444// -- obj3 = mergeDeep(obj1, obj2)
1445// -- // { a: 1, b: 3, c: { a: 1, b: 2 }  }
1446// -- obj3 === obj1
1447// -- // false
1448// --
1449// -- // The same object is returned if there are no changes:
1450// -- mergeDeep(obj1, { c: { a: 1 } }) === obj1
1451// -- // true
1452// -- ```
1453function mergeDeep(a, b, c, d, e, f) {
1454  for (var _len3 = arguments.length, rest = Array(_len3 > 6 ? _len3 - 6 : 0), _key3 = 6; _key3 < _len3; _key3++) {
1455    rest[_key3 - 6] = arguments[_key3];
1456  }
1457
1458  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);
1459}
1460
1461// -- #### mergeIn()
1462// -- Similar to `merge()`, but merging the value at a given nested path.
1463// -- Note that the returned type is the same as that of the first argument.
1464// --
1465// -- Usage:
1466// --
1467// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, obj2: ?Object): T`
1468// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>,
1469// -- ...objects: Array<?Object>): T`
1470// --
1471// -- ```js
1472// -- obj1 = { a: 1, d: { b: { d1: 3, d2: 4 } } }
1473// -- obj2 = { d3: 5 }
1474// -- obj3 = mergeIn(obj1, ['d', 'b'], obj2)
1475// -- // { a: 1, d: { b: { d1: 3, d2: 4, d3: 5 } } }
1476// -- obj3 === obj1
1477// -- // false
1478// --
1479// -- // The same object is returned if there are no changes:
1480// -- mergeIn(obj1, ['d', 'b'], { d2: 4 }) === obj1
1481// -- // true
1482// -- ```
1483function mergeIn(a, path, b, c, d, e, f) {
1484  var prevVal = getIn(a, path);
1485  if (prevVal == null) prevVal = {};
1486  var nextVal = void 0;
1487
1488  for (var _len4 = arguments.length, rest = Array(_len4 > 7 ? _len4 - 7 : 0), _key4 = 7; _key4 < _len4; _key4++) {
1489    rest[_key4 - 7] = arguments[_key4];
1490  }
1491
1492  if (rest.length) {
1493    nextVal = doMerge.call.apply(doMerge, [null, false, false, prevVal, b, c, d, e, f].concat(rest));
1494  } else {
1495    nextVal = doMerge(false, false, prevVal, b, c, d, e, f);
1496  }
1497  return setIn(a, path, nextVal);
1498}
1499
1500// -- #### omit()
1501// -- Returns an object excluding one or several attributes.
1502// --
1503// -- Usage: `omit(obj: Object, attrs: Array<string>|string): Object`
1504//
1505// -- ```js
1506// -- obj = { a: 1, b: 2, c: 3, d: 4 }
1507// -- omit(obj, 'a')
1508// -- // { b: 2, c: 3, d: 4 }
1509// -- omit(obj, ['b', 'c'])
1510// -- // { a: 1, d: 4 }
1511// --
1512// -- // The same object is returned if there are no changes:
1513// -- omit(obj, 'z') === obj1
1514// -- // true
1515// -- ```
1516function omit(obj, attrs) {
1517  var omitList = Array.isArray(attrs) ? attrs : [attrs];
1518  var fDoSomething = false;
1519  for (var i = 0; i < omitList.length; i++) {
1520    if (hasOwnProperty.call(obj, omitList[i])) {
1521      fDoSomething = true;
1522      break;
1523    }
1524  }
1525  if (!fDoSomething) return obj;
1526  var out = {};
1527  var keys = getKeysAndSymbols(obj);
1528  for (var _i = 0; _i < keys.length; _i++) {
1529    var key = keys[_i];
1530    if (omitList.indexOf(key) >= 0) continue;
1531    out[key] = obj[key];
1532  }
1533  return out;
1534}
1535
1536// -- #### addDefaults()
1537// -- Returns a new object built as follows: `undefined` keys in the first one
1538// -- are filled in with the corresponding values from the second one
1539// -- (even if they are `null`).
1540// --
1541// -- Usage:
1542// --
1543// -- * `addDefaults(obj: Object, defaults: Object): Object`
1544// -- * `addDefaults(obj: Object, ...defaultObjects: Array<?Object>): Object`
1545// --
1546// -- ```js
1547// -- obj1 = { a: 1, b: 2, c: 3 }
1548// -- obj2 = { c: 4, d: 5, e: null }
1549// -- obj3 = addDefaults(obj1, obj2)
1550// -- // { a: 1, b: 2, c: 3, d: 5, e: null }
1551// -- obj3 === obj1
1552// -- // false
1553// --
1554// -- // The same object is returned if there are no changes:
1555// -- addDefaults(obj1, { c: 4 }) === obj1
1556// -- // true
1557// -- ```
1558function addDefaults(a, b, c, d, e, f) {
1559  for (var _len5 = arguments.length, rest = Array(_len5 > 6 ? _len5 - 6 : 0), _key5 = 6; _key5 < _len5; _key5++) {
1560    rest[_key5 - 6] = arguments[_key5];
1561  }
1562
1563  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);
1564}
1565
1566// ===============================================
1567// ### Public API
1568// ===============================================
1569var timm = {
1570  clone: clone,
1571  addLast: addLast,
1572  addFirst: addFirst,
1573  removeLast: removeLast,
1574  removeFirst: removeFirst,
1575  insert: insert,
1576  removeAt: removeAt,
1577  replaceAt: replaceAt,
1578
1579  getIn: getIn,
1580  // eslint-disable-next-line object-shorthand
1581  set: set, // so that flow doesn't complain
1582  setIn: setIn,
1583  update: update,
1584  updateIn: updateIn,
1585  merge: merge,
1586  mergeDeep: mergeDeep,
1587  mergeIn: mergeIn,
1588  omit: omit,
1589  addDefaults: addDefaults
1590};
1591
1592exports.default = timm;
1593
1594
1595/***/ }),
1596/* 20 */
1597/***/ (function(module, exports, __webpack_require__) {
1598
1599var root = __webpack_require__(4);
1600
1601/** Built-in value references. */
1602var Symbol = root.Symbol;
1603
1604module.exports = Symbol;
1605
1606
1607/***/ }),
1608/* 21 */
1609/***/ (function(module, exports, __webpack_require__) {
1610
1611var isSymbol = __webpack_require__(35);
1612
1613/** Used as references for various `Number` constants. */
1614var INFINITY = 1 / 0;
1615
1616/**
1617 * Converts `value` to a string key if it's not a string or symbol.
1618 *
1619 * @private
1620 * @param {*} value The value to inspect.
1621 * @returns {string|symbol} Returns the key.
1622 */
1623function toKey(value) {
1624  if (typeof value == 'string' || isSymbol(value)) {
1625    return value;
1626  }
1627  var result = (value + '');
1628  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
1629}
1630
1631module.exports = toKey;
1632
1633
1634/***/ }),
1635/* 22 */
1636/***/ (function(module, exports) {
1637
1638var g;
1639
1640// This works in non-strict mode
1641g = (function() {
1642	return this;
1643})();
1644
1645try {
1646	// This works if eval is allowed (see CSP)
1647	g = g || new Function("return this")();
1648} catch (e) {
1649	// This works if the window reference is available
1650	if (typeof window === "object") g = window;
1651}
1652
1653// g can still be undefined, but nothing to do about it...
1654// We return undefined, instead of nothing here, so it's
1655// easier to handle this case. if(!global) { ...}
1656
1657module.exports = g;
1658
1659
1660/***/ }),
1661/* 23 */
1662/***/ (function(module, exports) {
1663
1664module.exports = function (it) {
1665  return typeof it === 'object' ? it !== null : typeof it === 'function';
1666};
1667
1668
1669/***/ }),
1670/* 24 */
1671/***/ (function(module, exports, __webpack_require__) {
1672
1673var isObject = __webpack_require__(23);
1674
1675module.exports = function (it) {
1676  if (!isObject(it)) {
1677    throw TypeError(String(it) + ' is not an object');
1678  } return it;
1679};
1680
1681
1682/***/ }),
1683/* 25 */
1684/***/ (function(module, exports, __webpack_require__) {
1685
1686var global = __webpack_require__(3);
1687var setGlobal = __webpack_require__(38);
1688var IS_PURE = __webpack_require__(136);
1689
1690var SHARED = '__core-js_shared__';
1691var store = global[SHARED] || setGlobal(SHARED, {});
1692
1693(module.exports = function (key, value) {
1694  return store[key] || (store[key] = value !== undefined ? value : {});
1695})('versions', []).push({
1696  version: '3.1.3',
1697  mode: IS_PURE ? 'pure' : 'global',
1698  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
1699});
1700
1701
1702/***/ }),
1703/* 26 */
1704/***/ (function(module, exports) {
1705
1706function _defineProperty(obj, key, value) {
1707  if (key in obj) {
1708    Object.defineProperty(obj, key, {
1709      value: value,
1710      enumerable: true,
1711      configurable: true,
1712      writable: true
1713    });
1714  } else {
1715    obj[key] = value;
1716  }
1717
1718  return obj;
1719}
1720
1721module.exports = _defineProperty;
1722
1723/***/ }),
1724/* 27 */
1725/***/ (function(module, exports) {
1726
1727function _extends() {
1728  module.exports = _extends = Object.assign || function (target) {
1729    for (var i = 1; i < arguments.length; i++) {
1730      var source = arguments[i];
1731
1732      for (var key in source) {
1733        if (Object.prototype.hasOwnProperty.call(source, key)) {
1734          target[key] = source[key];
1735        }
1736      }
1737    }
1738
1739    return target;
1740  };
1741
1742  return _extends.apply(this, arguments);
1743}
1744
1745module.exports = _extends;
1746
1747/***/ }),
1748/* 28 */
1749/***/ (function(module, exports, __webpack_require__) {
1750
1751var listCacheClear = __webpack_require__(179),
1752    listCacheDelete = __webpack_require__(180),
1753    listCacheGet = __webpack_require__(181),
1754    listCacheHas = __webpack_require__(182),
1755    listCacheSet = __webpack_require__(183);
1756
1757/**
1758 * Creates an list cache object.
1759 *
1760 * @private
1761 * @constructor
1762 * @param {Array} [entries] The key-value pairs to cache.
1763 */
1764function ListCache(entries) {
1765  var index = -1,
1766      length = entries == null ? 0 : entries.length;
1767
1768  this.clear();
1769  while (++index < length) {
1770    var entry = entries[index];
1771    this.set(entry[0], entry[1]);
1772  }
1773}
1774
1775// Add methods to `ListCache`.
1776ListCache.prototype.clear = listCacheClear;
1777ListCache.prototype['delete'] = listCacheDelete;
1778ListCache.prototype.get = listCacheGet;
1779ListCache.prototype.has = listCacheHas;
1780ListCache.prototype.set = listCacheSet;
1781
1782module.exports = ListCache;
1783
1784
1785/***/ }),
1786/* 29 */
1787/***/ (function(module, exports, __webpack_require__) {
1788
1789var eq = __webpack_require__(44);
1790
1791/**
1792 * Gets the index at which the `key` is found in `array` of key-value pairs.
1793 *
1794 * @private
1795 * @param {Array} array The array to inspect.
1796 * @param {*} key The key to search for.
1797 * @returns {number} Returns the index of the matched value, else `-1`.
1798 */
1799function assocIndexOf(array, key) {
1800  var length = array.length;
1801  while (length--) {
1802    if (eq(array[length][0], key)) {
1803      return length;
1804    }
1805  }
1806  return -1;
1807}
1808
1809module.exports = assocIndexOf;
1810
1811
1812/***/ }),
1813/* 30 */
1814/***/ (function(module, exports, __webpack_require__) {
1815
1816var getNative = __webpack_require__(8);
1817
1818/* Built-in method references that are verified to be native. */
1819var nativeCreate = getNative(Object, 'create');
1820
1821module.exports = nativeCreate;
1822
1823
1824/***/ }),
1825/* 31 */
1826/***/ (function(module, exports, __webpack_require__) {
1827
1828var isKeyable = __webpack_require__(203);
1829
1830/**
1831 * Gets the data for `map`.
1832 *
1833 * @private
1834 * @param {Object} map The map to query.
1835 * @param {string} key The reference key.
1836 * @returns {*} Returns the map data.
1837 */
1838function getMapData(map, key) {
1839  var data = map.__data__;
vendor: 5,067 bytes, lines 1840-2051
1840  return isKeyable(key)
1841    ? data[typeof key == 'string' ? 'string' : 'hash']
1842    : data.map;
1843}
1844
1845module.exports = getMapData;
1846
1847
1848/***/ }),
1849/* 32 */
1850/***/ (function(module, exports, __webpack_require__) {
1851
1852var arrayLikeKeys = __webpack_require__(96),
1853    baseKeys = __webpack_require__(52),
1854    isArrayLike = __webpack_require__(12);
1855
1856/**
1857 * Creates an array of the own enumerable property names of `object`.
1858 *
1859 * **Note:** Non-object values are coerced to objects. See the
1860 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1861 * for more details.
1862 *
1863 * @static
1864 * @since 0.1.0
1865 * @memberOf _
1866 * @category Object
1867 * @param {Object} object The object to query.
1868 * @returns {Array} Returns the array of property names.
1869 * @example
1870 *
1871 * function Foo() {
1872 *   this.a = 1;
1873 *   this.b = 2;
1874 * }
1875 *
1876 * Foo.prototype.c = 3;
1877 *
1878 * _.keys(new Foo);
1879 * // => ['a', 'b'] (iteration order is not guaranteed)
1880 *
1881 * _.keys('hi');
1882 * // => ['0', '1']
1883 */
1884function keys(object) {
1885  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
1886}
1887
1888module.exports = keys;
1889
1890
1891/***/ }),
1892/* 33 */
1893/***/ (function(module, exports, __webpack_require__) {
1894
1895var baseIsArguments = __webpack_require__(221),
1896    isObjectLike = __webpack_require__(9);
1897
1898/** Used for built-in method references. */
1899var objectProto = Object.prototype;
1900
1901/** Used to check objects for own properties. */
1902var hasOwnProperty = objectProto.hasOwnProperty;
1903
1904/** Built-in value references. */
1905var propertyIsEnumerable = objectProto.propertyIsEnumerable;
1906
1907/**
1908 * Checks if `value` is likely an `arguments` object.
1909 *
1910 * @static
1911 * @memberOf _
1912 * @since 0.1.0
1913 * @category Lang
1914 * @param {*} value The value to check.
1915 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
1916 *  else `false`.
1917 * @example
1918 *
1919 * _.isArguments(function() { return arguments; }());
1920 * // => true
1921 *
1922 * _.isArguments([1, 2, 3]);
1923 * // => false
1924 */
1925var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
1926  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
1927    !propertyIsEnumerable.call(value, 'callee');
1928};
1929
1930module.exports = isArguments;
1931
1932
1933/***/ }),
1934/* 34 */
1935/***/ (function(module, exports, __webpack_require__) {
1936
1937var isArray = __webpack_require__(1),
1938    isKey = __webpack_require__(57),
1939    stringToPath = __webpack_require__(232),
1940    toString = __webpack_require__(235);
1941
1942/**
1943 * Casts `value` to a path array if it's not one.
1944 *
1945 * @private
1946 * @param {*} value The value to inspect.
1947 * @param {Object} [object] The object to query keys on.
1948 * @returns {Array} Returns the cast property path array.
1949 */
1950function castPath(value, object) {
1951  if (isArray(value)) {
1952    return value;
1953  }
1954  return isKey(value, object) ? [value] : stringToPath(toString(value));
1955}
1956
1957module.exports = castPath;
1958
1959
1960/***/ }),
1961/* 35 */
1962/***/ (function(module, exports, __webpack_require__) {
1963
1964var baseGetTag = __webpack_require__(11),
1965    isObjectLike = __webpack_require__(9);
1966
1967/** `Object#toString` result references. */
1968var symbolTag = '[object Symbol]';
1969
1970/**
1971 * Checks if `value` is classified as a `Symbol` primitive or object.
1972 *
1973 * @static
1974 * @memberOf _
1975 * @since 4.0.0
1976 * @category Lang
1977 * @param {*} value The value to check.
1978 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
1979 * @example
1980 *
1981 * _.isSymbol(Symbol.iterator);
1982 * // => true
1983 *
1984 * _.isSymbol('abc');
1985 * // => false
1986 */
1987function isSymbol(value) {
1988  return typeof value == 'symbol' ||
1989    (isObjectLike(value) && baseGetTag(value) == symbolTag);
1990}
1991
1992module.exports = isSymbol;
1993
1994
1995/***/ }),
1996/* 36 */
1997/***/ (function(module, exports, __webpack_require__) {
1998
1999// toObject with fallback for non-array-like ES3 strings
2000var IndexedObject = __webpack_require__(132);
2001var requireObjectCoercible = __webpack_require__(134);
2002
2003module.exports = function (it) {
2004  return IndexedObject(requireObjectCoercible(it));
2005};
2006
2007
2008/***/ }),
2009/* 37 */
2010/***/ (function(module, exports, __webpack_require__) {
2011
2012var DESCRIPTORS = __webpack_require__(15);
2013var IE8_DOM_DEFINE = __webpack_require__(69);
2014var anObject = __webpack_require__(24);
2015var toPrimitive = __webpack_require__(68);
2016
2017var nativeDefineProperty = Object.defineProperty;
2018
2019// `Object.defineProperty` method
2020// https://tc39.github.io/ecma262/#sec-object.defineproperty
2021exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
2022  anObject(O);
2023  P = toPrimitive(P, true);
2024  anObject(Attributes);
2025  if (IE8_DOM_DEFINE) try {
2026    return nativeDefineProperty(O, P, Attributes);
2027  } catch (error) { /* empty */ }
2028  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
2029  if ('value' in Attributes) O[P] = Attributes.value;
2030  return O;
2031};
2032
2033
2034/***/ }),
2035/* 38 */
2036/***/ (function(module, exports, __webpack_require__) {
2037
2038var global = __webpack_require__(3);
2039var hide = __webpack_require__(18);
2040
2041module.exports = function (key, value) {
2042  try {
2043    hide(global, key, value);
2044  } catch (error) {
2045    global[key] = value;
2046  } return value;
2047};
2048
2049
2050/***/ }),
2051/* 39 */
2052/***/ (function(module, exports) {
2053
2054module.exports = {};
2055
2056
2057/***/ }),
2058/* 40 */
2059/***/ (function(module, exports) {
2060
2061// IE8- don't enum bug keys
2062module.exports = [
2063  'constructor',
2064  'hasOwnProperty',
2065  'isPrototypeOf',
2066  'propertyIsEnumerable',
2067  'toLocaleString',
2068  'toString',
2069  'valueOf'
2070];
2071
2072
2073/***/ }),
2074/* 41 */
2075/***/ (function(module, __webpack_exports__, __webpack_require__) {
2076
2077"use strict";
2078__webpack_require__.r(__webpack_exports__);
2079/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionTypes", function() { return ActionTypes; });
2080/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createStore; });
2081/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79);
2082/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165);
2083
2084
2085
2086/**
2087 * These are private action types reserved by Redux.
2088 * For any unknown actions, you must return the current state.
2089 * If the current state is undefined, you must return the initial state.
2090 * Do not reference these action types directly in your code.
2091 */
2092var ActionTypes = {
2093  INIT: '@@redux/INIT'
2094};
2095
2096/**
2097 * Creates a Redux store that holds the state tree.
2098 * The only way to change the data in the store is to call `dispatch()` on it.
2099 *
2100 * There should only be a single store in your app. To specify how different
2101 * parts of the state tree respond to actions, you may combine several reducers
2102 * into a single reducer function by using `combineReducers`.
2103 *
2104 * @param {Function} reducer A function that returns the next state tree, given
2105 * the current state tree and the action to handle.
2106 *
2107 * @param {any} [preloadedState] The initial state. You may optionally specify it
2108 * to hydrate the state from the server in universal apps, or to restore a
2109 * previously serialized user session.
2110 * If you use `combineReducers` to produce the root reducer function, this must be
2111 * an object with the same shape as `combineReducers` keys.
2112 *
2113 * @param {Function} enhancer The store enhancer. You may optionally specify it
2114 * to enhance the store with third-party capabilities such as middleware,
2115 * time travel, persistence, etc. The only store enhancer that ships with Redux
2116 * is `applyMiddleware()`.
2117 *
2118 * @returns {Store} A Redux store that lets you read the state, dispatch actions
2119 * and subscribe to changes.
2120 */
2121function createStore(reducer, preloadedState, enhancer) {
2122  var _ref2;
2123
2124  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
2125    enhancer = preloadedState;
2126    preloadedState = undefined;
2127  }
2128
2129  if (typeof enhancer !== 'undefined') {
2130    if (typeof enhancer !== 'function') {
2131      throw new Error('Expected the enhancer to be a function.');
2132    }
2133
2134    return enhancer(createStore)(reducer, preloadedState);
2135  }
2136
2137  if (typeof reducer !== 'function') {
2138    throw new Error('Expected the reducer to be a function.');
2139  }
2140
2141  var currentReducer = reducer;
2142  var currentState = preloadedState;
2143  var currentListeners = [];
2144  var nextListeners = currentListeners;
2145  var isDispatching = false;
2146
2147  function ensureCanMutateNextListeners() {
2148    if (nextListeners === currentListeners) {
2149      nextListeners = currentListeners.slice();
2150    }
2151  }
2152
2153  /**
2154   * Reads the state tree managed by the store.
2155   *
2156   * @returns {any} The current state tree of your application.
2157   */
2158  function getState() {
2159    return currentState;
2160  }
2161
2162  /**
2163   * Adds a change listener. It will be called any time an action is dispatched,
2164   * and some part of the state tree may potentially have changed. You may then
2165   * call `getState()` to read the current state tree inside the callback.
2166   *
2167   * You may call `dispatch()` from a change listener, with the following
2168   * caveats:
2169   *
2170   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
2171   * If you subscribe or unsubscribe while the listeners are being invoked, this
2172   * will not have any effect on the `dispatch()` that is currently in progress.
2173   * However, the next `dispatch()` call, whether nested or not, will use a more
2174   * recent snapshot of the subscription list.
2175   *
2176   * 2. The listener should not expect to see all state changes, as the state
2177   * might have been updated multiple times during a nested `dispatch()` before
2178   * the listener is called. It is, however, guaranteed that all subscribers
2179   * registered before the `dispatch()` started will be called with the latest
2180   * state by the time it exits.
2181   *
2182   * @param {Function} listener A callback to be invoked on every dispatch.
2183   * @returns {Function} A function to remove this change listener.
2184   */
2185  function subscribe(listener) {
2186    if (typeof listener !== 'function') {
2187      throw new Error('Expected listener to be a function.');
2188    }
2189
2190    var isSubscribed = true;
2191
2192    ensureCanMutateNextListeners();
2193    nextListeners.push(listener);
2194
2195    return function unsubscribe() {
2196      if (!isSubscribed) {
2197        return;
2198      }
2199
2200      isSubscribed = false;
2201
2202      ensureCanMutateNextListeners();
2203      var index = nextListeners.indexOf(listener);
2204      nextListeners.splice(index, 1);
2205    };
2206  }
2207
2208  /**
2209   * Dispatches an action. It is the only way to trigger a state change.
2210   *
2211   * The `reducer` function, used to create the store, will be called with the
2212   * current state tree and the given `action`. Its return value will
2213   * be considered the **next** state of the tree, and the change listeners
2214   * will be notified.
2215   *
2216   * The base implementation only supports plain object actions. If you want to
2217   * dispatch a Promise, an Observable, a thunk, or something else, you need to
2218   * wrap your store creating function into the corresponding middleware. For
2219   * example, see the documentation for the `redux-thunk` package. Even the
2220   * middleware will eventually dispatch plain object actions using this method.
2221   *
2222   * @param {Object} action A plain object representing “what changed”. It is
2223   * a good idea to keep actions serializable so you can record and replay user
2224   * sessions, or use the time travelling `redux-devtools`. An action must have
2225   * a `type` property which may not be `undefined`. It is a good idea to use
2226   * string constants for action types.
2227   *
2228   * @returns {Object} For convenience, the same action object you dispatched.
2229   *
2230   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
2231   * return something else (for example, a Promise you can await).
2232   */
2233  function dispatch(action) {
2234    if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(action)) {
2235      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
2236    }
2237
2238    if (typeof action.type === 'undefined') {
2239      throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
2240    }
2241
2242    if (isDispatching) {
2243      throw new Error('Reducers may not dispatch actions.');
2244    }
2245
2246    try {
2247      isDispatching = true;
2248      currentState = currentReducer(currentState, action);
2249    } finally {
2250      isDispatching = false;
2251    }
2252
2253    var listeners = currentListeners = nextListeners;
2254    for (var i = 0; i < listeners.length; i++) {
2255      listeners[i]();
2256    }
2257
2258    return action;
2259  }
2260
2261  /**
2262   * Replaces the reducer currently used by the store to calculate the state.
2263   *
2264   * You might need this if your app implements code splitting and you want to
2265   * load some of the reducers dynamically. You might also need this if you
2266   * implement a hot reloading mechanism for Redux.
2267   *
2268   * @param {Function} nextReducer The reducer for the store to use instead.
2269   * @returns {void}
2270   */
2271  function replaceReducer(nextReducer) {
2272    if (typeof nextReducer !== 'function') {
2273      throw new Error('Expected the nextReducer to be a function.');
2274    }
2275
2276    currentReducer = nextReducer;
2277    dispatch({ type: ActionTypes.INIT });
2278  }
2279
2280  /**
2281   * Interoperability point for observable/reactive libraries.
2282   * @returns {observable} A minimal observable of state changes.
2283   * For more information, see the observable proposal:
2284   * https://github.com/zenparsing/es-observable
2285   */
2286  function observable() {
2287    var _ref;
2288
2289    var outerSubscribe = subscribe;
2290    return _ref = {
2291      /**
2292       * The minimal observable subscription method.
2293       * @param {Object} observer Any object that can be used as an observer.
2294       * The observer object should have a `next` method.
2295       * @returns {subscription} An object with an `unsubscribe` method that can
2296       * be used to unsubscribe the observable from the store, and prevent further
2297       * emission of values from the observable.
2298       */
2299      subscribe: function subscribe(observer) {
2300        if (typeof observer !== 'object') {
2301          throw new TypeError('Expected the observer to be an object.');
2302        }
2303
2304        function observeState() {
2305          if (observer.next) {
2306            observer.next(getState());
2307          }
2308        }
2309
2310        observeState();
2311        var unsubscribe = outerSubscribe(observeState);
2312        return { unsubscribe: unsubscribe };
2313      }
2314    }, _ref[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = function () {
2315      return this;
2316    }, _ref;
2317  }
2318
2319  // When a store is created, an "INIT" action is dispatched so that every
2320  // reducer returns their initial state. This effectively populates
2321  // the initial state tree.
2322  dispatch({ type: ActionTypes.INIT });
2323
2324  return _ref2 = {
2325    dispatch: dispatch,
2326    subscribe: subscribe,
2327    getState: getState,
2328    replaceReducer: replaceReducer
2329  }, _ref2[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = observable, _ref2;
2330}
2331
2332/***/ }),
2333/* 42 */
2334/***/ (function(module, __webpack_exports__, __webpack_require__) {
2335
2336"use strict";
2337__webpack_require__.r(__webpack_exports__);
2338/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return compose; });
2339/**
2340 * Composes single-argument functions from right to left. The rightmost
2341 * function can take multiple arguments as it provides the signature for
2342 * the resulting composite function.
2343 *
2344 * @param {...Function} funcs The functions to compose.
2345 * @returns {Function} A function obtained by composing the argument functions
2346 * from right to left. For example, compose(f, g, h) is identical to doing
2347 * (...args) => f(g(h(...args))).
2348 */
2349
2350function compose() {
2351  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
2352    funcs[_key] = arguments[_key];
2353  }
2354
2355  if (funcs.length === 0) {
2356    return function (arg) {
2357      return arg;
2358    };
2359  }
2360
2361  if (funcs.length === 1) {
2362    return funcs[0];
2363  }
2364
2365  var last = funcs[funcs.length - 1];
2366  var rest = funcs.slice(0, -1);
2367  return function () {
2368    return rest.reduceRight(function (composed, f) {
2369      return f(composed);
2370    }, last.apply(undefined, arguments));
2371  };
2372}
2373
2374/***/ }),
2375/* 43 */
2376/***/ (function(module, exports, __webpack_require__) {
2377
2378"use strict";
2379
2380
2381var _interopRequireDefault = __webpack_require__(0);
2382
2383Object.defineProperty(exports, "__esModule", {
2384  value: true
2385});
2386exports.TRANSFORM_STYLE_PREFIXED = exports.TRANSFORM_PREFIXED = exports.FLEX_PREFIXED = exports.ELEMENT_MATCHES = exports.withBrowser = exports.IS_BROW
2386SER_ENV = void 0;
2387
2388var _find = _interopRequireDefault(__webpack_require__(85));
2389/* eslint-env browser */
2390
2391
2392var IS_BROWSER_ENV = typeof window !== 'undefined'; // $FlowFixMe
2393
2394exports.IS_BROWSER_ENV = IS_BROWSER_ENV;
2395
2396var withBrowser = function withBrowser(fn, fallback) {
2397  if (IS_BROWSER_ENV) {
2398    return fn();
2399  }
2400
2401  return fallback;
2402};
2403
2404exports.withBrowser = withBrowser;
2405var ELEMENT_MATCHES = withBrowser(function () {
2406  return (0, _find["default"])(['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'], function (key) {
2407    return key in Element.prototype;
2408  });
2409});
2410exports.ELEMENT_MATCHES = ELEMENT_MATCHES;
2411var FLEX_PREFIXED = withBrowser(function () {
2412  var el = document.createElement('i');
2413  var values = ['flex', '-webkit-flex', '-ms-flexbox', '-moz-box', '-webkit-box'];
2414  var none = '';
2415
2416  try {
2417    var length = values.length;
2418
2419    for (var i = 0; i < length; i++) {
2420      var value = values[i];
2421      el.style.display = value;
2422
2423      if (el.style.display === value) {
2424        return value;
2425      }
2426    }
2427
2428    return none;
2429  } catch (err) {
2430    return none;
2431  }
2432}, 'flex');
2433exports.FLEX_PREFIXED = FLEX_PREFIXED;
2434var TRANSFORM_PREFIXED = withBrowser(function () {
2435  var el = document.createElement('i');
2436
2437  if (el.style.transform == null) {
2438    var prefixes = ['Webkit', 'Moz', 'ms'];
2439    var suffix = 'Transform';
2440    var length = prefixes.length;
2441
2442    for (var i = 0; i < length; i++) {
2443      var prop = prefixes[i] + suffix; // $FlowFixMe
2444
2445      if (el.style[prop] !== undefined) {
2446        return prop;
2447      }
2448    }
2449  }
2450
2451  return 'transform';
2452}, 'transform'); // $FlowFixMe
2453
2454exports.TRANSFORM_PREFIXED = TRANSFORM_PREFIXED;
2455var TRANSFORM_PREFIX = TRANSFORM_PREFIXED.split('transform')[0];
2456var TRANSFORM_STYLE_PREFIXED = TRANSFORM_PREFIX ? TRANSFORM_PREFIX + 'TransformStyle' : 'transformStyle';
2457exports.TRANSFORM_STYLE_PREFIXED = TRANSFORM_STYLE_PREFIXED;
2458
2459/***/ }),
2460/* 44 */
2461/***/ (function(module, exports) {
2462
2463/**
2464 * Performs a
2465 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2466 * comparison between two values to determine if they are equivalent.
2467 *
2468 * @static
2469 * @memberOf _
2470 * @since 4.0.0
2471 * @category Lang
2472 * @param {*} value The value to compare.
2473 * @param {*} other The other value to compare.
2474 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2475 * @example
2476 *
2477 * var object = { 'a': 1 };
2478 * var other = { 'a': 1 };
2479 *
2480 * _.eq(object, object);
2481 * // => true
2482 *
2483 * _.eq(object, other);
2484 * // => false
2485 *
2486 * _.eq('a', 'a');
2487 * // => true
2488 *
2489 * _.eq('a', Object('a'));
2490 * // => false
2491 *
2492 * _.eq(NaN, NaN);
2493 * // => true
2494 */
2495function eq(value, other) {
2496  return value === other || (value !== value && other !== other);
2497}
2498
2499module.exports = eq;
2500
2501
2502/***/ }),
2503/* 45 */
2504/***/ (function(module, exports, __webpack_require__) {
2505
2506var getNative = __webpack_require__(8),
2507    root = __webpack_require__(4);
2508
2509/* Built-in method references that are verified to be native. */
2510var Map = getNative(root, 'Map');
2511
2512module.exports = Map;
2513
2514
2515/***/ }),
2516/* 46 */
2517/***/ (function(module, exports, __webpack_require__) {
2518
2519var mapCacheClear = __webpack_require__(195),
2520    mapCacheDelete = __webpack_require__(202),
2521    mapCacheGet = __webpack_require__(204),
2522    mapCacheHas = __webpack_require__(205),
2523    mapCacheSet = __webpack_require__(206);
2524
2525/**
2526 * Creates a map cache object to store key-value pairs.
2527 *
2528 * @private
2529 * @constructor
2530 * @param {Array} [entries] The key-value pairs to cache.
2531 */
2532function MapCache(entries) {
2533  var index = -1,
2534      length = entries == null ? 0 : entries.length;
2535
2536  this.clear();
2537  while (++index < length) {
2538    var entry = entries[index];
2539    this.set(entry[0], entry[1]);
2540  }
2541}
2542
2543// Add methods to `MapCache`.
2544MapCache.prototype.clear = mapCacheClear;
2545MapCache.prototype['delete'] = mapCacheDelete;
2546MapCache.prototype.get = mapCacheGet;
2547MapCache.prototype.has = mapCacheHas;
2548MapCache.prototype.set = mapCacheSet;
2549
2550module.exports = MapCache;
2551
2552
2553/***/ }),
2554/* 47 */
2555/***/ (function(module, exports) {
2556
2557/**
2558 * Appends the elements of `values` to `array`.
2559 *
2560 * @private
2561 * @param {Array} array The array to modify.
2562 * @param {Array} values The values to append.
2563 * @returns {Array} Returns `array`.
2564 */
2565function arrayPush(array, values) {
2566  var index = -1,
2567      length = values.length,
2568      offset = array.length;
2569
2570  while (++index < length) {
2571    array[offset + index] = values[index];
2572  }
2573  return array;
2574}
2575
2576module.exports = arrayPush;
2577
2578
2579/***/ }),
2580/* 48 */
2581/***/ (function(module, exports, __webpack_require__) {
2582
2583/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(4),
2584    stubFalse = __webpack_require__(222);
2585
2586/** Detect free variable `exports`. */
2587var freeExports =  true && exports && !exports.nodeType && exports;
2588
2589/** Detect free variable `module`. */
2590var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
2591
2592/** Detect the popular CommonJS extension `module.exports`. */
2593var moduleExports = freeModule && freeModule.exports === freeExports;
2594
2595/** Built-in value references. */
2596var Buffer = moduleExports ? root.Buffer : undefined;
2597
2598/* Built-in method references for those with the same name as other `lodash` methods. */
2599var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
2600
2601/**
2602 * Checks if `value` is a buffer.
2603 *
2604 * @static
2605 * @memberOf _
2606 * @since 4.3.0
2607 * @category Lang
2608 * @param {*} value The value to check.
2609 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
2610 * @example
2611 *
2612 * _.isBuffer(new Buffer(2));
2613 * // => true
2614 *
2615 * _.isBuffer(new Uint8Array(2));
2616 * // => false
2617 */
2618var isBuffer = nativeIsBuffer || stubFalse;
2619
2620module.exports = isBuffer;
2621
2622/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(97)(module)))
2623
2624/***/ }),
2625/* 49 */
vendor: 5,342 bytes, lines 2626-2834
2626/***/ (function(module, exports) {
2627
2628/** Used as references for various `Number` constants. */
2629var MAX_SAFE_INTEGER = 9007199254740991;
2630
2631/** Used to detect unsigned integer values. */
2632var reIsUint = /^(?:0|[1-9]\d*)$/;
2633
2634/**
2635 * Checks if `value` is a valid array-like index.
2636 *
2637 * @private
2638 * @param {*} value The value to check.
2639 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
2640 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
2641 */
2642function isIndex(value, length) {
2643  var type = typeof value;
2644  length = length == null ? MAX_SAFE_INTEGER : length;
2645
2646  return !!length &&
2647    (type == 'number' ||
2648      (type != 'symbol' && reIsUint.test(value))) &&
2649        (value > -1 && value % 1 == 0 && value < length);
2650}
2651
2652module.exports = isIndex;
2653
2654
2655/***/ }),
2656/* 50 */
2657/***/ (function(module, exports, __webpack_require__) {
2658
2659var baseIsTypedArray = __webpack_require__(223),
2660    baseUnary = __webpack_require__(224),
2661    nodeUtil = __webpack_require__(225);
2662
2663/* Node.js helper references. */
2664var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
2665
2666/**
2667 * Checks if `value` is classified as a typed array.
2668 *
2669 * @static
2670 * @memberOf _
2671 * @since 3.0.0
2672 * @category Lang
2673 * @param {*} value The value to check.
2674 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
2675 * @example
2676 *
2677 * _.isTypedArray(new Uint8Array);
2678 * // => true
2679 *
2680 * _.isTypedArray([]);
2681 * // => false
2682 */
2683var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
2684
2685module.exports = isTypedArray;
2686
2687
2688/***/ }),
2689/* 51 */
2690/***/ (function(module, exports) {
2691
2692/** Used as references for various `Number` constants. */
2693var MAX_SAFE_INTEGER = 9007199254740991;
2694
2695/**
2696 * Checks if `value` is a valid array-like length.
2697 *
2698 * **Note:** This method is loosely based on
2699 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
2700 *
2701 * @static
2702 * @memberOf _
2703 * @since 4.0.0
2704 * @category Lang
2705 * @param {*} value The value to check.
2706 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2707 * @example
2708 *
2709 * _.isLength(3);
2710 * // => true
2711 *
2712 * _.isLength(Number.MIN_VALUE);
2713 * // => false
2714 *
2715 * _.isLength(Infinity);
2716 * // => false
2717 *
2718 * _.isLength('3');
2719 * // => false
2720 */
2721function isLength(value) {
2722  return typeof value == 'number' &&
2723    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2724}
2725
2726module.exports = isLength;
2727
2728
2729/***/ }),
2730/* 52 */
2731/***/ (function(module, exports, __webpack_require__) {
2732
2733var isPrototype = __webpack_require__(53),
2734    nativeKeys = __webpack_require__(226);
2735
2736/** Used for built-in method references. */
2737var objectProto = Object.prototype;
2738
2739/** Used to check objects for own properties. */
2740var hasOwnProperty = objectProto.hasOwnProperty;
2741
2742/**
2743 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
2744 *
2745 * @private
2746 * @param {Object} object The object to query.
2747 * @returns {Array} Returns the array of property names.
2748 */
2749function baseKeys(object) {
2750  if (!isPrototype(object)) {
2751    return nativeKeys(object);
2752  }
2753  var result = [];
2754  for (var key in Object(object)) {
2755    if (hasOwnProperty.call(object, key) && key != 'constructor') {
2756      result.push(key);
2757    }
2758  }
2759  return result;
2760}
2761
2762module.exports = baseKeys;
2763
2764
2765/***/ }),
2766/* 53 */
2767/***/ (function(module, exports) {
2768
2769/** Used for built-in method references. */
2770var objectProto = Object.prototype;
2771
2772/**
2773 * Checks if `value` is likely a prototype object.
2774 *
2775 * @private
2776 * @param {*} value The value to check.
2777 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
2778 */
2779function isPrototype(value) {
2780  var Ctor = value && value.constructor,
2781      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
2782
2783  return value === proto;
2784}
2785
2786module.exports = isPrototype;
2787
2788
2789/***/ }),
2790/* 54 */
2791/***/ (function(module, exports, __webpack_require__) {
2792
2793var DataView = __webpack_require__(227),
2794    Map = __webpack_require__(45),
2795    Promise = __webpack_require__(228),
2796    Set = __webpack_require__(229),
2797    WeakMap = __webpack_require__(99),
2798    baseGetTag = __webpack_require__(11),
2799    toSource = __webpack_require__(90);
2800
2801/** `Object#toString` result references. */
2802var mapTag = '[object Map]',
2803    objectTag = '[object Object]',
2804    promiseTag = '[object Promise]',
2805    setTag = '[object Set]',
2806    weakMapTag = '[object WeakMap]';
2807
2808var dataViewTag = '[object DataView]';
2809
2810/** Used to detect maps, sets, and weakmaps. */
2811var dataViewCtorString = toSource(DataView),
2812    mapCtorString = toSource(Map),
2813    promiseCtorString = toSource(Promise),
2814    setCtorString = toSource(Set),
2815    weakMapCtorString = toSource(WeakMap);
2816
2817/**
2818 * Gets the `toStringTag` of `value`.
2819 *
2820 * @private
2821 * @param {*} value The value to query.
2822 * @returns {string} Returns the `toStringTag`.
2823 */
2824var getTag = baseGetTag;
2825
2826// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
2827if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
2828    (Map && getTag(new Map) != mapTag) ||
2829    (Promise && getTag(Promise.resolve()) != promiseTag) ||
2830    (Set && getTag(new Set) != setTag) ||
2831    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
2832  getTag = function(value) {
2833    var result = baseGetTag(value),
2834        Ctor = result == objectTag ? value.constructor : undefined,
vendor: 6,099 bytes, lines 2835-3076
2835        ctorString = Ctor ? toSource(Ctor) : '';
2836
2837    if (ctorString) {
2838      switch (ctorString) {
2839        case dataViewCtorString: return dataViewTag;
2840        case mapCtorString: return mapTag;
2841        case promiseCtorString: return promiseTag;
2842        case setCtorString: return setTag;
2843        case weakMapCtorString: return weakMapTag;
2844      }
2845    }
2846    return result;
2847  };
2848}
2849
2850module.exports = getTag;
2851
2852
2853/***/ }),
2854/* 55 */
2855/***/ (function(module, exports, __webpack_require__) {
2856
2857var baseGet = __webpack_require__(56);
2858
2859/**
2860 * Gets the value at `path` of `object`. If the resolved value is
2861 * `undefined`, the `defaultValue` is returned in its place.
2862 *
2863 * @static
2864 * @memberOf _
2865 * @since 3.7.0
2866 * @category Object
2867 * @param {Object} object The object to query.
2868 * @param {Array|string} path The path of the property to get.
2869 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
2870 * @returns {*} Returns the resolved value.
2871 * @example
2872 *
2873 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
2874 *
2875 * _.get(object, 'a[0].b.c');
2876 * // => 3
2877 *
2878 * _.get(object, ['a', '0', 'b', 'c']);
2879 * // => 3
2880 *
2881 * _.get(object, 'a.b.c', 'default');
2882 * // => 'default'
2883 */
2884function get(object, path, defaultValue) {
2885  var result = object == null ? undefined : baseGet(object, path);
2886  return result === undefined ? defaultValue : result;
2887}
2888
2889module.exports = get;
2890
2891
2892/***/ }),
2893/* 56 */
2894/***/ (function(module, exports, __webpack_require__) {
2895
2896var castPath = __webpack_require__(34),
2897    toKey = __webpack_require__(21);
2898
2899/**
2900 * The base implementation of `_.get` without support for default values.
2901 *
2902 * @private
2903 * @param {Object} object The object to query.
2904 * @param {Array|string} path The path of the property to get.
2905 * @returns {*} Returns the resolved value.
2906 */
2907function baseGet(object, path) {
2908  path = castPath(path, object);
2909
2910  var index = 0,
2911      length = path.length;
2912
2913  while (object != null && index < length) {
2914    object = object[toKey(path[index++])];
2915  }
2916  return (index && index == length) ? object : undefined;
2917}
2918
2919module.exports = baseGet;
2920
2921
2922/***/ }),
2923/* 57 */
2924/***/ (function(module, exports, __webpack_require__) {
2925
2926var isArray = __webpack_require__(1),
2927    isSymbol = __webpack_require__(35);
2928
2929/** Used to match property names within property paths. */
2930var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
2931    reIsPlainProp = /^\w*$/;
2932
2933/**
2934 * Checks if `value` is a property name and not a property path.
2935 *
2936 * @private
2937 * @param {*} value The value to check.
2938 * @param {Object} [object] The object to query keys on.
2939 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
2940 */
2941function isKey(value, object) {
2942  if (isArray(value)) {
2943    return false;
2944  }
2945  var type = typeof value;
2946  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
2947      value == null || isSymbol(value)) {
2948    return true;
2949  }
2950  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
2951    (object != null && value in Object(object));
2952}
2953
2954module.exports = isKey;
2955
2956
2957/***/ }),
2958/* 58 */
2959/***/ (function(module, exports) {
2960
2961/**
2962 * This method returns the first argument it receives.
2963 *
2964 * @static
2965 * @since 0.1.0
2966 * @memberOf _
2967 * @category Util
2968 * @param {*} value Any value.
2969 * @returns {*} Returns `value`.
2970 * @example
2971 *
2972 * var object = { 'a': 1 };
2973 *
2974 * console.log(_.identity(object) === object);
2975 * // => true
2976 */
2977function identity(value) {
2978  return value;
2979}
2980
2981module.exports = identity;
2982
2983
2984/***/ }),
2985/* 59 */
2986/***/ (function(module, exports, __webpack_require__) {
2987
2988var isObject = __webpack_require__(5),
2989    isSymbol = __webpack_require__(35);
2990
2991/** Used as references for various `Number` constants. */
2992var NAN = 0 / 0;
2993
2994/** Used to match leading and trailing whitespace. */
2995var reTrim = /^\s+|\s+$/g;
2996
2997/** Used to detect bad signed hexadecimal string values. */
2998var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
2999
3000/** Used to detect binary string values. */
3001var reIsBinary = /^0b[01]+$/i;
3002
3003/** Used to detect octal string values. */
3004var reIsOctal = /^0o[0-7]+$/i;
3005
3006/** Built-in method references without a dependency on `root`. */
3007var freeParseInt = parseInt;
3008
3009/**
3010 * Converts `value` to a number.
3011 *
3012 * @static
3013 * @memberOf _
3014 * @since 4.0.0
3015 * @category Lang
3016 * @param {*} value The value to process.
3017 * @returns {number} Returns the number.
3018 * @example
3019 *
3020 * _.toNumber(3.2);
3021 * // => 3.2
3022 *
3023 * _.toNumber(Number.MIN_VALUE);
3024 * // => 5e-324
3025 *
3026 * _.toNumber(Infinity);
3027 * // => Infinity
3028 *
3029 * _.toNumber('3.2');
3030 * // => 3.2
3031 */
3032function toNumber(value) {
3033  if (typeof value == 'number') {
3034    return value;
3035  }
3036  if (isSymbol(value)) {
3037    return NAN;
3038  }
3039  if (isObject(value)) {
3040    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
3041    value = isObject(other) ? (other + '') : other;
3042  }
3043  if (typeof value != 'string') {
3044    return value === 0 ? value : +value;
3045  }
3046  value = value.replace(reTrim, '');
3047  var isBinary = reIsBinary.test(value);
3048  return (isBinary || reIsOctal.test(value))
3049    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
3050    : (reIsBadHex.test(value) ? NAN : +value);
3051}
3052
3053module.exports = toNumber;
3054
3055
3056/***/ }),
3057/* 60 */
3058/***/ (function(module, exports, __webpack_require__) {
3059
3060"use strict";
3061
3062
3063var _interopRequireDefault = __webpack_require__(0);
3064
3065Object.defineProperty(exports, "__esModule", {
3066  value: true
3067});
3068exports.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;
3069
3070var _extends2 = _interopRequireDefault(__webpack_require__(27));
3071
3072var _constants = __webpack_require__(2);
3073
3074var _shared = __webpack_require__(10);
3075
3076var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
3077    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
3078    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
3079    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
3080    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
3081    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
3082    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
3083    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
3084    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED,
3085    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
3086    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
3087    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
3088    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
3089    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED,
3090    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
3091    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
3092    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
3093    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED,
3094    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
3095    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
3096    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
3097var reifyState = _shared.IX2VanillaUtils.reifyState; // TODO: Figure out what this is and elevate it
3098
3099var rawDataImported = function rawDataImported(rawData) {
3100  return {
3101    type: IX2_RAW_DATA_IMPORTED,
3102    payload: (0, _extends2["default"])({}, reifyState(rawData))
3103  };
3104};
3105
3106exports.rawDataImported = rawDataImported;
3107
3108var sessionInitialized = function sessionInitialized(_ref) {
3109  var hasBoundaryNodes = _ref.hasBoundaryNodes;
3110  return {
3111    type: IX2_SESSION_INITIALIZED,
3112    payload: {
3113      hasBoundaryNodes: hasBoundaryNodes
3114    }
3115  };
3116};
3117
3118exports.sessionInitialized = sessionInitialized;
3119
3120var sessionStarted = function sessionStarted() {
3121  return {
3122    type: IX2_SESSION_STARTED
3123  };
3124};
3125
3126exports.sessionStarted = sessionStarted;
3127
3128var sessionStopped = function sessionStopped() {
3129  return {
3130    type: IX2_SESSION_STOPPED
3131  };
3132};
3133
3134exports.sessionStopped = sessionStopped;
3135
3136var previewRequested = function previewRequested(_ref2) {
3137  var rawData = _ref2.rawData,
3138      defer = _ref2.defer;
3139  return {
3140    type: IX2_PREVIEW_REQUESTED,
3141    payload: {
3142      defer: defer,
3143      rawData: rawData
3144    }
3145  };
3146};
3147
3148exports.previewRequested = previewRequested;
3149
3150var playbackRequested = function playbackRequested(_ref3) {
3151  var _ref3$actionTypeId = _ref3.actionTypeId,
3152      actionTypeId = _ref3$actionTypeId === void 0 ? _constants.ActionTypeConsts.GENERAL_START_ACTION : _ref3$actionTypeId,
3153      actionListId = _ref3.actionListId,
3154      actionItemId = _ref3.actionItemId,
3155      eventId = _ref3.eventId,
3156      allowEvents = _ref3.allowEvents,
3157      immediate = _ref3.immediate,
3158      testManual = _ref3.testManual,
3159      verbose = _ref3.verbose,
3160      rawData = _ref3.rawData;
3161  return {
3162    type: IX2_PLAYBACK_REQUESTED,
3163    payload: {
3164      actionTypeId: actionTypeId,
3165      actionListId: actionListId,
3166      actionItemId: actionItemId,
3167      testManual: testManual,
3168      eventId: eventId,
3169      allowEvents: allowEvents,
3170      immediate: immediate,
3171      verbose: verbose,
3172      rawData: rawData
3173    }
3174  };
3175};
3176
3177exports.playbackRequested = playbackRequested;
3178
3179var stopRequested = function stopRequested(actionListId) {
3180  return {
3181    type: IX2_STOP_REQUESTED,
3182    payload: {
3183      actionListId: actionListId
3184    }
3185  };
3186};
3187
3188exports.stopRequested = stopRequested;
3189
3190var clearRequested = function clearRequested() {
3191  return {
3192    type: IX2_CLEAR_REQUESTED
3193  };
3194};
3195
3196exports.clearRequested = clearRequested;
3197
3198var eventListenerAdded = function eventListenerAdded(target, listenerParams) {
3199  return {
3200    type: IX2_EVENT_LISTENER_ADDED,
3201    payload: {
3202      target: target,
3203      listenerParams: listenerParams
3204    }
3205  };
3206};
3207
3208exports.eventListenerAdded = eventListenerAdded;
3209
3210var testFrameRendered = function testFrameRendered() {
3211  var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
3212  return {
3213    type: IX2_TEST_FRAME_RENDERED,
3214    payload: {
3215      step: step
3216    }
3217  };
3218};
3219
3220exports.testFrameRendered = testFrameRendered;
3221
3222var eventStateChanged = function eventStateChanged(stateKey, newState) {
3223  return {
3224    type: IX2_EVENT_STATE_CHANGED,
3225    payload: {
3226      stateKey: stateKey,
3227      newState: newState
3228    }
3229  };
3230};
3231
3232exports.eventStateChanged = eventStateChanged;
3233
3234var animationFrameChanged = function animationFrameChanged(now, parameters) {
3235  return {
3236    type: IX2_ANIMATION_FRAME_CHANGED,
3237    payload: {
3238      now: now,
3239      parameters: parameters
3240    }
3241  };
3242};
3243
3244exports.animationFrameChanged = animationFrameChanged;
3245
3246var parameterChanged = function parameterChanged(key, value) {
3247  return {
3248    type: IX2_PARAMETER_CHANGED,
3249    payload: {
3250      key: key,
3251      value: value
3252    }
3253  };
3254};
3255
3256exports.parameterChanged = parameterChanged;
3257
3258var instanceAdded = function instanceAdded(options) {
3259  return {
3260    type: IX2_INSTANCE_ADDED,
3261    payload: (0, _extends2["default"])({}, options)
3262  };
3263};
3264
3265exports.instanceAdded = instanceAdded;
3266
3267var instanceStarted = function instanceStarted(instanceId, time) {
3268  return {
3269    type: IX2_INSTANCE_STARTED,
3270    payload: {
3271      instanceId: instanceId,
3272      time: time
3273    }
3274  };
3275};
3276
3277exports.instanceStarted = instanceStarted;
3278
3279var instanceRemoved = function instanceRemoved(instanceId) {
3280  return {
3281    type: IX2_INSTANCE_REMOVED,
3282    payload: {
3283      instanceId: instanceId
3284    }
3285  };
3286};
3287
3288exports.instanceRemoved = instanceRemoved;
3289
3290var elementStateChanged = function elementStateChanged(elementId, actionTypeId, current, actionItem) {
3291  return {
3292    type: IX2_ELEMENT_STATE_CHANGED,
3293    payload: {
3294      elementId: elementId,
3295      actionTypeId: actionTypeId,
3296      current: current,
3297      actionItem: actionItem
3298    }
3299  };
3300};
3301
3302exports.elementStateChanged = elementStateChanged;
3303
3304var actionListPlaybackChanged = function actionListPlaybackChanged(_ref4) {
3305  var actionListId = _ref4.actionListId,
3306      isPlaying = _ref4.isPlaying;
3307  return {
3308    type: IX2_ACTION_LIST_PLAYBACK_CHANGED,
3309    payload: {
3310      actionListId: actionListId,
3311      isPlaying: isPlaying
3312    }
3313  };
3314};
3315
3316exports.actionListPlaybackChanged = actionListPlaybackChanged;
3317
3318var viewportWidthChanged = function viewportWidthChanged(_ref5) {
3319  var width = _ref5.width,
3320      mediaQueries = _ref5.mediaQueries;
3321  return {
3322    type: IX2_VIEWPORT_WIDTH_CHANGED,
3323    payload: {
3324      width: width,
3325      mediaQueries: mediaQueries
3326    }
3327  };
3328};
3329
3330exports.viewportWidthChanged = viewportWidthChanged;
3331
3332var mediaQueriesDefined = function mediaQueriesDefined() {
3333  return {
3334    type: IX2_MEDIA_QUERIES_DEFINED
3335  };
3336};
3337
3338exports.mediaQueriesDefined = mediaQueriesDefined;
3339
3340/***/ }),
3341/* 61 */
3342/***/ (function(module, exports, __webpack_require__) {
3343
3344var baseCreate = __webpack_require__(117),
3345    baseLodash = __webpack_require__(62);
3346
3347/**
3348 * The base constructor for creating `lodash` wrapper objects.
3349 *
3350 * @private
3351 * @param {*} value The value to wrap.
3352 * @param {boolean} [chainAll] Enable explicit method chain sequences.
3353 */
3354function LodashWrapper(value, chainAll) {
3355  this.__wrapped__ = value;
3356  this.__actions__ = [];
3357  this.__chain__ = !!chainAll;
3358  this.__index__ = 0;
3359  this.__values__ = undefined;
3360}
3361
3362LodashWrapper.prototype = baseCreate(baseLodash.prototype);
3363LodashWrapper.prototype.constructor = LodashWrapper;
3364
3365module.exports = LodashWrapper;
3366
3367
3368/***/ }),
3369/* 62 */
3370/***/ (function(module, exports) {
3371
3372/**
3373 * The function whose prototype chain sequence wrappers inherit from.
3374 *
3375 * @private
3376 */
3377function baseLodash() {
3378  // No operation performed.
3379}
3380
3381module.exports = baseLodash;
3382
3383
3384/***/ }),
3385/* 63 */
3386/***/ (function(module, exports, __webpack_require__) {
3387
3388var baseCreate = __webpack_require__(117),
3389    baseLodash = __webpack_require__(62);
3390
3391/** Used as references for the maximum length and index of an array. */
3392var MAX_ARRAY_LENGTH = 4294967295;
3393
3394/**
3395 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
3396 *
3397 * @private
3398 * @constructor
3399 * @param {*} value The value to wrap.
3400 */
3401function LazyWrapper(value) {
3402  this.__wrapped__ = value;
3403  this.__actions__ = [];
3404  this.__dir__ = 1;
3405  this.__filtered__ = false;
3406  this.__iteratees__ = [];
3407  this.__takeCount__ = MAX_ARRAY_LENGTH;
3408  this.__views__ = [];
3409}
3410
3411// Ensure `LazyWrapper` is an instance of `baseLodash`.
3412LazyWrapper.prototype = baseCreate(baseLodash.prototype);
3413LazyWrapper.prototype.constructor = LazyWrapper;
3414
3415module.exports = LazyWrapper;
3416
3417
3418/***/ }),
3419/* 64 */
3420/***/ (function(module, exports, __webpack_require__) {
3421
3422"use strict";
3423 // @wf-will-never-add-flow-to-this-file
3424
3425/* eslint-disable eslint-comments/no-unlimited-disable */
3426
3427/* eslint-disable */
3428
3429/*!
3430 * tram.js v0.8.2-global
3431 * Cross-browser CSS3 transitions in JavaScript
3432 * https://github.com/bkwld/tram
3433 * MIT License
3434 */
3435
3436/* prettier-ignore */
3437
3438var _interopRequireDefault = __webpack_require__(0);
3439
3440var _typeof2 = _interopRequireDefault(__webpack_require__(13));
3441
3442window.tram = function (a) {
3443  function b(a, b) {
3444    var c = new M.Bare();
3445    return c.init(a, b);
3446  }
3447
3448  function c(a) {
3449    return a.replace(/[A-Z]/g, function (a) {
3450      return "-" + a.toLowerCase();
3451    });
3452  }
3453
3454  function d(a) {
3455    var b = parseInt(a.slice(1), 16),
3456        c = b >> 16 & 255,
3457        d = b >> 8 & 255,
3458        e = 255 & b;
3459    return [c, d, e];
3460  }
3461
3462  function e(a, b, c) {
3463    return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1);
3464  }
3465
3466  function f() {}
3467
3468  function g(a, b) {
3469    j("Type warning: Expected: [" + a + "] Got: [" + (0, _typeof2["default"])(b) + "] " + b);
3470  }
3471
3472  function h(a, b, c) {
3473    j("Units do not match [" + a + "]: " + b + ", " + c);
3474  }
3475
3476  function i(a, b, c) {
3477    if (void 0 !== b && (c = b), void 0 === a) return c;
3478    var d = c;
3479    return $.test(a) || !_.test(a) ? d = parseInt(a, 10) : _.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c;
3480  }
3481
3482  function j(a) {
3483    U.debug && window && window.console.warn(a);
3484  }
3485
3486  function k(a) {
3487    for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) {
3488      var e = a[b];
3489      e && d.push(e);
3490    }
3491
3492    return d;
3493  }
3494
3495  var l = function (a, b, c) {
3496    function d(a) {
3497      return "object" == (0, _typeof2["default"])(a);
3498    }
3499
3500    function e(a) {
3501      return "function" == typeof a;
3502    }
3503
3504    function f() {}
3505
3506    function g(h, i) {
3507      function j() {
3508        var a = new k();
3509        return e(a.init) && a.init.apply(a, arguments), a;
3510      }
3511
3512      function k() {}
3513
3514      i === c && (i = h, h = Object), j.Bare = k;
3515      var l,
3516          m = f[a] = h[a],
3517          n = k[a] = j[a] = new f();
3518      return n.constructor = j, j.mixin = function (b) {
3519        return k[a] = j[a] = g(j, b)[a], j;
3520      }, j.open = function (a) {
3521        if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l)) for (var c in l) {
3522          b.call(l, c) && (n[c] = l[c]);
3523        }
3524        return e(n.init) || (n.init = h), j;
3525      }, j.open(i);
3526    }
3527
3528    return g;
3529  }("prototype", {}.hasOwnProperty),
3530      m = {
3531    ease: ["ease", function (a, b, c, d) {
3532      var e = (a /= d) * a,
3533          f = e * a;
3534      return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a);
3535    }],
3536    "ease-in": ["ease-in", function (a, b, c, d) {
3537      var e = (a /= d) * a,
3538          f = e * a;
3539      return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e);
3540    }],
3541    "ease-out": ["ease-out", function (a, b, c, d) {
3542      var e = (a /= d) * a,
3543          f = e * a;
3544      return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a);
3545    }],
3546    "ease-in-out": ["ease-in-out", function (a, b, c, d) {
3547      var e = (a /= d) * a,
3548          f = e * a;
3549      return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e);
3550    }],
3551    linear: ["linear", function (a, b, c, d) {
3552      return c * a / d + b;
3553    }],
3554    "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function (a, b, c, d) {
3555      return c * (a /= d) * a + b;
3556    }],
3557    "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function (a, b, c, d) {
3558      return -c * (a /= d) * (a - 2) + b;
3559    }],
3560    "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function (a, b, c, d) {
3561      return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b;
3562    }],
3563    "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function (a, b, c, d) {
3564      return c * (a /= d) * a * a + b;
3565    }],
3566    "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function (a, b, c, d) {
3567      return c * ((a = a / d - 1) * a * a + 1) + b;
3568    }],
3569    "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function (a, b, c, d) {
3570      return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b;
3571    }],
3572    "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function (a, b, c, d) {
3573      return c * (a /= d) * a * a * a + b;
3574    }],
3575    "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function (a, b, c, d) {
3576      return -c * ((a = a / d - 1) * a * a * a - 1) + b;
3577    }],
3578    "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function (a, b, c, d) {
3579      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b;
3580    }],
3581    "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function (a, b, c, d) {
3582      return c * (a /= d) * a * a * a * a + b;
3583    }],
3584    "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function (a, b, c, d) {
3585      return c * ((a = a / d - 1) * a * a * a * a + 1) + b;
3586    }],
3587    "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function (a, b, c, d) {
3588      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b;
3589    }],
3590    "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function (a, b, c, d) {
3591      return -c * Math.cos(a / d * (Math.PI / 2)) + c + b;
3592    }],
3593    "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function (a, b, c, d) {
3594      return c * Math.sin(a / d * (Math.PI / 2)) + b;
3595    }],
3596    "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function (a, b, c, d) {
3597      return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b;
3598    }],
3599    "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function (a, b, c, d) {
3600      return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b;
3601    }],
3602    "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function (a, b, c, d) {
3603      return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b;
3604    }],
3605    "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function (a, b, c, d) {
3606      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;
3607    }],
3608    "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function (a, b, c, d) {
3609      return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b;
3610    }],
3611    "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function (a, b, c, d) {
3612      return c * Math.sqrt(1 - (a = a / d - 1) * a) + b;
3613    }],
3614    "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function (a, b, c, d) {
3615      return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b;
3616    }],
3617    "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function (a, b, c, d, e) {
3618      return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b;
3619    }],
3620    "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function (a, b, c, d, e) {
3621      return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b;
3622    }],
3623    "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function (a, b, c, d, e) {
3624      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;
3625    }]
3626  },
3627      n = {
3628    "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)",
3629    "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)",
3630    "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)"
3631  },
3632      o = document,
3633      p = window,
3634      q = "bkwld-tram",
3635      r = /[\-\.0-9]/g,
3636      s = /[A-Z]/,
3637      t = "number",
3638      u = /^(rgb|#)/,
3639      v = /(em|cm|mm|in|pt|pc|px)$/,
3640      w = /(em|cm|mm|in|pt|pc|px|%)$/,
3641      x = /(deg|rad|turn)$/,
3642      y = "unitless",
3643      z = /(all|none) 0s ease 0s/,
3644      A = /^(width|height)$/,
3645      B = " ",
3646      C = o.createElement("a"),
3647      D = ["Webkit", "Moz", "O", "ms"],
3648      E = ["-webkit-", "-moz-", "-o-", "-ms-"],
3649      F = function F(a) {
3650    if (a in C.style) return {
3651      dom: a,
3652      css: a
3653    };
3654    var b,
3655        c,
3656        d = "",
3657        e = a.split("-");
3658
3659    for (b = 0; b < e.length; b++) {
3660      d += e[b].charAt(0).toUpperCase() + e[b].slice(1);
3661    }
3662
3663    for (b = 0; b < D.length; b++) {
3664      if (c = D[b] + d, c in C.style) return {
3665        dom: c,
3666        css: E[b] + a
3667      };
3668    }
3669  },
3670      G = b.support = {
3671    bind: Function.prototype.bind,
3672    transform: F("transform"),
3673    transition: F("transition"),
3674    backface: F("backface-visibility"),
3675    timing: F("transition-timing-function")
3676  };
3677
3678  if (G.transition) {
3679    var H = G.timing.dom;
3680    if (C.style[H] = m["ease-in-back"][0], !C.style[H]) for (var I in n) {
3681      m[I][0] = n[I];
3682    }
3683  }
3684
3685  var J = b.frame = function () {
3686    var a = p.requestAnimationFrame || p.webkitRequestAnimationFrame || p.mozRequestAnimationFrame || p.oRequestAnimationFrame || p.msRequestAnimationFrame;
3687    return a && G.bind ? a.bind(p) : function (a) {
3688      p.setTimeout(a, 16);
3689    };
3690  }(),
3691      K = b.now = function () {
3692    var a = p.performance,
3693        b = a && (a.now || a.webkitNow || a.msNow || a.mozNow);
3694    return b && G.bind ? b.bind(a) : Date.now || function () {
3695      return +new Date();
3696    };
3697  }(),
3698      L = l(function (b) {
3699    function d(a, b) {
3700      var c = k(("" + a).split(B)),
3701          d = c[0];
3702      b = b || {};
3703      var e = Y[d];
3704      if (!e) return j("Unsupported property: " + d);
3705
3706      if (!b.weak || !this.props[d]) {
3707        var f = e[0],
3708            g = this.props[d];
3709        return g || (g = this.props[d] = new f.Bare()), g.init(this.$el, c, e, b), g;
3710      }
3711    }
3712
3713    function e(a, b, c) {
3714      if (a) {
3715        var e = (0, _typeof2["default"])(a);
3716        if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new S({
3717          duration: a,
3718          context: this,
3719          complete: h
3720        }), void (this.active = !0);
3721
3722        if ("string" == e && b) {
3723          switch (a) {
3724            case "hide":
3725              o.call(this);
3726              break;
3727
3728            case "stop":
3729              l.call(this);
3730              break;
3731
3732            case "redraw":
3733              p.call(this);
3734              break;
3735
3736            default:
3737              d.call(this, a, c && c[1]);
3738          }
3739
3740          return h.call(this);
3741        }
3742
3743        if ("function" == e) return void a.call(this, this);
3744
3745        if ("object" == e) {
3746          var f = 0;
3747          u.call(this, a, function (a, b) {
3748            a.span > f && (f = a.span), a.stop(), a.animate(b);
3749          }, function (a) {
3750            "wait" in a && (f = i(a.wait, 0));
3751          }), t.call(this), f > 0 && (this.timer = new S({
3752            duration: f,
3753            context: this
3754          }), this.active = !0, b && (this.timer.complete = h));
3755          var g = this,
3756              j = !1,
3757              k = {};
3758          J(function () {
3759            u.call(g, a, function (a) {
3760              a.active && (j = !0, k[a.name] = a.nextStyle);
3761            }), j && g.$el.css(k);
3762          });
3763        }
3764      }
3765    }
3766
3767    function f(a) {
3768      a = i(a, 0), this.active ? this.queue.push({
3769        options: a
3770      }) : (this.timer = new S({
3771        duration: a,
3772        context: this,
3773        complete: h
3774      }), this.active = !0);
3775    }
3776
3777    function g(a) {
3778      return this.active ? (this.queue.push({
3779        options: a,
3780        args: arguments
3781      }), void (this.timer.complete = h)) : j("No active transition timer. Use start() or wait() before then().");
3782    }
3783
3784    function h() {
3785      if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) {
3786        var a = this.queue.shift();
3787        e.call(this, a.options, !0, a.args);
3788      }
3789    }
3790
3791    function l(a) {
3792      this.timer && this.timer.destroy(), this.queue = [], this.active = !1;
3793      var b;
3794      "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);
3795    }
3796
3797    function m(a) {
3798      l.call(this, a), u.call(this, a, w, x);
3799    }
3800
3801    function n(a) {
3802      "string" != typeof a && (a = "block"), this.el.style.display = a;
3803    }
3804
3805    function o() {
3806      l.call(this), this.el.style.display = "none";
3807    }
3808
3809    function p() {
3810      this.el.offsetHeight;
3811    }
3812
3813    function r() {
3814      l.call(this), a.removeData(this.el, q), this.$el = this.el = null;
3815    }
3816
3817    function t() {
3818      var a,
3819          b,
3820          c = [];
3821      this.upstream && c.push(this.upstream);
3822
3823      for (a in this.props) {
3824        b = this.props[a], b.active && c.push(b.string);
3825      }
3826
3827      c = c.join(","), this.style !== c && (this.style = c, this.el.style[G.transition.dom] = c);
3828    }
3829
3830    function u(a, b, e) {
3831      var f,
3832          g,
3833          h,
3834          i,
3835          j = b !== v,
3836          k = {};
3837
3838      for (f in a) {
3839        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));
3840      }
3841
3842      for (f in k) {
3843        if (h = k[f], g = this.props[f], !g) {
3844          if (!j) continue;
3845          g = d.call(this, f);
3846        }
3847
3848        b.call(this, g, h);
3849      }
3850
3851      e && i && e.call(this, i);
3852    }
3853
3854    function v(a) {
3855      a.stop();
3856    }
3857
3858    function w(a, b) {
3859      a.set(b);
3860    }
3861
3862    function x(a) {
3863      this.$el.css(a);
3864    }
3865
3866    function y(a, c) {
3867      b[a] = function () {
3868        return this.children ? A.call(this, c, arguments) : (this.el && c.apply(this, arguments), this);
3869      };
3870    }
3871
3872    function A(a, b) {
3873      var c,
3874          d = this.children.length;
3875
3876      for (c = 0; d > c; c++) {
3877        a.apply(this.children[c], b);
3878      }
3879
3880      return this;
3881    }
3882
3883    b.init = function (b) {
3884      if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, U.keepInherited && !U.fallback) {
3885        var c = W(this.el, "transition");
3886        c && !z.test(c) && (this.upstream = c);
3887      }
3888
3889      G.backface && U.hideBackface && V(this.el, G.backface.css, "hidden");
3890    }, 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);
3891  }),
3892      M = l(L, function (b) {
3893    function c(b, c) {
3894      var d = a.data(b, q) || a.data(b, q, new L.Bare());
3895      return d.el || d.init(b), c ? d.start(c) : d;
3896    }
3897
3898    b.init = function (b, d) {
3899      var e = a(b);
3900      if (!e.length) return this;
3901      if (1 === e.length) return c(e[0], d);
3902      var f = [];
3903      return e.each(function (a, b) {
3904        f.push(c(b, d));
3905      }), this.children = f, this;
3906    };
3907  }),
3908      N = l(function (a) {
3909    function b() {
3910      var a = this.get();
3911      this.update("auto");
3912      var b = this.get();
3913      return this.update(a), b;
3914    }
3915
3916    function c(a, b, c) {
3917      return void 0 !== b && (c = b), a in m ? a : c;
3918    }
3919
3920    function d(a) {
3921      var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a);
3922      return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3");
3923    }
3924
3925    var f = {
3926      duration: 500,
3927      ease: "ease",
3928      delay: 0
3929    };
3930    a.init = function (a, b, d, e) {
3931      this.$el = a, this.el = a[0];
3932      var g = b[0];
3933      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" : ""));
3934    }, a.set = function (a) {
3935      a = this.convert(a, this.type), this.update(a), this.redraw();
3936    }, a.transition = function (a) {
3937      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;
3938    }, a.fallback = function (a) {
3939      var c = this.el.style[this.name] || this.convert(this.get(), this.type);
3940      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({
3941        from: c,
3942        to: a,
3943        duration: this.duration,
3944        delay: this.delay,
3945        ease: this.ease,
3946        update: this.update,
3947        context: this
3948      });
3949    }, a.get = function () {
3950      return W(this.el, this.name);
3951    }, a.update = function (a) {
3952      V(this.el, this.name, a);
3953    }, a.stop = function () {
3954      (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, V(this.el, this.name, this.get()));
3955      var a = this.tween;
3956      a && a.context && a.destroy();
3957    }, a.convert = function (a, b) {
3958      if ("auto" == a && this.auto) return a;
3959      var c,
3960          e = "number" == typeof a,
3961          f = "string" == typeof a;
3962
3963      switch (b) {
3964        case t:
3965          if (e) return a;
3966          if (f && "" === a.replace(r, "")) return +a;
3967          c = "number(unitless)";
3968          break;
3969
3970        case u:
3971          if (f) {
3972            if ("" === a && this.original) return this.original;
3973            if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a);
3974          }
3975
3976          c = "hex or rgb string";
3977          break;
3978
3979        case v:
3980          if (e) return a + this.unit;
3981          if (f && b.test(a)) return a;
3982          c = "number(px) or string(unit)";
3983          break;
3984
3985        case w:
3986          if (e) return a + this.unit;
3987          if (f && b.test(a)) return a;
3988          c = "number(px) or string(unit or %)";
3989          break;
3990
3991        case x:
3992          if (e) return a + this.angle;
3993          if (f && b.test(a)) return a;
3994          c = "number(deg) or string(angle)";
3995          break;
3996
3997        case y:
3998          if (e) return a;
3999          if (f && w.test(a)) return a;
4000          c = "number(unitless) or string(unit or %)";
4001      }
4002
4003      return g(c, a), a;
4004    }, a.redraw = function () {
4005      this.el.offsetHeight;
4006    };
4007  }),
4008      O = l(N, function (a, b) {
4009    a.init = function () {
4010      b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), u));
4011    };
4012  }),
4013      P = l(N, function (a, b) {
4014    a.init = function () {
4015      b.init.apply(this, arguments), this.animate = this.fallback;
4016    }, a.get = function () {
4017      return this.$el[this.name]();
4018    }, a.update = function (a) {
4019      this.$el[this.name](a);
4020    };
4021  }),
4022      Q = l(N, function (a, b) {
4023    function c(a, b) {
4024      var c, d, e, f, g;
4025
4026      for (c in a) {
4027        f = Z[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e);
4028      }
4029    }
4030
4031    a.init = function () {
4032      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()));
4033    }, a.set = function (a) {
4034      c.call(this, a, function (a, b) {
4035        this.current[a] = b;
4036      }), V(this.el, this.name, this.style(this.current)), this.redraw();
4037    }, a.transition = function (a) {
4038      var b = this.values(a);
4039      this.tween = new T({
4040        current: this.current,
4041        values: b,
4042        duration: this.duration,
4043        delay: this.delay,
4044        ease: this.ease
4045      });
4046      var c,
4047          d = {};
4048
4049      for (c in this.current) {
4050        d[c] = c in b ? b[c] : this.current[c];
4051      }
4052
4053      this.active = !0, this.nextStyle = this.style(d);
4054    }, a.fallback = function (a) {
4055      var b = this.values(a);
4056      this.tween = new T({
4057        current: this.current,
4058        values: b,
4059        duration: this.duration,
4060        delay: this.delay,
4061        ease: this.ease,
4062        update: this.update,
4063        context: this
4064      });
4065    }, a.update = function () {
4066      V(this.el, this.name, this.style(this.current));
4067    }, a.style = function (a) {
4068      var b,
4069          c = "";
4070
4071      for (b in a) {
4072        c += b + "(" + a[b] + ") ";
4073      }
4074
4075      return c;
4076    }, a.values = function (a) {
4077      var b,
4078          d = {};
4079      return c.call(this, a, function (a, c, e) {
4080        d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e));
4081      }), d;
4082    };
4083  }),
4084      R = l(function (b) {
4085    function c(a) {
4086      1 === n.push(a) && J(g);
4087    }
4088
4089    function g() {
4090      var a,
4091          b,
4092          c,
4093          d = n.length;
4094      if (d) for (J(g), b = K(), a = d; a--;) {
4095        c = n[a], c && c.render(b);
4096      }
4097    }
4098
4099    function i(b) {
4100      var c,
4101          d = a.inArray(b, n);
4102      d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c)));
4103    }
4104
4105    function j(a) {
4106      return Math.round(a * o) / o;
4107    }
4108
4109    function k(a, b, c) {
4110      return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2]));
4111    }
4112
4113    var l = {
4114      ease: m.ease[1],
4115      from: 0,
4116      to: 1
4117    };
4118    b.init = function (a) {
4119      this.duration = a.duration || 0, this.delay = a.delay || 0;
4120      var b = a.ease || l.ease;
4121      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;
4122      var c = a.from,
4123          d = a.to;
4124      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();
4125    }, b.play = function () {
4126      this.active || (this.start || (this.start = K()), this.active = !0, c(this));
4127    }, b.stop = function () {
4128      this.active && (this.active = !1, i(this));
4129    }, b.render = function (a) {
4130      var b,
4131          c = a - this.start;
4132
4133      if (this.delay) {
4134        if (c <= this.delay) return;
4135        c -= this.delay;
4136      }
4137
4138      if (c < this.duration) {
4139        var d = this.ease(c, 0, 1, this.duration);
4140        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);
4141      }
4142
4143      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();
4144    }, b.format = function (a, b) {
4145      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);
4146
4147      if (!this.unit) {
4148        var c = b.replace(r, ""),
4149            e = a.replace(r, "");
4150        c !== e && h("tween", b, a), this.unit = c;
4151      }
4152
4153      b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b;
4154    }, b.destroy = function () {
4155      this.stop(), this.context = null, this.ease = this.update = this.complete = f;
4156    };
4157    var n = [],
4158        o = 1e3;
4159  }),
4160      S = l(R, function (a) {
4161    a.init = function (a) {
4162      this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play();
4163    }, a.render = function (a) {
4164      var b = a - this.start;
4165      b < this.duration || (this.complete.call(this.context), this.destroy());
4166    };
4167  }),
4168      T = l(R, function (a, b) {
4169    a.init = function (a) {
4170      this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current;
4171      var b, c;
4172
4173      for (b in a.values) {
4174        c = a.values[b], this.current[b] !== c && this.tweens.push(new R({
4175          name: b,
4176          from: this.current[b],
4177          to: c,
4178          duration: a.duration,
4179          delay: a.delay,
4180          ease: a.ease,
4181          autoplay: !1
4182        }));
4183      }
4184
4185      this.play();
4186    }, a.render = function (a) {
4187      var b,
4188          c,
4189          d = this.tweens.length,
4190          e = !1;
4191
4192      for (b = d; b--;) {
4193        c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0);
4194      }
4195
4196      return e ? void (this.update && this.update.call(this.context)) : this.destroy();
4197    }, a.destroy = function () {
4198      if (b.destroy.call(this), this.tweens) {
4199        var a,
4200            c = this.tweens.length;
4201
4202        for (a = c; a--;) {
4203          this.tweens[a].destroy();
4204        }
4205
4206        this.tweens = null, this.current = null;
4207      }
4208    };
4209  }),
4210      U = b.config = {
4211    debug: !1,
4212    defaultUnit: "px",
4213    defaultAngle: "deg",
4214    keepInherited: !1,
4215    hideBackface: !1,
4216    perspective: "",
4217    fallback: !G.transition,
4218    agentTests: []
4219  };
4220
4221  b.fallback = function (a) {
4222    if (!G.transition) return U.fallback = !0;
4223    U.agentTests.push("(" + a + ")");
4224    var b = new RegExp(U.agentTests.join("|"), "i");
4225    U.fallback = b.test(navigator.userAgent);
4226  }, b.fallback("6.0.[2-5] Safari"), b.tween = function (a) {
4227    return new R(a);
4228  }, b.delay = function (a, b, c) {
4229    return new S({
4230      complete: b,
4231      duration: a,
4232      context: c
4233    });
4234  }, a.fn.tram = function (a) {
4235    return b.call(null, this, a);
4236  };
4237  var V = a.style,
4238      W = a.css,
4239      X = {
4240    transform: G.transform && G.transform.css
4241  },
4242      Y = {
4243    color: [O, u],
4244    background: [O, u, "background-color"],
4245    "outline-color": [O, u],
4246    "border-color": [O, u],
4247    "border-top-color": [O, u],
4248    "border-right-color": [O, u],
4249    "border-bottom-color": [O, u],
4250    "border-left-color": [O, u],
4251    "border-width": [N, v],
4252    "border-top-width": [N, v],
4253    "border-right-width": [N, v],
4254    "border-bottom-width": [N, v],
4255    "border-left-width": [N, v],
4256    "border-spacing": [N, v],
4257    "letter-spacing": [N, v],
4258    margin: [N, v],
4259    "margin-top": [N, v],
4260    "margin-right": [N, v],
4261    "margin-bottom": [N, v],
4262    "margin-left": [N, v],
4263    padding: [N, v],
4264    "padding-top": [N, v],
4265    "padding-right": [N, v],
4266    "padding-bottom": [N, v],
4267    "padding-left": [N, v],
4268    "outline-width": [N, v],
4269    opacity: [N, t],
4270    top: [N, w],
4271    right: [N, w],
4272    bottom: [N, w],
4273    left: [N, w],
4274    "font-size": [N, w],
4275    "text-indent": [N, w],
4276    "word-spacing": [N, w],
4277    width: [N, w],
4278    "min-width": [N, w],
4279    "max-width": [N, w],
4280    height: [N, w],
4281    "min-height": [N, w],
4282    "max-height": [N, w],
4283    "line-height": [N, y],
4284    "scroll-top": [P, t, "scrollTop"],
4285    "scroll-left": [P, t, "scrollLeft"]
4286  },
4287      Z = {};
4288  G.transform && (Y.transform = [Q], Z = {
4289    x: [w, "translateX"],
4290    y: [w, "translateY"],
4291    rotate: [x],
4292    rotateX: [x],
4293    rotateY: [x],
4294    scale: [t],
4295    scaleX: [t],
4296    scaleY: [t],
4297    skew: [x],
4298    skewX: [x],
4299    skewY: [x]
4300  }), G.transform && G.backface && (Z.z = [w, "translateZ"], Z.rotateZ = [x], Z.scaleZ = [t], Z.perspective = [v]);
4301  var $ = /ms/,
4302      _ = /s|\./;
4303  return a.tram = b;
4304}(window.jQuery);
4305
4306/***/ }),
4307/* 65 */
4308/***/ (function(module, exports, __webpack_require__) {
4309
4310"use strict";
4311// @wf-will-never-add-flow-to-this-file
4312
4313/* globals window, document */
4314
4315/* eslint-disable no-var */
4316// eslint-disable-next-line strict
4317
4318
4319var IXEvents = __webpack_require__(124);
4320
4321function dispatchCustomEvent(element, eventName) {
4322  var event = document.createEvent('CustomEvent');
4323  event.initCustomEvent(eventName, true, true, null);
4324  element.dispatchEvent(event);
4325}
4326/**
4327 * Webflow: IX Event triggers for other modules
4328 */
4329
4330
4331var $ = window.jQuery;
4332var api = {};
4333var namespace = '.w-ix';
4334var eventTriggers = {
4335  reset: function reset(i, el) {
4336    IXEvents.triggers.reset(i, el);
4337  },
4338  intro: function intro(i, el) {
4339    IXEvents.triggers.intro(i, el);
4340    dispatchCustomEvent(el, 'COMPONENT_ACTIVE');
4341  },
4342  outro: function outro(i, el) {
4343    IXEvents.triggers.outro(i, el);
4344    dispatchCustomEvent(el, 'COMPONENT_INACTIVE');
4345  }
4346};
4347api.triggers = {};
4348api.types = {
4349  INTRO: 'w-ix-intro' + namespace,
4350  OUTRO: 'w-ix-outro' + namespace
4351};
4352$.extend(api.triggers, eventTriggers);
4353module.exports = api;
4354
4355/***/ }),
4356/* 66 */
4357/***/ (function(module, exports, __webpack_require__) {
4358
4359var DESCRIPTORS = __webpack_require__(15);
4360var propertyIsEnumerableModule = __webpack_require__(131);
4361var createPropertyDescriptor = __webpack_require__(67);
4362var toIndexedObject = __webpack_require__(36);
4363var toPrimitive = __webpack_require__(68);
4364var has = __webpack_require__(17);
4365var IE8_DOM_DEFINE = __webpack_require__(69);
4366
4367var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
4368
4369// `Object.getOwnPropertyDescriptor` method
4370// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
4371exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
4372  O = toIndexedObject(O);
4373  P = toPrimitive(P, true);
4374  if (IE8_DOM_DEFINE) try {
4375    return nativeGetOwnPropertyDescriptor(O, P);
4376  } catch (error) { /* empty */ }
4377  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
4378};
4379
4380
4381/***/ }),
4382/* 67 */
4383/***/ (function(module, exports) {
4384
4385module.exports = function (bitmap, value) {
4386  return {
4387    enumerable: !(bitmap & 1),
4388    configurable: !(bitmap & 2),
4389    writable: !(bitmap & 4),
4390    value: value
4391  };
4392};
4393
4394
4395/***/ }),
4396/* 68 */
4397/***/ (function(module, exports, __webpack_require__) {
4398
4399var isObject = __webpack_require__(23);
4400
4401// `ToPrimitive` abstract operation
4402// https://tc39.github.io/ecma262/#sec-toprimitive
4403// instead of the ES6 spec version, we didn't implement @@toPrimitive case
4404// and the second argument - flag - preferred type is a string
4405module.exports = function (input, PREFERRED_STRING) {
4406  if (!isObject(input)) return input;
4407  var fn, val;
4408  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
4409  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
4410  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
4411  throw TypeError("Can't convert object to primitive value");
4412};
4413
4414
4415/***/ }),
4416/* 69 */
4417/***/ (function(module, exports, __webpack_require__) {
4418
4419var DESCRIPTORS = __webpack_require__(15);
4420var fails = __webpack_require__(16);
4421var createElement = __webpack_require__(70);
4422
4423// Thank's IE8 for his funny defineProperty
4424module.exports = !DESCRIPTORS && !fails(function () {
4425  return Object.defineProperty(createElement('div'), 'a', {
4426    get: function () { return 7; }
4427  }).a != 7;
4428});
4429
4430
4431/***/ }),
4432/* 70 */
4433/***/ (function(module, exports, __webpack_require__) {
4434
4435var global = __webpack_require__(3);
4436var isObject = __webpack_require__(23);
4437
4438var document = global.document;
4439// typeof document.createElement is 'object' in old IE
4440var EXISTS = isObject(document) && isObject(document.createElement);
4441
4442module.exports = function (it) {
4443  return EXISTS ? document.createElement(it) : {};
4444};
4445
4446
4447/***/ }),
4448/* 71 */
4449/***/ (function(module, exports, __webpack_require__) {
4450
4451var shared = __webpack_require__(25);
4452
4453module.exports = shared('native-function-to-string', Function.toString);
4454
4455
4456/***/ }),
4457/* 72 */
4458/***/ (function(module, exports, __webpack_require__) {
4459
4460var shared = __webpack_require__(25);
4461var uid = __webpack_require__(73);
4462
4463var keys = shared('keys');
4464
4465module.exports = function (key) {
4466  return keys[key] || (keys[key] = uid(key));
4467};
4468
4469
4470/***/ }),
4471/* 73 */
vendor: 5,651 bytes, lines 4472-4639
4472/***/ (function(module, exports) {
4473
4474var id = 0;
4475var postfix = Math.random();
4476
4477module.exports = function (key) {
4478  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
4479};
4480
4481
4482/***/ }),
4483/* 74 */
4484/***/ (function(module, exports, __webpack_require__) {
4485
4486var path = __webpack_require__(141);
4487var global = __webpack_require__(3);
4488
4489var aFunction = function (variable) {
4490  return typeof variable == 'function' ? variable : undefined;
4491};
4492
4493module.exports = function (namespace, method) {
4494  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
4495    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
4496};
4497
4498
4499/***/ }),
4500/* 75 */
4501/***/ (function(module, exports, __webpack_require__) {
4502
4503var has = __webpack_require__(17);
4504var toIndexedObject = __webpack_require__(36);
4505var indexOf = __webpack_require__(76).indexOf;
4506var hiddenKeys = __webpack_require__(39);
4507
4508module.exports = function (object, names) {
4509  var O = toIndexedObject(object);
4510  var i = 0;
4511  var result = [];
4512  var key;
4513  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
4514  // Don't enum bug & hidden keys
4515  while (names.length > i) if (has(O, key = names[i++])) {
4516    ~indexOf(result, key) || result.push(key);
4517  }
4518  return result;
4519};
4520
4521
4522/***/ }),
4523/* 76 */
4524/***/ (function(module, exports, __webpack_require__) {
4525
4526var toIndexedObject = __webpack_require__(36);
4527var toLength = __webpack_require__(143);
4528var toAbsoluteIndex = __webpack_require__(144);
4529
4530// `Array.prototype.{ indexOf, includes }` methods implementation
4531var createMethod = function (IS_INCLUDES) {
4532  return function ($this, el, fromIndex) {
4533    var O = toIndexedObject($this);
4534    var length = toLength(O.length);
4535    var index = toAbsoluteIndex(fromIndex, length);
4536    var value;
4537    // Array#includes uses SameValueZero equality algorithm
4538    // eslint-disable-next-line no-self-compare
4539    if (IS_INCLUDES && el != el) while (length > index) {
4540      value = O[index++];
4541      // eslint-disable-next-line no-self-compare
4542      if (value != value) return true;
4543    // Array#indexOf ignores holes, Array#includes - not
4544    } else for (;length > index; index++) {
4545      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
4546    } return !IS_INCLUDES && -1;
4547  };
4548};
4549
4550module.exports = {
4551  // `Array.prototype.includes` method
4552  // https://tc39.github.io/ecma262/#sec-array.prototype.includes
4553  includes: createMethod(true),
4554  // `Array.prototype.indexOf` method
4555  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
4556  indexOf: createMethod(false)
4557};
4558
4559
4560/***/ }),
4561/* 77 */
4562/***/ (function(module, exports) {
4563
4564var ceil = Math.ceil;
4565var floor = Math.floor;
4566
4567// `ToInteger` abstract operation
4568// https://tc39.github.io/ecma262/#sec-tointeger
4569module.exports = function (argument) {
4570  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
4571};
4572
4573
4574/***/ }),
4575/* 78 */
4576/***/ (function(module, __webpack_exports__, __webpack_require__) {
4577
4578"use strict";
4579__webpack_require__.r(__webpack_exports__);
4580/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41);
4581/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return _createStore__WEBPACK_IMPORTED_MODULE_0__["default"]; });
4582
4583/* harmony import */ var _combineReducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81);
4584/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return _combineReducers__WEBPACK_IMPORTED_MODULE_1__["default"]; });
4585
4586/* harmony import */ var _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83);
4587/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__["default"]; });
4588
4589/* harmony import */ var _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84);
4590/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__["default"]; });
4591
4592/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
4593/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _compose__WEBPACK_IMPORTED_MODULE_4__["default"]; });
4594
4595/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(82);
4596
4597
4598
4599
4600
4601
4602
4603/*
4604* This is a dummy function to check if the function name has been altered by minification.
4605* If the function has been minified and NODE_ENV !== 'production', warn the user.
4606*/
4607function isCrushed() {}
4608
4609if (false) {}
4610
4611
4612
4613/***/ }),
4614/* 79 */
4615/***/ (function(module, __webpack_exports__, __webpack_require__) {
4616
4617"use strict";
4618__webpack_require__.r(__webpack_exports__);
4619/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(157);
4620/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(162);
4621/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(164);
4622
4623
4624
4625
4626/** `Object#toString` result references. */
4627var objectTag = '[object Object]';
4628
4629/** Used for built-in method references. */
4630var funcProto = Function.prototype,
4631    objectProto = Object.prototype;
4632
4633/** Used to resolve the decompiled source of functions. */
4634var funcToString = funcProto.toString;
4635
4636/** Used to check objects for own properties. */
4637var hasOwnProperty = objectProto.hasOwnProperty;
4638
4639/** Used to infer the `Object` constructor. */
4640var objectCtorString = funcToString.call(Object);
4641
4642/**
4643 * Checks if `value` is a plain object, that is, an object created by the
4644 * `Object` constructor or one with a `[[Prototype]]` of `null`.
4645 *
4646 * @static
4647 * @memberOf _
4648 * @since 0.8.0
4649 * @category Lang
4650 * @param {*} value The value to check.
4651 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
4652 * @example
4653 *
4654 * function Foo() {
4655 *   this.a = 1;
4656 * }
4657 *
4658 * _.isPlainObject(new Foo);
4659 * // => false
4660 *
4661 * _.isPlainObject([1, 2, 3]);
4662 * // => false
4663 *
4664 * _.isPlainObject({ 'x': 0, 'y': 0 });
4665 * // => true
4666 *
4667 * _.isPlainObject(Object.create(null));
4668 * // => true
4669 */
4670function isPlainObject(value) {
4671  if (!Object(_isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value) || Object(_baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) != objectTag) {
4672    return false;
4673  }
4674  var proto = Object(_getPrototype_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value);
4675  if (proto === null) {
4676    return true;
4677  }
4678  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
4679  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
4680    funcToString.call(Ctor) == objectCtorString;
4681}
4682
4683/* harmony default export */ __webpack_exports__["default"] = (isPlainObject);
4684
4685
4686/***/ }),
4687/* 80 */
4688/***/ (function(module, __webpack_exports__, __webpack_require__) {
4689
4690"use strict";
4691__webpack_require__.r(__webpack_exports__);
4692/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(158);
4693
4694
4695/** Built-in value references. */
4696var Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__["default"].Symbol;
4697
4698/* harmony default export */ __webpack_exports__["default"] = (Symbol);
4699
4700
4701/***/ }),
4702/* 81 */
4703/***/ (function(module, __webpack_exports__, __webpack_require__) {
4704
4705"use strict";
4706__webpack_require__.r(__webpack_exports__);
4707/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return combineReducers; });
4708/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41);
4709/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79);
4710/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82);
4711
4712
4713
4714
4715function getUndefinedStateErrorMessage(key, action) {
4716  var actionType = action && action.type;
4717  var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
4718
4719  return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';
4720}
4721
4722function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unex
4722pectedKeyCache) {
4723  var reducerKeys = Object.keys(reducers);
4724  var argumentName = action && action.type === _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
4725
4726  if (reducerKeys.length === 0) {
4727    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
4728  }
4729
4730  if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(inputState)) {
4731    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('", "') + '"');
4732  }
4733
4734  var unexpectedKeys = Object.keys(inputState).filter(function (key) {
4735    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
4736  });
4737
4738  unexpectedKeys.forEach(function (key) {
4739    unexpectedKeyCache[key] = true;
4740  });
4741
4742  if (unexpectedKeys.length > 0) {
4743    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.');
4744  }
4745}
4746
4747function assertReducerSanity(reducers) {
4748  Object.keys(reducers).forEach(function (key) {
4749    var reducer = reducers[key];
4750    var initialState = reducer(undefined, { type: _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT });
4751
4752    if (typeof initialState === 'undefined') {
4753      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.');
4754    }
4755
4756    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');
4757    if (typeof reducer(undefined, { type: type }) === 'undefined') {
4758      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.');
4759    }
4760  });
4761}
4762
4763/**
4764 * Turns an object whose values are different reducer functions, into a single
4765 * reducer function. It will call every child reducer, and gather their results
4766 * into a single state object, whose keys correspond to the keys of the passed
4767 * reducer functions.
4768 *
4769 * @param {Object} reducers An object whose values correspond to different
4770 * reducer functions that need to be combined into one. One handy way to obtain
4771 * it is to use ES6 `import * as reducers` syntax. The reducers may never return
4772 * undefined for any action. Instead, they should return their initial state
4773 * if the state passed to them was undefined, and the current state for any
4774 * unrecognized action.
4775 *
4776 * @returns {Function} A reducer function that invokes every reducer inside the
4777 * passed object, and builds a state object with the same shape.
4778 */
4779function combineReducers(reducers) {
4780  var reducerKeys = Object.keys(reducers);
4781  var finalReducers = {};
4782  for (var i = 0; i < reducerKeys.length; i++) {
4783    var key = reducerKeys[i];
4784
4785    if (false) {}
4786
4787    if (typeof reducers[key] === 'function') {
4788      finalReducers[key] = reducers[key];
4789    }
4790  }
4791  var finalReducerKeys = Object.keys(finalReducers);
4792
4793  if (false) { var unexpectedKeyCache; }
4794
4795  var sanityError;
4796  try {
4797    assertReducerSanity(finalReducers);
4798  } catch (e) {
4799    sanityError = e;
4800  }
4801
4802  return function combination() {
4803    var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
4804    var action = arguments[1];
4805
4806    if (sanityError) {
4807      throw sanityError;
4808    }
4809
4810    if (false) { var warningMessage; }
4811
4812    var hasChanged = false;
4813    var nextState = {};
4814    for (var i = 0; i < finalReducerKeys.length; i++) {
4815      var key = finalReducerKeys[i];
4816      var reducer = finalReducers[key];
4817      var previousStateForKey = state[key];
4818      var nextStateForKey = reducer(previousStateForKey, action);
4819      if (typeof nextStateForKey === 'undefined') {
4820        var errorMessage = getUndefinedStateErrorMessage(key, action);
4821        throw new Error(errorMessage);
4822      }
4823      nextState[key] = nextStateForKey;
4824      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
4825    }
4826    return hasChanged ? nextState : state;
4827  };
4828}
4829
4830/***/ }),
4831/* 82 */
4832/***/ (function(module, __webpack_exports__, __webpack_require__) {
4833
4834"use strict";
4835__webpack_require__.r(__webpack_exports__);
4836/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return warning; });
4837/**
4838 * Prints a warning in the console if it exists.
4839 *
4840 * @param {String} message The warning message.
4841 * @returns {void}
4842 */
4843function warning(message) {
4844  /* eslint-disable no-console */
4845  if (typeof console !== 'undefined' && typeof console.error === 'function') {
4846    console.error(message);
4847  }
4848  /* eslint-enable no-console */
4849  try {
4850    // This error was thrown as a convenience so that if you enable
4851    // "break on all exceptions" in your console,
4852    // it would pause the execution at this line.
4853    throw new Error(message);
4854    /* eslint-disable no-empty */
4855  } catch (e) {}
4856  /* eslint-enable no-empty */
4857}
4858
4859/***/ }),
4860/* 83 */
4861/***/ (function(module, __webpack_exports__, __webpack_require__) {
4862
4863"use strict";
4864__webpack_require__.r(__webpack_exports__);
4865/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return bindActionCreators; });
4866function bindActionCreator(actionCreator, dispatch) {
4867  return function () {
4868    return dispatch(actionCreator.apply(undefined, arguments));
4869  };
4870}
4871
4872/**
4873 * Turns an object whose values are action creators, into an object with the
4874 * same keys, but with every function wrapped into a `dispatch` call so they
4875 * may be invoked directly. This is just a convenience method, as you can call
4876 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
4877 *
4878 * For convenience, you can also pass a single function as the first argument,
4879 * and get a function in return.
4880 *
4881 * @param {Function|Object} actionCreators An object whose values are action
4882 * creator functions. One handy way to obtain it is to use ES6 `import * as`
4883 * syntax. You may also pass a single function.
4884 *
4885 * @param {Function} dispatch The `dispatch` function available on your Redux
4886 * store.
4887 *
4888 * @returns {Function|Object} The object mimicking the original object, but with
4889 * every action creator wrapped into the `dispatch` call. If you passed a
4890 * function as `actionCreators`, the return value will also be a single
4891 * function.
4892 */
4893function bindActionCreators(actionCreators, dispatch) {
4894  if (typeof actionCreators === 'function') {
4895    return bindActionCreator(actionCreators, dispatch);
4896  }
4897
4898  if (typeof actionCreators !== 'object' || actionCreators === null) {
4899    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"?');
4900  }
4901
4902  var keys = Object.keys(actionCreators);
4903  var boundActionCreators = {};
4904  for (var i = 0; i < keys.length; i++) {
4905    var key = keys[i];
4906    var actionCreator = actionCreators[key];
4907    if (typeof actionCreator === 'function') {
4908      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
4909    }
4910  }
4911  return boundActionCreators;
4912}
4913
4914/***/ }),
4915/* 84 */
4916/***/ (function(module, __webpack_exports__, __webpack_require__) {
4917
4918"use strict";
4919__webpack_require__.r(__webpack_exports__);
4920/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return applyMiddleware; });
4921/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
4922var _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; };
4923
4924
4925
4926/**
4927 * Creates a store enhancer that applies middleware to the dispatch method
4928 * of the Redux store. This is handy for a variety of tasks, such as expressing
4929 * asynchronous actions in a concise manner, or logging every action payload.
4930 *
4931 * See `redux-thunk` package as an example of the Redux middleware.
4932 *
4933 * Because middleware is potentially asynchronous, this should be the first
4934 * store enhancer in the composition chain.
4935 *
4936 * Note that each middleware will be given the `dispatch` and `getState` functions
4937 * as named arguments.
4938 *
4939 * @param {...Function} middlewares The middleware chain to be applied.
4940 * @returns {Function} A store enhancer applying the middleware.
4941 */
4942function applyMiddleware() {
4943  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
4944    middlewares[_key] = arguments[_key];
4945  }
4946
4947  return function (createStore) {
4948    return function (reducer, preloadedState, enhancer) {
4949      var store = createStore(reducer, preloadedState, enhancer);
4950      var _dispatch = store.dispatch;
4951      var chain = [];
4952
4953      var middlewareAPI = {
4954        getState: store.getState,
4955        dispatch: function dispatch(action) {
4956          return _dispatch(action);
4957        }
4958      };
4959      chain = middlewares.map(function (middleware) {
4960        return middleware(middlewareAPI);
4961      });
4962      _dispatch = _compose__WEBPACK_IMPORTED_MODULE_0__["default"].apply(undefined, chain)(store.dispatch);
4963
4964      return _extends({}, store, {
4965        dispatch: _dispatch
4966      });
4967    };
4968  };
4969}
4970
4971/***/ }),
4972/* 85 */
4973/***/ (function(module, exports, __webpack_require__) {
4974
4975var createFind = __webpack_require__(86),
4976    findIndex = __webpack_require__(242);
4977
4978/**
4979 * Iterates over elements of `collection`, returning the first element
4980 * `predicate` returns truthy for. The predicate is invoked with three
4981 * arguments: (value, index|key, collection).
4982 *
4983 * @static
4984 * @memberOf _
4985 * @since 0.1.0
4986 * @category Collection
4987 * @param {Array|Object} collection The collection to inspect.
4988 * @param {Function} [predicate=_.identity] The function invoked per iteration.
4989 * @param {number} [fromIndex=0] The index to search from.
4990 * @returns {*} Returns the matched element, else `undefined`.
4991 * @example
4992 *
4993 * var users = [
4994 *   { 'user': 'barney',  'age': 36, 'active': true },
4995 *   { 'user': 'fred',    'age': 40, 'active': false },
4996 *   { 'user': 'pebbles', 'age': 1,  'active': true }
4997 * ];
4998 *
4999 * _.find(users, function(o) { return o.age < 40; });
5000 * // => object for 'barney'
5001 *
5002 * // The `_.matches` iteratee shorthand.
5003 * _.find(users, { 'age': 1, 'active': true });
5004 * // => object for 'pebbles'
5005 *
5006 * // The `_.matchesProperty` iteratee shorthand.
5007 * _.find(users, ['active', false]);
5008 * // => object for 'fred'
5009 *
5010 * // The `_.property` iteratee shorthand.
5011 * _.find(users, 'active');
5012 * // => object for 'barney'
5013 */
5014var find = createFind(findIndex);
5015
5016module.exports = find;
5017
5018
5019/***/ }),
5020/* 86 */
5021/***/ (function(module, exports, __webpack_require__) {
5022
5023var baseIteratee = __webpack_require__(7),
5024    isArrayLike = __webpack_require__(12),
5025    keys = __webpack_require__(32);
5026
5027/**
5028 * Creates a `_.find` or `_.findLast` function.
5029 *
5030 * @private
5031 * @param {Function} findIndexFunc The function to find the collection index.
5032 * @returns {Function} Returns the new find function.
5033 */
5034function createFind(findIndexFunc) {
5035  return function(collection, predicate, fromIndex) {
5036    var iterable = Object(collection);
5037    if (!isArrayLike(collection)) {
5038      var iteratee = baseIteratee(predicate, 3);
5039      collection = keys(collection);
5040      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
5041    }
5042    var index = findIndexFunc(collection, predicate, fromIndex);
5043    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
5044  };
5045}
5046
5047module.exports = createFind;
5048
5049
5050/***/ }),
5051/* 87 */
5052/***/ (function(module, exports, __webpack_require__) {
5053
5054var ListCache = __webpack_require__(28),
5055    stackClear = __webpack_require__(184),
5056    stackDelete = __webpack_require__(185),
5057    stackGet = __webpack_require__(186),
5058    stackHas = __webpack_require__(187),
5059    stackSet = __webpack_require__(188);
5060
5061/**
5062 * Creates a stack cache object to store key-value pairs.
5063 *
5064 * @private
5065 * @constructor
5066 * @param {Array} [entries] The key-value pairs to cache.
5067 */
5068function Stack(entries) {
5069  var data = this.__data__ = new ListCache(entries);
5070  this.size = data.size;
5071}
5072
5073// Add methods to `Stack`.
5074Stack.prototype.clear = stackClear;
5075Stack.prototype['delete'] = stackDelete;
5076Stack.prototype.get = stackGet;
vendor: 3,424 bytes, lines 5077-5209
5077Stack.prototype.has = stackHas;
5078Stack.prototype.set = stackSet;
5079
5080module.exports = Stack;
5081
5082
5083/***/ }),
5084/* 88 */
5085/***/ (function(module, exports, __webpack_require__) {
5086
5087var baseGetTag = __webpack_require__(11),
5088    isObject = __webpack_require__(5);
5089
5090/** `Object#toString` result references. */
5091var asyncTag = '[object AsyncFunction]',
5092    funcTag = '[object Function]',
5093    genTag = '[object GeneratorFunction]',
5094    proxyTag = '[object Proxy]';
5095
5096/**
5097 * Checks if `value` is classified as a `Function` object.
5098 *
5099 * @static
5100 * @memberOf _
5101 * @since 0.1.0
5102 * @category Lang
5103 * @param {*} value The value to check.
5104 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
5105 * @example
5106 *
5107 * _.isFunction(_);
5108 * // => true
5109 *
5110 * _.isFunction(/abc/);
5111 * // => false
5112 */
5113function isFunction(value) {
5114  if (!isObject(value)) {
5115    return false;
5116  }
5117  // The use of `Object#toString` avoids issues with the `typeof` operator
5118  // in Safari 9 which returns 'object' for typed arrays and other constructors.
5119  var tag = baseGetTag(value);
5120  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
5121}
5122
5123module.exports = isFunction;
5124
5125
5126/***/ }),
5127/* 89 */
5128/***/ (function(module, exports, __webpack_require__) {
5129
5130/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
5131var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
5132
5133module.exports = freeGlobal;
5134
5135/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(22)))
5136
5137/***/ }),
5138/* 90 */
5139/***/ (function(module, exports) {
5140
5141/** Used for built-in method references. */
5142var funcProto = Function.prototype;
5143
5144/** Used to resolve the decompiled source of functions. */
5145var funcToString = funcProto.toString;
5146
5147/**
5148 * Converts `func` to its source code.
5149 *
5150 * @private
5151 * @param {Function} func The function to convert.
5152 * @returns {string} Returns the source code.
5153 */
5154function toSource(func) {
5155  if (func != null) {
5156    try {
5157      return funcToString.call(func);
5158    } catch (e) {}
5159    try {
5160      return (func + '');
5161    } catch (e) {}
5162  }
5163  return '';
5164}
5165
5166module.exports = toSource;
5167
5168
5169/***/ }),
5170/* 91 */
5171/***/ (function(module, exports, __webpack_require__) {
5172
5173var baseIsEqualDeep = __webpack_require__(207),
5174    isObjectLike = __webpack_require__(9);
5175
5176/**
5177 * The base implementation of `_.isEqual` which supports partial comparisons
5178 * and tracks traversed objects.
5179 *
5180 * @private
5181 * @param {*} value The value to compare.
5182 * @param {*} other The other value to compare.
5183 * @param {boolean} bitmask The bitmask flags.
5184 *  1 - Unordered comparison
5185 *  2 - Partial comparison
5186 * @param {Function} [customizer] The function to customize comparisons.
5187 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
5188 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
5189 */
5190function baseIsEqual(value, other, bitmask, customizer, stack) {
5191  if (value === other) {
5192    return true;
5193  }
5194  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
5195    return value !== value && other !== other;
5196  }
5197  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
5198}
5199
5200module.exports = baseIsEqual;
5201
5202
5203/***/ }),
5204/* 92 */
5205/***/ (function(module, exports, __webpack_require__) {
5206
5207var SetCache = __webpack_require__(208),
5208    arraySome = __webpack_require__(211),
5209    cacheHas = __webpack_require__(212
vendor: 2,558 bytes, lines 5209-5293
5209);
5210
5211/** Used to compose bitmasks for value comparisons. */
5212var COMPARE_PARTIAL_FLAG = 1,
5213    COMPARE_UNORDERED_FLAG = 2;
5214
5215/**
5216 * A specialized version of `baseIsEqualDeep` for arrays with support for
5217 * partial deep comparisons.
5218 *
5219 * @private
5220 * @param {Array} array The array to compare.
5221 * @param {Array} other The other array to compare.
5222 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5223 * @param {Function} customizer The function to customize comparisons.
5224 * @param {Function} equalFunc The function to determine equivalents of values.
5225 * @param {Object} stack Tracks traversed `array` and `other` objects.
5226 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
5227 */
5228function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
5229  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
5230      arrLength = array.length,
5231      othLength = other.length;
5232
5233  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
5234    return false;
5235  }
5236  // Check that cyclic values are equal.
5237  var arrStacked = stack.get(array);
5238  var othStacked = stack.get(other);
5239  if (arrStacked && othStacked) {
5240    return arrStacked == other && othStacked == array;
5241  }
5242  var index = -1,
5243      result = true,
5244      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
5245
5246  stack.set(array, other);
5247  stack.set(other, array);
5248
5249  // Ignore non-index properties.
5250  while (++index < arrLength) {
5251    var arrValue = array[index],
5252        othValue = other[index];
5253
5254    if (customizer) {
5255      var compared = isPartial
5256        ? customizer(othValue, arrValue, index, other, array, stack)
5257        : customizer(arrValue, othValue, index, array, other, stack);
5258    }
5259    if (compared !== undefined) {
5260      if (compared) {
5261        continue;
5262      }
5263      result = false;
5264      break;
5265    }
5266    // Recursively compare arrays (susceptible to call stack limits).
5267    if (seen) {
5268      if (!arraySome(other, function(othValue, othIndex) {
5269            if (!cacheHas(seen, othIndex) &&
5270                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
5271              return seen.push(othIndex);
5272            }
5273          })) {
5274        result = false;
5275        break;
5276      }
5277    } else if (!(
5278          arrValue === othValue ||
5279            equalFunc(arrValue, othValue, bitmask, customizer, stack)
5280        )) {
5281      result = false;
5282      break;
5283    }
5284  }
5285  stack['delete'](array);
5286  stack['delete'](other);
5287  return result;
5288}
5289
5290module.exports = equalArrays;
5291
5292
5293/***/ }),
vendor: 3,114 bytes, lines 5294-5411
5294/* 93 */
5295/***/ (function(module, exports, __webpack_require__) {
5296
5297var arrayPush = __webpack_require__(47),
5298    isArray = __webpack_require__(1);
5299
5300/**
5301 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
5302 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
5303 * symbols of `object`.
5304 *
5305 * @private
5306 * @param {Object} object The object to query.
5307 * @param {Function} keysFunc The function to get the keys of `object`.
5308 * @param {Function} symbolsFunc The function to get the symbols of `object`.
5309 * @returns {Array} Returns the array of property names and symbols.
5310 */
5311function baseGetAllKeys(object, keysFunc, symbolsFunc) {
5312  var result = keysFunc(object);
5313  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
5314}
5315
5316module.exports = baseGetAllKeys;
5317
5318
5319/***/ }),
5320/* 94 */
5321/***/ (function(module, exports, __webpack_require__) {
5322
5323var arrayFilter = __webpack_require__(219),
5324    stubArray = __webpack_require__(95);
5325
5326/** Used for built-in method references. */
5327var objectProto = Object.prototype;
5328
5329/** Built-in value references. */
5330var propertyIsEnumerable = objectProto.propertyIsEnumerable;
5331
5332/* Built-in method references for those with the same name as other `lodash` methods. */
5333var nativeGetSymbols = Object.getOwnPropertySymbols;
5334
5335/**
5336 * Creates an array of the own enumerable symbols of `object`.
5337 *
5338 * @private
5339 * @param {Object} object The object to query.
5340 * @returns {Array} Returns the array of symbols.
5341 */
5342var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
5343  if (object == null) {
5344    return [];
5345  }
5346  object = Object(object);
5347  return arrayFilter(nativeGetSymbols(object), function(symbol) {
5348    return propertyIsEnumerable.call(object, symbol);
5349  });
5350};
5351
5352module.exports = getSymbols;
5353
5354
5355/***/ }),
5356/* 95 */
5357/***/ (function(module, exports) {
5358
5359/**
5360 * This method returns a new empty array.
5361 *
5362 * @static
5363 * @memberOf _
5364 * @since 4.13.0
5365 * @category Util
5366 * @returns {Array} Returns the new empty array.
5367 * @example
5368 *
5369 * var arrays = _.times(2, _.stubArray);
5370 *
5371 * console.log(arrays);
5372 * // => [[], []]
5373 *
5374 * console.log(arrays[0] === arrays[1]);
5375 * // => false
5376 */
5377function stubArray() {
5378  return [];
5379}
5380
5381module.exports = stubArray;
5382
5383
5384/***/ }),
5385/* 96 */
5386/***/ (function(module, exports, __webpack_require__) {
5387
5388var baseTimes = __webpack_require__(220),
5389    isArguments = __webpack_require__(33),
5390    isArray = __webpack_require__(1),
5391    isBuffer = __webpack_require__(48),
5392    isIndex = __webpack_require__(49),
5393    isTypedArray = __webpack_require__(50);
5394
5395/** Used for built-in method references. */
5396var objectProto = Object.prototype;
5397
5398/** Used to check objects for own properties. */
5399var hasOwnProperty = objectProto.hasOwnProperty;
5400
5401/**
5402 * Creates an array of the enumerable property names of the array-like `value`.
5403 *
5404 * @private
5405 * @param {*} value The value to query.
5406 * @param {boolean} inherited Specify returning inherited property names.
5407 * @returns {Array} Returns the array of property names.
5408 */
5409function arrayLikeKeys(value, inherited) {
5410  var isArr = isArray(value),
5411      isArg = !isArr && isArguments(value),
vendor: 4,425 bytes, lines 5412-5596
5412      isBuff = !isArr && !isArg && isBuffer(value),
5413      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
5414      skipIndexes = isArr || isArg || isBuff || isType,
5415      result = skipIndexes ? baseTimes(value.length, String) : [],
5416      length = result.length;
5417
5418  for (var key in value) {
5419    if ((inherited || hasOwnProperty.call(value, key)) &&
5420        !(skipIndexes && (
5421           // Safari 9 has enumerable `arguments.length` in strict mode.
5422           key == 'length' ||
5423           // Node.js 0.10 has enumerable non-index properties on buffers.
5424           (isBuff && (key == 'offset' || key == 'parent')) ||
5425           // PhantomJS 2 has enumerable non-index properties on typed arrays.
5426           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
5427           // Skip index properties.
5428           isIndex(key, length)
5429        ))) {
5430      result.push(key);
5431    }
5432  }
5433  return result;
5434}
5435
5436module.exports = arrayLikeKeys;
5437
5438
5439/***/ }),
5440/* 97 */
5441/***/ (function(module, exports) {
5442
5443module.exports = function(module) {
5444	if (!module.webpackPolyfill) {
5445		module.deprecate = function() {};
5446		module.paths = [];
5447		// module.parent = undefined by default
5448		if (!module.children) module.children = [];
5449		Object.defineProperty(module, "loaded", {
5450			enumerable: true,
5451			get: function() {
5452				return module.l;
5453			}
5454		});
5455		Object.defineProperty(module, "id", {
5456			enumerable: true,
5457			get: function() {
5458				return module.i;
5459			}
5460		});
5461		module.webpackPolyfill = 1;
5462	}
5463	return module;
5464};
5465
5466
5467/***/ }),
5468/* 98 */
5469/***/ (function(module, exports) {
5470
5471/**
5472 * Creates a unary function that invokes `func` with its argument transformed.
5473 *
5474 * @private
5475 * @param {Function} func The function to wrap.
5476 * @param {Function} transform The argument transform.
5477 * @returns {Function} Returns the new function.
5478 */
5479function overArg(func, transform) {
5480  return function(arg) {
5481    return func(transform(arg));
5482  };
5483}
5484
5485module.exports = overArg;
5486
5487
5488/***/ }),
5489/* 99 */
5490/***/ (function(module, exports, __webpack_require__) {
5491
5492var getNative = __webpack_require__(8),
5493    root = __webpack_require__(4);
5494
5495/* Built-in method references that are verified to be native. */
5496var WeakMap = getNative(root, 'WeakMap');
5497
5498module.exports = WeakMap;
5499
5500
5501/***/ }),
5502/* 100 */
5503/***/ (function(module, exports, __webpack_require__) {
5504
5505var isObject = __webpack_require__(5);
5506
5507/**
5508 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
5509 *
5510 * @private
5511 * @param {*} value The value to check.
5512 * @returns {boolean} Returns `true` if `value` if suitable for strict
5513 *  equality comparisons, else `false`.
5514 */
5515function isStrictComparable(value) {
5516  return value === value && !isObject(value);
5517}
5518
5519module.exports = isStrictComparable;
5520
5521
5522/***/ }),
5523/* 101 */
5524/***/ (function(module, exports) {
5525
5526/**
5527 * A specialized version of `matchesProperty` for source values suitable
5528 * for strict equality comparisons, i.e. `===`.
5529 *
5530 * @private
5531 * @param {string} key The key of the property to get.
5532 * @param {*} srcValue The value to match.
5533 * @returns {Function} Returns the new spec function.
5534 */
5535function matchesStrictComparable(key, srcValue) {
5536  return function(object) {
5537    if (object == null) {
5538      return false;
5539    }
5540    return object[key] === srcValue &&
5541      (srcValue !== undefined || (key in Object(object)));
5542  };
5543}
5544
5545module.exports = matchesStrictComparable;
5546
5547
5548/***/ }),
5549/* 102 */
5550/***/ (function(module, exports) {
5551
5552/**
5553 * A specialized version of `_.map` for arrays without support for iteratee
5554 * shorthands.
5555 *
5556 * @private
5557 * @param {Array} [array] The array to iterate over.
5558 * @param {Function} iteratee The function invoked per iteration.
5559 * @returns {Array} Returns the new mapped array.
5560 */
5561function arrayMap(array, iteratee) {
5562  var index = -1,
5563      length = array == null ? 0 : array.length,
5564      result = Array(length);
5565
5566  while (++index < length) {
5567    result[index] = iteratee(array[index], index, array);
5568  }
5569  return result;
5570}
5571
5572module.exports = arrayMap;
5573
5574
5575/***/ }),
5576/* 103 */
5577/***/ (function(module, exports) {
5578
5579/**
5580 * The base implementation of `_.property` without support for deep paths.
5581 *
5582 * @private
5583 * @param {string} key The key of the property to get.
5584 * @returns {Function} Returns the new accessor function.
5585 */
5586function baseProperty(key) {
5587  return function(object) {
5588    return object == null ? undefined : object[key];
5589  };
5590}
5591
5592module.exports = baseProperty;
5593
5594
5595/***/ }),
5596/* 104 */
5597/***/ (function(module, exports) {
5598
5599/**
5600 * The base implementation of `_.findIndex` and `_.findLastIndex` without
5601 * support for iteratee shorthands.
5602 *
5603 * @private
5604 * @param {Array} array The array to inspect.
5605 * @param {Function} predicate The function invoked per iteration.
5606 * @param {number} fromIndex The index to search from.
5607 * @param {boolean} [fromRight] Specify iterating from right to left.
5608 * @returns {number} Returns the index of the matched value, else `-1`.
5609 */
5610function baseFindIndex(array, predicate, fromIndex, fromRight) {
5611  var length = array.length,
5612      index = fromIndex + (fromRight ? 1 : -1);
5613
5614  while ((fromRight ? index-- : ++index < length)) {
5615    if (predicate(array[index], index, array)) {
5616      return index;
5617    }
5618  }
5619  return -1;
5620}
5621
5622module.exports = baseFindIndex;
5623
5624
5625/***/ }),
5626/* 105 */
5627/***/ (function(module, exports, __webpack_require__) {
5628
5629var toFinite = __webpack_require__(243);
5630
5631/**
5632 * Converts `value` to an integer.
5633 *
5634 * **Note:** This method is loosely based on
5635 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
5636 *
5637 * @static
5638 * @memberOf _
5639 * @since 4.0.0
5640 * @category Lang
5641 * @param {*} value The value to convert.
5642 * @returns {number} Returns the converted integer.
5643 * @example
5644 *
5645 * _.toInteger(3.2);
5646 * // => 3
5647 *
5648 * _.toInteger(Number.MIN_VALUE);
5649 * // => 0
5650 *
5651 * _.toInteger(Infinity);
5652 * // => 1.7976931348623157e+308
5653 *
5654 * _.toInteger('3.2');
5655 * // => 3
5656 */
5657function toInteger(value) {
5658  var result = toFinite(value),
5659      remainder = result % 1;
5660
5661  return result === result ? (remainder ? result - remainder : result) : 0;
5662}
5663
5664module.exports = toInteger;
5665
5666
5667/***/ }),
5668/* 106 */
5669/***/ (function(module, exports, __webpack_require__) {
5670
5671"use strict";
5672
5673
5674var _interopRequireDefault = __webpack_require__(0);
5675
5676Object.defineProperty(exports, "__esModule", {
5677  value: true
5678});
5679exports.inQuad = inQuad;
5680exports.outQuad = outQuad;
5681exports.inOutQuad = inOutQuad;
5682exports.inCubic = inCubic;
5683exports.outCubic = outCubic;
5684exports.inOutCubic = inOutCubic;
5685exports.inQuart = inQuart;
5686exports.outQuart = outQuart;
5687exports.inOutQuart = inOutQuart;
5688exports.inQuint = inQuint;
5689exports.outQuint = outQuint;
5690exports.inOutQuint = inOutQuint;
5691exports.inSine = inSine;
5692exports.outSine = outSine;
5693exports.inOutSine = inOutSine;
5694exports.inExpo = inExpo;
5695exports.outExpo = outExpo;
5696exports.inOutExpo = inOutExpo;
5697exports.inCirc = inCirc;
5698exports.outCirc = outCirc;
5699exports.inOutCirc = inOutCirc;
5700exports.outBounce = outBounce;
5701exports.inBack = inBack;
5702exports.outBack = outBack;
5703exports.inOutBack = inOutBack;
5704exports.inElastic = inElastic;
5705exports.outElastic = outElastic;
5706exports.inOutElastic = inOutElastic;
5707exports.swingFromTo = swingFromTo;
5708exports.swingFrom = swingFrom;
5709exports.swingTo = swingTo;
5710exports.bounce = bounce;
5711exports.bouncePast = bouncePast;
5712exports.easeInOut = exports.easeOut = exports.easeIn = exports.ease = void 0;
5713
5714var _bezierEasing = _interopRequireDefault(__webpack_require__(107)); // Easing functions adapted from Thomas Fuchs & Jeremy Kahn
5715// Easing Equations (c) 2003 Robert Penner, BSD license
5716// https://raw.github.com/danro/easing-js/master/LICENSE
5717
5718
5719var magicSwing = 1.70158;
5720var ease = (0, _bezierEasing["default"])(0.25, 0.1, 0.25, 1.0);
5721exports.ease = ease;
5722var easeIn = (0, _bezierEasing["default"])(0.42, 0.0, 1.0, 1.0);
5723exports.easeIn = easeIn;
5724var easeOut = (0, _bezierEasing["default"])(0.0, 0.0, 0.58, 1.0);
5725exports.easeOut = easeOut;
5726var easeInOut = (0, _bezierEasing["default"])(0.42, 0.0, 0.58, 1.0);
5727exports.easeInOut = easeInOut;
5728
5729function inQuad(pos) {
5730  return Math.pow(pos, 2);
5731}
5732
5733function outQuad(pos) {
5734  return -(Math.pow(pos - 1, 2) - 1);
5735}
5736
5737function inOutQuad(pos) {
5738  if ((pos /= 0.5) < 1) {
5739    return 0.5 * Math.pow(pos, 2);
5740  }
5741
5742  return -0.5 * ((pos -= 2) * pos - 2);
5743}
5744
5745function inCubic(pos) {
5746  return Math.pow(pos, 3);
5747}
5748
5749function outCubic(pos) {
5750  return Math.pow(pos - 1, 3) + 1;
5751}
5752
5753function inOutCubic(pos) {
5754  if ((pos /= 0.5) < 1) {
5755    return 0.5 * Math.pow(pos, 3);
5756  }
5757
5758  return 0.5 * (Math.pow(pos - 2, 3) + 2);
5759}
5760
5761function inQuart(pos) {
5762  return Math.pow(pos, 4);
5763}
5764
5765function outQuart(pos) {
5766  return -(Math.pow(pos - 1, 4) - 1);
5767}
5768
5769function inOutQuart(pos) {
5770  if ((pos /= 0.5) < 1) {
5771    return 0.5 * Math.pow(pos, 4);
5772  }
5773
5774  return -0.5 * ((pos -= 2) * Math.pow(pos, 3) - 2);
5775}
5776
5777function inQuint(pos) {
5778  return Math.pow(pos, 5);
5779}
5780
5781function outQuint(pos) {
5782  return Math.pow(pos - 1, 5) + 1;
5783}
5784
5785function inOutQuint(pos) {
5786  if ((pos /= 0.5) < 1) {
5787    return 0.5 * Math.pow(pos, 5);
5788  }
5789
5790  return 0.5 * (Math.pow(pos - 2, 5) + 2);
5791}
5792
5793function inSine(pos) {
5794  return -Math.cos(pos * (Math.PI / 2)) + 1;
5795}
5796
5797function outSine(pos) {
5798  return Math.sin(pos * (Math.PI / 2));
5799}
5800
5801function inOutSine(pos) {
5802  return -0.5 * (Math.cos(Math.PI * pos) - 1);
5803}
5804
5805function inExpo(pos) {
5806  return pos === 0 ? 0 : Math.pow(2, 10 * (pos - 1));
5807}
5808
5809function outExpo(pos) {
5810  return pos === 1 ? 1 : -Math.pow(2, -10 * pos) + 1;
5811}
5812
5813function inOutExpo(pos) {
5814  if (pos === 0) {
5815    return 0;
5816  }
5817
5818  if (pos === 1) {
5819    return 1;
5820  }
5821
5822  if ((pos /= 0.5) < 1) {
5823    return 0.5 * Math.pow(2, 10 * (pos - 1));
5824  }
5825
5826  return 0.5 * (-Math.pow(2, -10 * --pos) + 2);
5827}
5828
5829function inCirc(pos) {
5830  return -(Math.sqrt(1 - pos * pos) - 1);
5831}
5832
5833function outCirc(pos) {
5834  return Math.sqrt(1 - Math.pow(pos - 1, 2));
5835}
5836
5837function inOutCirc(pos) {
5838  if ((pos /= 0.5) < 1) {
5839    return -0.5 * (Math.sqrt(1 - pos * pos) - 1);
5840  }
5841
5842  return 0.5 * (Math.sqrt(1 - (pos -= 2) * pos) + 1);
5843}
5844
5845function outBounce(pos) {
5846  if (pos < 1 / 2.75) {
5847    return 7.5625 * pos * pos;
5848  } else if (pos < 2 / 2.75) {
5849    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
5850  } else if (pos < 2.5 / 2.75) {
5851    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
5852  } else {
5853    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
5854  }
5855}
5856
5857function inBack(pos) {
5858  var s = magicSwing;
5859  return pos * pos * ((s + 1) * pos - s);
5860}
5861
5862function outBack(pos) {
5863  var s = magicSwing;
5864  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
5865}
5866
5867function inOutBack(pos) {
5868  var s = magicSwing;
5869
5870  if ((pos /= 0.5) < 1) {
5871    return 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s));
5872  }
5873
5874  return 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
5875}
5876
5877function inElastic(pos) {
5878  var s = magicSwing;
5879  var p = 0;
5880  var a = 1;
5881
5882  if (pos === 0) {
5883    return 0;
5884  }
5885
5886  if (pos === 1) {
5887    return 1;
5888  }
5889
5890  if (!p) {
5891    p = 0.3;
5892  }
5893
5894  if (a < 1) {
5895    a = 1;
5896    s = p / 4;
5897  } else {
5898    s = p / (2 * Math.PI) * Math.asin(1 / a);
5899  }
5900
5901  return -(a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
5902}
5903
5904function outElastic(pos) {
5905  var s = magicSwing;
5906  var p = 0;
5907  var a = 1;
5908
5909  if (pos === 0) {
5910    return 0;
5911  }
5912
5913  if (pos === 1) {
5914    return 1;
5915  }
5916
5917  if (!p) {
5918    p = 0.3;
5919  }
5920
5921  if (a < 1) {
5922    a = 1;
5923    s = p / 4;
5924  } else {
5925    s = p / (2 * Math.PI) * Math.asin(1 / a);
5926  }
5927
5928  return a * Math.pow(2, -10 * pos) * Math.sin((pos - s) * (2 * Math.PI) / p) + 1;
5929}
5930
5931function inOutElastic(pos) {
5932  var s = magicSwing;
5933  var p = 0;
5934  var a = 1;
5935
5936  if (pos === 0) {
5937    return 0;
5938  }
5939
5940  if ((pos /= 1 / 2) === 2) {
5941    return 1;
5942  }
5943
5944  if (!p) {
5945    p = 0.3 * 1.5;
5946  }
5947
5948  if (a < 1) {
5949    a = 1;
5950    s = p / 4;
5951  } else {
5952    s = p / (2 * Math.PI) * Math.asin(1 / a);
5953  }
5954
5955  if (pos < 1) {
5956    return -0.5 * (a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
5957  }
5958
5959  return a * Math.pow(2, -10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p) * 0.5 + 1;
5960}
5961
5962function swingFromTo(pos) {
5963  var s = magicSwing;
5964  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);
5965}
5966
5967function swingFrom(pos) {
5968  var s = magicSwing;
5969  return pos * pos * ((s + 1) * pos - s);
5970}
5971
5972function swingTo(pos) {
5973  var s = magicSwing;
5974  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
5975}
5976
5977function bounce(pos) {
5978  if (pos < 1 / 2.75) {
5979    return 7.5625 * pos * pos;
5980  } else if (pos < 2 / 2.75) {
5981    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
5982  } else if (pos < 2.5 / 2.75) {
5983    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
5984  } else {
5985    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
5986  }
5987}
5988
5989function bouncePast(pos) {
5990  if (pos < 1 / 2.75) {
5991    return 7.5625 * pos * pos;
5992  } else if (pos < 2 / 2.75) {
5993    return 2 - (7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75);
5994  } else if (pos < 2.5 / 2.75) {
5995    return 2 - (7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375);
5996  } else {
5997    return 2 - (7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375);
5998  }
5999}
6000
6001/***/ }),
6002/* 107 */
6003/***/ (function(module, exports) {
6004
6005/**
6006 * https://github.com/gre/bezier-easing
6007 * BezierEasing - use bezier curve for transition easing function
6008 * by Gaëtan Renaudeau 2014 - 2015 – MIT License
6009 */
6010
6011// These values are established by empiricism with tests (tradeoff: performance VS precision)
6012var NEWTON_ITERATIONS = 4;
6013var NEWTON_MIN_SLOPE = 0.001;
6014var SUBDIVISION_PRECISION = 0.0000001;
6015var SUBDIVISION_MAX_ITERATIONS = 10;
6016
6017var kSplineTableSize = 11;
6018var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
6019
6020var float32ArraySupported = typeof Float32Array === 'function';
6021
6022function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
6023function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
6024function C (aA1)      { return 3.0 * aA1; }
6025
6026// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
6027function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
6028
6029// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
6030function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
6031
6032function binarySubdivide (aX, aA, aB, mX1, mX2) {
6033  var currentX, currentT, i = 0;
6034  do {
6035    currentT = aA + (aB - aA) / 2.0;
6036    currentX = calcBezier(currentT, mX1, mX2) - aX;
6037    if (currentX > 0.0) {
6038      aB = currentT;
6039    } else {
6040      aA = currentT;
6041    }
6042  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
6043  return currentT;
6044}
6045
6046function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
6047 for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
6048   var currentSlope = getSlope(aGuessT, mX1, mX2);
6049   if (currentSlope === 0.0) {
6050     return aGuessT;
6051   }
6052   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
6053   aGuessT -= currentX / currentSlope;
6054 }
6055 return aGuessT;
6056}
6057
6058module.exports = function bezier (mX1, mY1, mX2, mY2) {
6059  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
6060    throw new Error('bezier x values must be in [0, 1] range');
6061  }
6062
6063  // Precompute samples table
6064  var sampleValues = float32ArraySupported ? new Float32Array(kS
6064plineTableSize) : new Array(kSplineTableSize);
6065  if (mX1 !== mY1 || mX2 !== mY2) {
6066    for (var i = 0; i < kSplineTableSize; ++i) {
6067      sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
6068    }
6069  }
6070
6071  function getTForX (aX) {
6072    var intervalStart = 0.0;
6073    var currentSample = 1;
6074    var lastSample = kSplineTableSize - 1;
6075
6076    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
6077      intervalStart += kSampleStepSize;
6078    }
6079    --currentSample;
6080
6081    // Interpolate to provide an initial guess for t
6082    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
6083    var guessForT = intervalStart + dist * kSampleStepSize;
6084
6085    var initialSlope = getSlope(guessForT, mX1, mX2);
6086    if (initialSlope >= NEWTON_MIN_SLOPE) {
6087      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
6088    } else if (initialSlope === 0.0) {
6089      return guessForT;
6090    } else {
6091      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
6092    }
6093  }
6094
6095  return function BezierEasing (x) {
6096    if (mX1 === mY1 && mX2 === mY2) {
6097      return x; // linear
6098    }
6099    // Because JavaScript number are imprecise, we should guarantee the extremes are right.
6100    if (x === 0) {
6101      return 0;
6102    }
6103    if (x === 1) {
6104      return 1;
6105    }
6106    return calcBezier(getTForX(x), mY1, mY2);
6107  };
6108};
6109
6110
6111/***/ }),
6112/* 108 */
6113/***/ (function(module, exports, __webpack_require__) {
6114
6115"use strict";
6116
6117
6118var _interopRequireDefault2 = __webpack_require__(0);
6119
6120var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(109));
6121
6122var _interopRequireDefault = __webpack_require__(0);
6123
6124var _interopRequireWildcard = __webpack_require__(14);
6125
6126Object.defineProperty(exports, "__esModule", {
6127  value: true
6128});
6129exports.optimizeFloat = optimizeFloat;
6130exports.createBezierEasing = createBezierEasing;
6131exports.applyEasing = applyEasing;
6132
6133var easings = _interopRequireWildcard(__webpack_require__(106));
6134
6135var _bezierEasing = _interopRequireDefault(__webpack_require__(107));
6136
6137function optimizeFloat(value) {
6138  var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
6139  var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
6140  var pow = Math.pow(base, digits);
6141
6142  var _float = Number(Math.round(value * pow) / pow);
6143
6144  return Math.abs(_float) > 0.0001 ? _float : 0;
6145}
6146
6147function createBezierEasing(easing) {
6148  return (0, _bezierEasing["default"]).apply(void 0, (0, _toConsumableArray2["default"])(easing));
6149}
6150
6151function applyEasing(easing, position, customEasingFn) {
6152  if (position === 0) {
6153    return 0;
6154  }
6155
6156  if (position === 1) {
6157    return 1;
6158  }
6159
6160  if (customEasingFn) {
6161    return optimizeFloat(position > 0 ? customEasingFn(position) : position);
6162  }
6163
6164  return optimizeFloat(position > 0 && easing && easings[easing] ? easings[easing](position) : position);
6165}
6166
6167/***/ }),
6168/* 109 */
6169/***/ (function(module, exports, __webpack_require__) {
6170
6171var arrayWithoutHoles = __webpack_require__(244);
6172
6173var iterableToArray = __webpack_require__(245);
6174
6175var nonIterableSpread = __webpack_require__(246);
6176
6177function _toConsumableArray(arr) {
6178  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
6179}
6180
6181module.exports = _toConsumableArray;
6182
6183/***/ }),
6184/* 110 */
6185/***/ (function(module, exports, __webpack_require__) {
6186
6187"use strict";
6188
6189
6190var _interopRequireDefault = __webpack_require__(0);
6191
6192var _defineProperty2 = _interopRequireDefault(__webpack_require__(26));
6193
6194Object.defineProperty(exports, "__esModule", {
6195  value: true
6196});
6197exports.isPluginType = isPluginType;
6198exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginDuration = exports.getPluginOrigin = exports.getPluginConfig = void 0;
6199
6200var _IX2LottieUtils = __webpack_require__(248);
6201
6202var _constants = __webpack_require__(2);
6203
6204var _IX2BrowserSupport = __webpack_require__(43); // eslint-disable-next-line webflow/module-top-level-imports, webflow/packages-must-be-defined
6205
6206
6207var pluginMethodMap = (0, _defineProperty2["default"])({}, _constants.ActionTypeConsts.PLUGIN_LOTTIE, {
6208  getConfig: _IX2LottieUtils.getPluginConfig,
6209  getOrigin: _IX2LottieUtils.getPluginOrigin,
6210  getDuration: _IX2LottieUtils.getPluginDuration,
6211  getDestination: _IX2LottieUtils.getPluginDestination,
6212  createInstance: _IX2LottieUtils.createPluginInstance,
6213  render: _IX2LottieUtils.renderPlugin,
6214  clear: _IX2LottieUtils.clearPlugin
6215});
6216
6217function isPluginType(actionTypeId) {
6218  return actionTypeId === _constants.ActionTypeConsts.PLUGIN_LOTTIE;
6219}
6220
6221var pluginMethod = function pluginMethod(methodName) {
6222  return function (actionTypeId) {
6223    if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
6224      // IX2 plugins require browser libs for now
6225      return function () {
6226        return null;
6227      };
6228    }
6229
6230    var plugin = pluginMethodMap[actionTypeId];
6231
6232    if (!plugin) {
6233      throw new Error("IX2 no plugin configured for: ".concat(actionTypeId));
6234    }
6235
6236    var method = plugin[methodName];
6237
6238    if (!method) {
6239      throw new Error("IX2 invalid plugin method: ".concat(methodName));
6240    }
6241
6242    return method;
6243  };
6244};
6245
6246var getPluginConfig = pluginMethod('getConfig');
6247exports.getPluginConfig = getPluginConfig;
6248var getPluginOrigin = pluginMethod('getOrigin');
6249exports.getPluginOrigin = getPluginOrigin;
6250var getPluginDuration = pluginMethod('getDuration');
6251exports.getPluginDuration = getPluginDuration;
6252var getPluginDestination = pluginMethod('getDestination');
6253exports.getPluginDestination = getPluginDestination;
6254var createPluginInstance = pluginMethod('createInstance');
6255exports.createPluginInstance = createPluginInstance;
6256var renderPlugin = pluginMethod('render');
6257exports.renderPlugin = renderPlugin;
6258var clearPlugin = pluginMethod('clear');
6259exports.clearPlugin = clearPlugin;
6260
6261/***/ }),
6262/* 111 */
6263/***/ (function(module, exports, __webpack_require__) {
6264
6265var baseForOwn = __webpack_require__(112),
6266    createBaseEach = __webpack_require__(255);
6267
6268/**
6269 * The base implementation of `_.forEach` without support for iteratee shorthands.
6270 *
6271 * @private
6272 * @param {Array|Object} collection The collection to iterate over.
6273 * @param {Function} iteratee The function invoked per iteration.
6274 * @returns {Array|Object} Returns `collection`.
6275 */
6276var baseEach = createBaseEach(baseForOwn);
6277
6278module.exports = baseEach;
6279
6280
6281/***/ }),
6282/* 112 */
6283/***/ (function(module, exports, __webpack_require__) {
6284
6285var baseFor = __webpack_require__(253),
6286    keys = __webpack_require__(32);
6287
6288/**
6289 * The base implementation of `_.forOwn` without support for iteratee shorthands.
6290 *
6291 * @private
6292 * @param {Object} object The object to iterate over.
6293 * @param {Function} iteratee The function invoked per iteration.
6294 * @returns {Object} Returns `object`.
6295 */
6296function baseForOwn(object, iteratee) {
6297  return object && baseFor(object, iteratee, keys);
6298}
6299
6300module.exports = baseForOwn;
6301
6302
6303/***/ }),
6304/* 113 */
6305/***/ (function(module, exports, __webpack_require__) {
6306
6307"use strict";
6308
6309
6310var _interopRequireDefault = __webpack_require__(259);
6311
6312exports.__esModule = true;
6313exports.default = void 0;
6314
6315var _shallowEqual = _interopRequireDefault(__webpack_require__(260));
6316
6317var _default = _shallowEqual.default;
6318exports.default = _default;
6319
6320/***/ }),
6321/* 114 */
6322/***/ (function(module, exports, __webpack_require__) {
6323
6324"use strict";
6325
6326
6327var _interopRequireDefault2 = __webpack_require__(0);
6328
6329var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(109));
6330
6331var _interopRequireWildcard = __webpack_require__(14);
6332
6333var _interopRequireDefault = __webpack_require__(0);
6334
6335Object.defineProperty(exports, "__esModule", {
6336  value: true
6337});
6338exports.observeRequests = observeRequests;
6339exports.startEngine = startEngine;
6340exports.stopEngine = stopEngine;
6341exports.stopAllActionGroups = stopAllActionGroups;
6342exports.stopActionGroup = stopActionGroup;
6343exports.startActionGroup = startActionGroup;
6344
6345var _extends2 = _interopRequireDefault(__webpack_require__(27));
6346
6347var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(263));
6348
6349var _find = _interopRequireDefault(__webpack_require__(85));
6350
6351var _get = _interopRequireDefault(__webpack_require__(55));
6352
6353var _size = _interopRequireDefault(__webpack_require__(264));
6354
6355var _omitBy = _interopRequireDefault(__webpack_require__(270));
6356
6357var _isEmpty = _interopRequireDefault(__webpack_require__(282));
6358
6359var _mapValues = _interopRequireDefault(__webpack_require__(283));
6360
6361var _forEach = _interopRequireDefault(__webpack_require__(284));
6362
6363var _throttle = _interopRequireDefault(__webpack_require__(287));
6364
6365var _shallowEqual = _interopRequireDefault(__webpack_require__(113));
6366
6367var _constants = __webpack_require__(2);
6368
6369var _shared = __webpack_require__(10);
6370
6371var _IX2EngineActions = __webpack_require__(60);
6372
6373var elementApi = _interopRequireWildcard(__webpack_require__(290));
6374
6375var _IX2VanillaEvents = _interopRequireDefault(__webpack_require__(291));
6376/* eslint-env browser */
6377
6378
6379var QuickEffectsIdList = Object.keys(_constants.QuickEffectIds);
6380
6381var isQuickEffect = function isQuickEffect(actionTypeId) {
6382  return QuickEffectsIdList.includes(actionTypeId);
6383};
6384
6385var _constants$IX2EngineC = _constants.IX2EngineConstants,
6386    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
6387    BOUNDARY_SELECTOR = _constants$IX2EngineC.BOUNDARY_SELECTOR,
6388    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
6389    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
6390    W_MOD_IX = _constants$IX2EngineC.W_MOD_IX;
6391var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
6392    getAffectedElements = _shared$IX2VanillaUti.getAffectedElements,
6393    getElementId = _shared$IX2VanillaUti.getElementId,
6394    getDestinationValues = _shared$IX2VanillaUti.getDestinationValues,
6395    observeStore = _shared$IX2VanillaUti.observeStore,
6396    getInstanceId = _shared$IX2VanillaUti.getInstanceId,
6397    renderHTMLElement = _shared$IX2VanillaUti.renderHTMLElement,
6398    clearAllStyles = _shared$IX2VanillaUti.clearAllStyles,
6399    getMaxDurationItemIndex = _shared$IX2VanillaUti.getMaxDurationItemIndex,
6400    getComputedStyle = _shared$IX2VanillaUti.getComputedStyle,
6401    getInstanceOrigin = _shared$IX2VanillaUti.getInstanceOrigin,
6402    reduceListToGroup = _shared$IX2VanillaUti.reduceListToGroup,
6403    shouldNamespaceEventParameter = _shared$IX2VanillaUti.shouldNamespaceEventParameter,
6404    getNamespacedParameterId = _shared$IX2VanillaUti.getNamespacedParameterId,
6405    shouldAllowMediaQuery = _shared$IX2VanillaUti.shouldAllowMediaQuery,
6406    cleanupHTMLElement = _shared$IX2VanillaUti.cleanupHTMLElement,
6407    stringifyTarget = _shared$IX2VanillaUti.stringifyTarget,
6408    mediaQueriesEqual = _shared$IX2VanillaUti.mediaQueriesEqual;
6409var _shared$IX2VanillaPlu = _shared.IX2VanillaPlugins,
6410    isPluginType = _shared$IX2VanillaPlu.isPluginType,
6411    createPluginInstance = _shared$IX2VanillaPlu.createPluginInstance,
6412    getPluginDuration = _shared$IX2VanillaPlu.getPluginDuration;
6413var ua = navigator.userAgent;
6414var IS_MOBILE_SAFARI = ua.match(/iPad/i) || ua.match(/iPhone/); // Keep throttled events at ~80fps to reduce reflows while maintaining render accuracy
6415
6416var THROTTLED_EVENT_WAIT = 12; // $FlowFixMe
6417
6418function observeRequests(store) {
6419  observeStore({
6420    store: store,
6421    select: function select(_ref) {
6422      var ixRequest = _ref.ixRequest;
6423      return ixRequest.preview;
6424    },
6425    onChange: handlePreviewRequest
6426  });
6427  observeStore({
6428    store: store,
6429    select: function select(_ref2) {
6430      var ixRequest = _ref2.ixRequest;
6431      return ixRequest.playback;
6432    },
6433    onChange: handlePlaybackRequest
6434  });
6435  observeStore({
6436    store: store,
6437    select: function select(_ref3) {
6438      var ixRequest = _ref3.ixRequest;
6439      return ixRequest.stop;
6440    },
6441    onChange: handleStopRequest
6442  });
6443  observeStore({
6444    store: store,
6445    select: function select(_ref4) {
6446      var ixRequest = _ref4.ixRequest;
6447      return ixRequest.clear;
6448    },
6449    onChange: handleClearRequest
6450  });
6451}
6452
6453function observeMediaQueryChange(store) {
6454  observeStore({
6455    store: store,
6456    select: function select(_ref5) {
6457      var ixSession = _ref5.ixSession;
6458      return ixSession.mediaQueryKey;
6459    },
6460    onChange: function onChange() {
6461      stopEngine(store);
6462      clearAllStyles({
6463        store: store,
6464        elementApi: elementApi
6465      });
6466      startEngine({
6467        store: store,
6468        allowEvents: true
6469      });
6470      dispatchPageUpdateEvent();
6471    }
6472  });
6473}
6474
6475function observeOneRenderTick(store, onTick) {
6476  var unsubscribe = observeStore({
6477    store: store,
6478    select: function select(_ref6) {
6479      var ixSession = _ref6.ixSession;
6480      return ixSession.tick;
6481    },
6482    onChange: function onChange(tick) {
6483      onTick(tick);
6484      unsubscribe();
6485    }
6486  });
6487}
6488
6489function handlePreviewRequest(_ref7, store) {
6490  var rawData = _ref7.rawData,
6491      defer = _ref7.defer;
6492
6493  var start = function start() {
6494    startEngine({
6495      store: store,
6496      rawData: rawData,
6497      allowEvents: true
6498    });
6499    dispatchPageUpdateEvent();
6500  };
6501
6502  defer ? setTimeout(start, 0) : start();
6503}
6504
6505function dispatchPageUpdateEvent() {
6506  document.dispatchEvent(new CustomEvent('IX2_PAGE_UPDATE'));
6507}
6508
6509function handlePlaybackRequest(playback, store) {
6510  var actionTypeId = playback.actionTypeId,
6511      actionListId = playback.actionListId,
6512      actionItemId = playback.actionItemId,
6513      eventId = playback.eventId,
6514      allowEvents = playback.allowEvents,
6515      immediate = playback.immediate,
6516      testManual = playback.testManual,
6517      _playback$verbose = playback.verbose,
6518      verbose = _playback$verbose === void 0 ? true : _playback$verbose;
6519  var rawData = playback.rawData;
6520
6521  if (actionListId && actionItemId && rawData && immediate) {
6522    var actionList = rawData.actionLists[actionListId];
6523
6524    if (actionList) {
6525      rawData = reduceListToGroup({
6526        actionList: actionList,
6527        actionItemId: actionItemId,
6528        rawData: rawData
6529      });
6530    }
6531  }
6532
6533  startEngine({
6534    store: store,
6535    rawData: rawData,
6536    allowEvents: allowEvents,
6537    testManual: testManual
6538  });
6539
6540  if (actionListId && actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(actionTypeId)) {
6541    stopActionGroup({
6542      store: store,
6543      actionListId: actionListId
6544    });
6545    renderInitialGroup({
6546      store: store,
6547      actionListId: actionListId,
6548      eventId: eventId
6549    });
6550    var started = startActionGroup({
6551      store: store,
6552      eventId: eventId,
6553      actionListId: actionListId,
6554      immediate: immediate,
6555      verbose: verbose
6556    });
6557
6558    if (verbose && started) {
6559      store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
6560        actionListId: actionListId,
6561        isPlaying: !immediate
6562      }));
6563    }
6564  }
6565}
6566
6567function handleStopRequest(_ref8, store) {
6568  var actionListId = _ref8.actionListId;
6569
6570  if (actionListId) {
6571    stopActionGroup({
6572      store: store,
6573      actionListId: actionListId
6574    });
6575  } else {
6576    stopAllActionGroups({
6577      store: store
6578    });
6579  }
6580
6581  stopEngine(store);
6582}
6583
6584function handleClearRequest(state, store) {
6585  stopEngine(store);
6586  clearAllStyles({
6587    store: store,
6588    elementApi: elementApi
6589  });
6590} // $FlowFixMe
6591
6592
6593function startEngine(_ref9) {
6594  var store = _ref9.store,
6595      rawData = _ref9.rawData,
6596      allowEvents = _ref9.allowEvents,
6597      testManual = _ref9.testManual;
6598
6599  var _store$getState = store.getState(),
6600      ixSession = _store$getState.ixSession;
6601
6602  if (rawData) {
6603    store.dispatch((0, _IX2EngineActions.rawDataImported)(rawData));
6604  }
6605
6606  if (!ixSession.active) {
6607    store.dispatch((0, _IX2EngineActions.sessionInitialized)({
6608      hasBoundaryNodes: Boolean(document.querySelector(BOUNDARY_SELECTOR))
6609    }));
6610
6611    if (allowEvents) {
6612      bindEvents(store);
6613      addDocumentClass();
6614
6615      if (store.getState().ixSession.hasDefinedMediaQueries) {
6616        observeMediaQueryChange(store);
6617      }
6618    }
6619
6620    store.dispatch((0, _IX2EngineActions.sessionStarted)());
6621    startRenderLoop(store, testManual);
6622  }
6623}
6624
6625function addDocumentClass() {
6626  var _document = document,
6627      documentElement = _document.documentElement; // $FlowFixMe
6628
6629  if (documentElement.className.indexOf(W_MOD_IX) === -1) {
6630    // $FlowFixMe
6631    documentElement.className += " ".concat(W_MOD_IX);
6632  }
6633}
6634
6635function startRenderLoop(store, testManual) {
6636  var handleFrame = function handleFrame(now) {
6637    var _store$getState2 = store.getState(),
6638        ixSession = _store$getState2.ixSession,
6639        ixParameters = _store$getState2.ixParameters;
6640
6641    if (ixSession.active) {
6642      store.dispatch((0, _IX2EngineActions.animationFrameChanged)(now, ixParameters));
6643
6644      if (testManual) {
6645        observeOneRenderTick(store, handleFrame);
6646      } else {
6647        requestAnimationFrame(handleFrame);
6648      }
6649    }
6650  };
6651
6652  handleFrame(window.performance.now());
6653} // $FlowFixMe
6654
6655
6656function stopEngine(store) {
6657  var _store$getState3 = store.getState(),
6658      ixSession = _store$getState3.ixSession;
6659
6660  if (ixSession.active) {
6661    var eventListeners = ixSession.eventListeners;
6662    eventListeners.forEach(clearEventListener);
6663    store.dispatch((0, _IX2EngineActions.sessionStopped)());
6664  }
6665}
6666
6667function clearEventListener(_ref10) {
6668  var target = _ref10.target,
6669      listenerParams = _ref10.listenerParams;
6670  target.removeEventListener.apply(target, listenerParams);
6671}
6672
6673function createGroupInstances(_ref11) {
6674  var store = _ref11.store,
6675      eventStateKey = _ref11.eventStateKey,
6676      eventTarget = _ref11.eventTarget,
6677      eventId = _ref11.eventId,
6678      eventConfig = _ref11.eventConfig,
6679      actionListId = _ref11.actionListId,
6680      parameterGroup = _ref11.parameterGroup,
6681      smoothing = _ref11.smoothing,
6682      restingValue = _ref11.restingValue;
6683
6684  var _store$getState4 = store.getState(),
6685      ixData = _store$getState4.ixData,
6686      ixSession = _store$getState4.ixSession;
6687
6688  var events = ixData.events;
6689  var event = events[eventId];
6690  var eventTypeId = event.eventTypeId;
6691  var targetCache = {};
6692  var instanceActionGroups = {};
6693  var instanceConfigs = [];
6694  var continuousActionGroups = parameterGroup.continuousActionGroups;
6695  var parameterId = parameterGroup.id;
6696
6697  if (shouldNamespaceEventParameter(eventTypeId, eventConfig)) {
6698    parameterId = getNamespacedParameterId(eventStateKey, parameterId);
6699  } // Limit affected elements when event target is within a boundary node
6700
6701
6702  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
6703  continuousActionGroups.forEach(function (actionGroup) {
6704    var keyframe = actionGroup.keyframe,
6705        actionItems = actionGroup.actionItems;
6706    actionItems.forEach(function (actionItem) {
6707      var actionTypeId = actionItem.actionTypeId;
6708      var target = actionItem.config.target;
6709
6710      if (!target) {
6711        return;
6712      }
6713
6714      var elementRoot = target.boundaryMode ? eventElementRoot : null;
6715      var key = stringifyTarget(target) + COLON_DELIMITER + actionTypeId;
6716      instanceActionGroups[key] = appendActionItem(instanceActionGroups[key], keyframe, actionItem);
6717
6718      if (!targetCache[key]) {
6719        targetCache[key] = true;
6720        var config = actionItem.config;
6721        getAffectedElements({
6722          config: config,
6723          event: event,
6724          eventTarget: eventTarget,
6725          elementRoot: elementRoot,
6726          elementApi: elementApi
6727        }).forEach(function (element) {
6728          instanceConfigs.push({
6729            element: element,
6730            key: key
6731          });
6732        });
6733      }
6734    });
6735  });
6736  instanceConfigs.forEach(function (_ref12) {
6737    var element = _ref12.element,
6738        key = _ref12.key;
6739    var actionGroups = instanceActionGroups[key];
6740    var actionItem = (0, _get["default"])(actionGroups, "[0].actionItems[0]", {});
6741    var actionTypeId = actionItem.actionTypeId;
6742    var pluginInstance = isPluginType(actionTypeId) ? // $FlowFixMe
6743    createPluginInstance(actionTypeId)(element, actionItem) : null;
6744    var destination = getDestinationValues({
6745      element: element,
6746      actionItem: actionItem,
6747      elementApi: elementApi
6748    }, // $FlowFixMe
6749    pluginInstance);
6750    createInstance({
6751      store: store,
6752      element: element,
6753      eventId: eventId,
6754      actionListId: actionListId,
6755      actionItem: actionItem,
6756      destination: destination,
6757      continuous: true,
6758      parameterId: parameterId,
6759      actionGroups: actionGroups,
6760      smoothing: smoothing,
6761      restingValue: restingValue,
6762      pluginInstance: pluginInstance
6763    });
6764  });
6765}
6766
6767function appendActionItem() {
6768  var actionGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6769  var keyframe = arguments.length > 1 ? arguments[1] : undefined;
6770  var actionItem = arguments.length > 2 ? arguments[2] : undefined;
6771  var newActionGroups = (0, _toConsumableArray2["default"])(actionGroups);
6772  var groupIndex;
6773  newActionGroups.some(function (group, index) {
6774    if (group.keyframe === keyframe) {
6775      groupIndex = index;
6776      return true;
6777    }
6778
6779    return false;
6780  });
6781
6782  if (groupIndex == null) {
6783    groupIndex = newActionGroups.length;
6784    newActionGroups.push({
6785      keyframe: keyframe,
6786      actionItems: []
6787    });
6788  }
6789
6790  newActionGroups[groupIndex].actionItems.push(actionItem);
6791  return newActionGroups;
6792}
6793
6794function bindEvents(store) {
6795  var _store$getState5 = store.getState(),
6796      ixData = _store$getState5.ixData;
6797
6798  var eventTypeMap = ixData.eventTypeMap;
6799  updateViewportWidth(store);
6800  (0, _forEach["default"])(eventTypeMap, function (events, key) {
6801    var logic = _IX2VanillaEvents["default"][key];
6802
6803    if (!logic) {
6804      console.warn("IX2 event type not configured: ".concat(key));
6805      return;
6806    }
6807
6808    bindEventType({
6809      logic: logic,
6810      store: store,
6811      events: events
6812    });
6813  });
6814
6815  var _store$getState6 = store.getState(),
6816      ixSession = _store$getState6.ixSession;
6817
6818  if (ixSession.eventListeners.length) {
6819    bindResizeEvents(store);
6820  }
6821}
6822
6823var WINDOW_RESIZE_EVENTS = ['resize', 'orientationchange'];
6824
6825function bindResizeEvents(store) {
6826  var handleResize = function handleResize() {
6827    updateViewportWidth(store);
6828  };
6829
6830  WINDOW_RESIZE_EVENTS.forEach(function (type) {
6831    window.addEventListener(type, handleResize);
6832    store.dispatch((0, _IX2EngineActions.eventListenerAdded)(window, [type, handleResize]));
6833  });
6834  handleResize();
6835}
6836
6837function updateViewportWidth(store) {
6838  var _store$getState7 = store.getState(),
6839      ixSession = _store$getState7.ixSession,
6840      ixData = _store$getState7.ixData;
6841
6842  var width = window.innerWidth;
6843
6844  if (width !== ixSession.viewportWidth) {
6845    var mediaQueries = ixData.mediaQueries;
6846    store.dispatch((0, _IX2EngineActions.viewportWidthChanged)({
6847      width: width,
6848      mediaQueries: mediaQueries
6849    }));
6850  }
6851}
6852
6853var mapFoundValues = function mapFoundValues(object, iteratee) {
6854  return (0, _omitBy["default"])((0, _mapValues["default"])(object, iteratee), _isEmpty["default"]);
6855};
6856
6857var forEachEventTarget = function forEachEventTarget(eventTargets, eventCallback) {
6858  (0, _forEach["default"])(eventTargets, function (elements, eventId) {
6859    elements.forEach(function (element, index) {
6860      var eventStateKey = eventId + COLON_DELIMITER + index;
6861      eventCallback(element, eventId, eventStateKey);
6862    });
6863  });
6864};
6865
6866var getAffectedForEvent = function getAffectedForEvent(event) {
6867  var config = {
6868    target: event.target,
6869    targets: event.targets
6870  };
6871  return getAffectedElements({
6872    config: config,
6873    elementApi: elementApi
6874  });
6875};
6876
6877function bindEventType(_ref13) {
6878  var logic = _ref13.logic,
6879      store = _ref13.store,
6880      events = _ref13.events;
6881  injectBehaviorCSSFixes(events);
6882  var eventTypes = logic.types,
6883      eventHandler = logic.handler;
6884
6885  var _store$getState8 = store.getState(),
6886      ixData = _store$getState8.ixData;
6887
6888  var actionLists = ixData.actionLists;
6889  var eventTargets = mapFoundValues(events, getAffectedForEvent);
6890
6891  if (!(0, _size["default"])(eventTargets)) {
6892    return;
6893  }
6894
6895  (0, _forEach["default"])(eventTargets, function (elements, key) {
6896    var event = events[key];
6897    var eventAction = event.action,
6898        eventId = event.id,
6899        _event$mediaQueries = event.mediaQueries,
6900        mediaQueries = _event$mediaQueries === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries;
6901    var actionListId = eventAction.config.actionListId;
6902
6903    if (!mediaQueriesEqual(mediaQueries, ixData.mediaQueryKeys)) {
6904      store.dispatch((0, _IX2EngineActions.mediaQueriesDefined)());
6905    }
6906
6907    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
6908      var configs = Array.isArray(event.config) ? event.config : [event.config];
6909      configs.forEach(function (eventConfig) {
6910        var continuousParameterGroupId = eventConfig.continuousParameterGroupId;
6911        var paramGroups = (0, _get["default"])(actionLists, "".concat(actionListId, ".continuousParameterGroups"), []);
6912        var parameterGroup = (0, _find["default"])(paramGroups, function (_ref14) {
6913          var id = _ref14.id;
6914          return id === continuousParameterGroupId;
6915        });
6916        var smoothing = (eventConfig.smoothing || 0) / 100;
6917        var restingValue = (eventConfig.restingState || 0) / 100;
6918
6919        if (!parameterGroup) {
6920          return;
6921        }
6922
6923        elements.forEach(function (eventTarget, index) {
6924          var eventStateKey = eventId + COLON_DELIMITER + index;
6925          createGroupInstances({
6926            store: store,
6927            eventStateKey: eventStateKey,
6928            eventTarget: eventTarget,
6929            eventId: eventId,
6930            eventConfig: eventConfig,
6931            actionListId: actionListId,
6932            parameterGroup: parameterGroup,
6933            smoothing: smoothing,
6934            restingValue: restingValue
6935          });
6936        });
6937      });
6938    }
6939
6940    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(eventAction.actionTypeId)) {
6941      renderInitialGroup({
6942        store: store,
6943        actionListId: actionListId,
6944        eventId: eventId
6945      });
6946    }
6947  });
6948
6949  var handleEvent = function handleEvent(nativeEvent) {
6950    var _store$getState9 = store.getState(),
6951        ixSession = _store$getState9.ixSession;
6952
6953    forEachEventTarget(eventTargets, function (element, eventId, eventStateKey) {
6954      var event = events[eventId];
6955      var oldState = ixSession.eventState[eventStateKey];
6956      var eventAction = event.action,
6957          _event$mediaQueries2 = event.mediaQueries,
6958          mediaQueries = _event$mediaQueries2 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries2; // Bypass event handler if current media query is not listed in event config
6959
6960      if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
6961        return;
6962      }
6963
6964      var handleEventWithConfig = function handleEventWithConfig() {
6965        var eventConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6966        var newState = eventHandler({
6967          store: store,
6968          element: element,
6969          event: event,
6970          eventConfig: eventConfig,
6971          nativeEvent: nativeEvent,
6972          eventStateKey: eventStateKey
6973        }, oldState);
6974
6975        if (!(0, _shallowEqual["default"])(newState, oldState)) {
6976          store.dispatch((0, _IX2EngineActions.eventStateChanged)(eventStateKey, newState));
6977        }
6978      };
6979
6980      if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
6981        var configs = Array.isArray(event.config) ? event.config : [event.config];
6982        configs.forEach(handleEventWithConfig);
6983      } else {
6984        handleEventWithConfig();
6985      }
6986    });
6987  };
6988
6989  var handleEventThrottled = (0, _throttle["default"])(handleEvent, THROTTLED_EVENT_WAIT);
6990
6991  var addListeners = function addListeners(_ref15) {
6992    var _ref15$target = _ref15.target,
6993        target = _ref15$target === void 0 ? document : _ref15$target,
6994        types = _ref15.types,
6995        shouldThrottle = _ref15.throttle;
6996    types.split(' ').filter(Boolean).forEach(function (type) {
6997      var handlerFunc = shouldThrottle ? handleEventThrottled : handleEvent; // $FlowFixMe
6998
6999      target.addEventListener(type, handlerFunc);
7000      store.dispatch((0, _IX2EngineActions.eventListenerAdded)(target, [type, handlerFunc]));
7001    });
7002  };
7003
7004  if (Array.isArray(eventTypes)) {
7005    eventTypes.forEach(addListeners);
7006  } else if (typeof eventTypes === 'string') {
7007    addListeners(logic);
7008  }
7009}
7010/**
7011 * Injects CSS into the document to fix behavior issues across
7012 * different devices.
7013 */
7014
7015
7016function injectBehaviorCSSFixes(events) {
7017  if (!IS_MOBILE_SAFARI) {
7018    return;
7019  }
7020
7021  var injectedSelectors = {};
7022  var cssText = '';
7023
7024  for (var eventId in events) {
7025    var _events$eventId = events[eventId],
7026        eventTypeId = _events$eventId.eventTypeId,
7027        target = _events$eventId.target;
7028    var selector = elementApi.getQuerySelector(target); // $FlowFixMe
7029
7030    if (injectedSelectors[selector]) {
7031      continue;
7032    } // add a "cursor: pointer" style rule to ensure that CLICK events get fired for IOS devices
7033
7034
7035    if (eventTypeId === _constants.EventTypeConsts.MOUSE_CLICK || eventTypeId === _constants.EventTypeConsts.MOUSE_SECOND_CLICK) {
7036      // $FlowFixMe
7037      injectedSelectors[selector] = true;
7038      cssText += // $FlowFixMe
7039      selector + '{' + 'cursor: pointer;' + 'touch-action: manipulation;' + '}';
7040    }
7041  }
7042
7043  if (cssText) {
7044    var style = document.createElement('style');
7045    style.textContent = cssText; // $FlowFixMe
7046
7047    document.body.appendChild(style);
7048  }
7049}
7050
7051function renderInitialGroup(_ref16) {
7052  var store = _ref16.store,
7053      actionListId = _ref16.actionListId,
7054      eventId = _ref16.eventId;
7055
7056  var _store$getState10 = store.getState(),
7057      ixData = _store$getState10.ixData,
7058      ixSession = _store$getState10.ixSession;
7059
7060  var actionLists = ixData.actionLists,
7061      events = ixData.events;
7062  var event = events[eventId];
7063  var actionList = actionLists[actionListId];
7064
7065  if (actionList && actionList.useFirstGroupAsInitialState) {
7066    var initialStateItems = (0, _get["default"])(actionList, 'actionItemGroups[0].actionItems', []); // Bypass initial state render if current media query is not listed in event config
7067
7068    var mediaQueries = (0, _get["default"])(event, 'mediaQueries', ixData.mediaQueryKeys);
7069
7070    if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7071      return;
7072    }
7073
7074    initialStateItems.forEach(function (actionItem) {
7075      var _itemConfig$target;
7076
7077      var itemConfig = actionItem.config,
7078          actionTypeId = actionItem.actionTypeId;
7079      var config = // When useEventTarget is explicitly true, use event target/targets to query elements
7080      (itemConfig === null || itemConfig === void 0 ? void 0 : (_itemConfig$target = itemConfig.target) === null || _itemConfig$target === void 0 ? void 0 : _itemConfig$target.useEventTarget) === true ? {
7081        target: event.target,
7082        targets: event.targets
7083      } : itemConfig;
7084      var itemElements = getAffectedElements({
7085        config: config,
7086        event: event,
7087        elementApi: elementApi
7088      });
7089      var shouldUsePlugin = isPluginType(actionTypeId);
7090      itemElements.forEach(function (element) {
7091        var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7092        createPluginInstance(actionTypeId)(element, actionItem) : null;
7093        createInstance({
7094          destination: getDestinationValues({
7095            element: element,
7096            actionItem: actionItem,
7097            elementApi: elementApi
7098          }, // $FlowFixMe
7099          pluginInstance),
7100          immediate: true,
7101          store: store,
7102          element: element,
7103          eventId: eventId,
7104          actionItem: actionItem,
7105          actionListId: actionListId,
7106          pluginInstance: pluginInstance
7107        });
7108      });
7109    });
7110  }
7111} // $FlowFixMe
7112
7113
7114function stopAllActionGroups(_ref17) {
7115  var store = _ref17.store;
7116
7117  var _store$getState11 = store.getState(),
7118      ixInstances = _store$getState11.ixInstances;
7119
7120  (0, _forEach["default"])(ixInstances, function (instance) {
7121    if (!instance.continuous) {
7122      var actionListId = instance.actionListId,
7123          verbose = instance.verbose;
7124      removeInstance(instance, store);
7125
7126      if (verbose) {
7127        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7128          actionListId: actionListId,
7129          isPlaying: false
7130        }));
7131      }
7132    }
7133  });
7134} // $FlowFixMe
7135
7136
7137function stopActionGroup(_ref18) {
7138  var store = _ref18.store,
7139      eventId = _ref18.eventId,
7140      eventTarget = _ref18.eventTarget,
7141      eventStateKey = _ref18.eventStateKey,
7142      actionListId = _ref18.actionListId;
7143
7144  var _store$getState12 = store.getState(),
7145      ixInstances = _store$getState12.ixInstances,
7146      ixSession = _store$getState12.ixSession; // Check for element boundary before stopping engine instances
7147
7148
7149  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7150  (0, _forEach["default"])(ixInstances, function (instance) {
7151    var boundaryMode = (0, _get["default"])(instance, 'actionItem.config.target.boundaryMode'); // Validate event key if eventStateKey was provided, otherwise default to true
7152
7153    var validEventKey = eventStateKey ? instance.eventStateKey === eventStateKey : true; // Remove engine instances that match the required ids
7154
7155    if (instance.actionListId === actionListId && instance.eventId === eventId && validEventKey) {
7156      // Avoid removal when root boundary does not contain instance element
7157      if (eventElementRoot && boundaryMode && !elementApi.elementContains(eventElementRoot, instance.element)) {
7158        return;
7159      }
7160
7161      removeInstance(instance, store);
7162
7163      if (instance.verbose) {
7164        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7165          actionListId: actionListId,
7166          isPlaying: false
7167        }));
7168      }
7169    }
7170  });
7171} // $FlowFixMe
7172
7173
7174function startActionGroup(_ref19) {
7175  var store = _ref19.store,
7176      eventId = _ref19.eventId,
7177      eventTarget = _ref19.eventTarget,
7178      eventStateKey = _ref19.eventStateKey,
7179      actionListId = _ref19.actionListId,
7180      _ref19$groupIndex = _ref19.groupIndex,
7181      groupIndex = _ref19$groupIndex === void 0 ? 0 : _ref19$groupIndex,
7182      immediate = _ref19.immediate,
7183      verbose = _ref19.verbose;
7184
7185  var _event$action;
7186
7187  var _store$getState13 = store.getState(),
7188      ixData = _store$getState13.ixData,
7189      ixSession = _store$getState13.ixSession;
7190
7191  var events = ixData.events;
7192  var event = events[eventId] || {};
7193  var _event$mediaQueries3 = event.mediaQueries,
7194      mediaQueries = _event$mediaQueries3 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries3;
7195  var actionList = (0, _get["default"])(ixData, "actionLists.".concat(actionListId), {});
7196  var actionItemGroups = actionList.actionItemGroups,
7197      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; // Abort playback if no action groups
7198
7199  if (!actionItemGroups || !actionItemGroups.length) {
7200    return false;
7201  } // Reset to first group when event loop is configured
7202
7203
7204  if (groupIndex >= actionItemGroups.length && (0, _get["default"])(event, 'config.loop')) {
7205    groupIndex = 0;
7206  } // Skip initial state group during action list playback, as it should already be applied
7207
7208
7209  if (groupIndex === 0 && useFirstGroupAsInitialState) {
7210    groupIndex++;
7211  } // Identify first animated group and apply the initial QuickEffect delay
7212
7213
7214  var isFirstGroup = groupIndex === 0 || groupIndex === 1 && useFirstGroupAsInitialState;
7215  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
7216
7217  var actionItems = (0, _get["default"])(actionItemGroups, [groupIndex, 'actionItems'], []);
7218
7219  if (!actionItems.length) {
7220    return false;
7221  } // Abort playback if current media query is not listed in event config
7222
7223
7224  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7225    return false;
7226  } // Limit affected elements when event target is within a boundary node
7227
7228
7229  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7230  var carrierIndex = getMaxDurationItemIndex(actionItems);
7231  var groupStartResult = false;
7232  actionItems.forEach(function (actionItem, actionIndex) {
7233    var config = actionItem.config,
7234        actionTypeId = actionItem.actionTypeId;
7235    var shouldUsePlugin = isPluginType(actionTypeId);
7236    var target = config.target;
7237
7238    if (!target) {
7239      return;
7240    }
7241
7242    var elementRoot = target.boundaryMode ? eventElementRoot : null;
7243    var elements = getAffectedElements({
7244      config: config,
7245      event: event,
7246      eventTarget: eventTarget,
7247      elementRoot: elementRoot,
7248      elementApi: elementApi
7249    });
7250    elements.forEach(function (element, elementIndex) {
7251      var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7252      createPluginInstance(actionTypeId)(element, actionItem) : null;
7253      var pluginDuration = shouldUsePlugin ? // $FlowFixMe
7254      getPluginDuration(actionTypeId)(element, actionItem) : null;
7255      groupStartResult = true;
7256      var isCarrier = carrierIndex === actionIndex && elementIndex === 0;
7257      var computedStyle = getComputedStyle({
7258        element: element,
7259        actionItem: actionItem
7260      });
7261      var destination = getDestinationValues({
7262        element: element,
7263        actionItem: actionItem,
7264        elementApi: elementApi
7265      }, // $FlowFixMe
7266      pluginInstance);
7267      createInstance({
7268        store: store,
7269        element: element,
7270        actionItem: actionItem,
7271        eventId: eventId,
7272        eventTarget: eventTarget,
7273        eventStateKey: eventStateKey,
7274        actionListId: actionListId,
7275        groupIndex: groupIndex,
7276        isCarrier: isCarrier,
7277        computedStyle: computedStyle,
7278        destination: destination,
7279        immediate: immediate,
7280        verbose: verbose,
7281        pluginInstance: pluginInstance,
7282        pluginDuration: pluginDuration,
7283        instanceDelay: instanceDelay
7284      });
7285    });
7286  });
7287  return groupStartResult;
7288}
7289
7290function createInstance(options) {
7291  // $FlowFixMe
7292  var store = options.store,
7293      computedStyle = options.computedStyle,
7294      rest = (0, _objectWithoutPropertiesLoose2["default"])(options, ["store", "computedStyle"]); // $FlowFixMe
7295
7296  var autoStart = !rest.continuous; // $FlowFixMe
7297
7298  var element = rest.element,
7299      actionItem = rest.actionItem,
7300      immediate = rest.immediate,
7301      pluginInstance = rest.pluginInstance;
7302  var instanceId = getInstanceId();
7303
7304  var _store$getState14 = store.getState(),
7305      ixElements = _store$getState14.ixElements,
7306      ixSession = _store$getState14.ixSession;
7307
7308  var elementId = getElementId(ixElements, element);
7309
7310  var _ref20 = ixElements[elementId] || {},
7311      refState = _ref20.refState;
7312
7313  var refType = elementApi.getRefType(element);
7314  var origin = getInstanceOrigin(element, refState, computedStyle, actionItem, elementApi, // $FlowFixMe
7315  pluginInstance);
7316  store.dispatch((0, _IX2EngineActions.instanceAdded)((0, _extends2["default"])({
7317    instanceId: instanceId,
7318    elementId: elementId,
7319    origin: origin,
7320    refType: refType
7321  }, rest)));
7322  dispatchCustomEvent(document.body, 'ix2-animation-started', instanceId);
7323
7324  if (immediate) {
7325    renderImmediateInstance(store, instanceId);
7326    return;
7327  }
7328
7329  observeStore({
7330    store: store,
7331    select: function select(_ref21) {
7332      var ixInstances = _ref21.ixInstances;
7333      return ixInstances[instanceId];
7334    },
7335    onChange: handleInstanceChange
7336  });
7337
7338  if (autoStart) {
7339    store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, ixSession.tick));
7340  }
7341}
7342
7343function removeInstance(instance, store) {
7344  dispatchCustomEvent(document.body, 'ix2-animation-stopping', {
7345    instanceId: instance.id,
7346    state: store.getState()
7347  });
7348  var elementId = instance.elementId,
7349      actionItem = instance.actionItem;
7350
7351  var _store$getState15 = store.getState(),
7352      ixElements = _store$getState15.ixElements;
7353
7354  var _ref22 = ixElements[elementId] || {},
7355      ref = _ref22.ref,
7356      refType = _ref22.refType;
7357
7358  if (refType === HTML_ELEMENT) {
7359    cleanupHTMLElement(ref, actionItem, elementApi);
7360  }
7361
7362  store.dispatch((0, _IX2EngineActions.instanceRemoved)(instance.id));
7363}
7364
7365function dispatchCustomEvent(element, eventName, detail) {
7366  var event = document.createEvent('CustomEvent');
7367  event.initCustomEvent(eventName, true, true, detail); // $FlowFixMe
7368
7369  element.dispatchEvent(event);
7370}
7371
7372function renderImmediateInstance(store, instanceId) {
7373  var _store$getState16 = store.getState(),
7374      ixParameters = _store$getState16.ixParameters;
7375
7376  store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, 0));
7377  store.dispatch((0, _IX2EngineActions.animationFrameChanged)(performance.now(), ixParameters));
7378
7379  var _store$getState17 = store.getState(),
7380      ixInstances = _store$getState17.ixInstances;
7381
7382  handleInstanceChange(ixInstances[instanceId], store);
7383}
7384
7385function handleInstanceChange(instance, store) {
7386  var active = instance.active,
7387      continuous = instance.continuous,
7388      complete = instance.complete,
7389      elementId = instance.elementId,
7390      actionItem = instance.actionItem,
7391      actionTypeId = instance.actionTypeId,
7392      renderType = instance.renderType,
7393      current = instance.current,
7394      groupIndex = instance.groupIndex,
7395      eventId = instance.eventId,
7396      eventTarget = instance.eventTarget,
7397      eventStateKey = instance.eventStateKey,
7398      actionListId = instance.actionListId,
7399      isCarrier = instance.isCarrier,
7400      styleProp = instance.styleProp,
7401      verbose = instance.verbose,
7402      pluginInstance = instance.pluginInstance; // Bypass render if current media query is not listed in event config
7403
7404  var _store$getState18 = store.getState(),
7405      ixData = _store$getState18.ixData,
7406      ixSession = _store$getState18.ixSession;
7407
7408  var events = ixData.events;
7409  var event = events[eventId] || {};
7410  var _event$mediaQueries4 = event.mediaQueries,
7411      mediaQueries = _event$mediaQueries4 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries4;
7412
7413  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7414    return;
7415  }
7416
7417  if (continuous || active || complete) {
7418    if (current || renderType === RENDER_GENERAL && complete) {
7419      // Render current values to ref state and grab latest
7420      store.dispatch((0, _IX2EngineActions.elementStateChanged)(elementId, actionTypeId, current, actionItem));
7421
7422      var _store$getState19 = store.getState(),
7423          ixElements = _store$getState19.ixElements;
7424
7425      var _ref23 = ixElements[elementId] || {},
7426          ref = _ref23.ref,
7427          refType = _ref23.refType,
7428          refState = _ref23.refState;
7429
7430      var actionState = refState && refState[actionTypeId]; // Choose render based on ref type
7431
7432      switch (refType) {
7433        case HTML_ELEMENT:
7434          {
7435            renderHTMLElement(ref, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance);
7436            break;
7437          }
7438      }
7439    }
7440
7441    if (complete) {
7442      if (isCarrier) {
7443        var started = startActionGroup({
7444          store: store,
7445          eventId: eventId,
7446          eventTarget: eventTarget,
7447          eventStateKey: eventStateKey,
7448          actionListId: actionListId,
7449          groupIndex: groupIndex + 1,
7450          verbose: verbose
7451        });
7452
7453        if (verbose && !started) {
7454          store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7455            actionListId: actionListId,
7456            isPlaying: false
7457          }));
7458        }
7459      }
7460
7461      removeInstance(instance, store);
7462    }
7463  }
7464}
7465
7466/***/ }),
7467/* 115 */
7468/***/ (function(module, exports, __webpack_require__) {
7469
7470var defineProperty = __webpack_require__(116);
7471
7472/**
7473 * The base implementation of `assignValue` and `assignMergeValue` without
7474 * value checks.
7475 *
7476 * @private
7477 * @param {Object} object The object to modify.
7478 * @param {string} key The key of the property to assign.
7479 * @param {*} value The value to assign.
7480 */
7481function baseAssignValue(object, key, value) {
7482  if (key == '__proto__' && defineProperty) {
7483    defineProperty(object, key, {
7484      'configurable': true,
7485      'enumerable': true,
7486      'value': value,
7487      'writable': true
7488    });
7489  } else {
7490    object[key] = value;
7491  }
7492}
7493
7494module.exports = baseAssignValue;
7495
7496
7497/***/ }),
7498/* 116 */
7499/***/ (function(module, exports, __webpack_require__) {
7500
7501var getNative = __webpack_require__(8);
7502
7503var defineProperty = (function() {
7504  try {
7505    var func = getNative(Object, 'defineProperty');
7506    func({}, '', {});
7507    return func;
7508  } catch (e) {}
7509}());
7510
7511module.exports = defineProperty;
7512
7513
7514/***/ }),
7515/* 117 */
7516/***/ (function(module, exports, __webpack_require__) {
7517
7518var isObject = __webpack_require__(5);
7519
7520/** Built-in value references. */
7521var objectCreate = Object.create;
7522
7523/**
7524 * The base implementation of `_.create` without support for assigning
7525 * properties to the created object.
7526 *
7527 * @private
7528 * @param {Object} proto The object to inherit from.
7529 * @returns {Object} Returns the new object.
7530 */
7531var baseCreate = (function() {
7532  function object() {}
7533  return function(proto) {
7534    if (!isObject(proto)) {
7535      return {};
7536    }
7537    if (objectCreate) {
7538      return objectCreate(proto);
7539    }
7540    object.prototype = proto;
7541    var result = new object;
7542    object.prototype = undefined;
7543    return result;
7544  };
7545}());
7546
7547module.exports = baseCreate;
7548
7549
7550/***/ }),
7551/* 118 */
7552/***/ (function(module, exports, __webpack_require__) {
7553
7554var metaMap = __webpack_require__(304),
7555    noop = __webpack_require__(305);
7556
7557/**
7558 * Gets metadata for `func`.
7559 *
7560 * @private
7561 * @param {Function} func The function to query.
7562 * @returns {*} Returns the metadata for `func`.
7563 */
7564var getData = !metaMap ? noop : function(func) {
7565  return metaMap.get(func);
7566};
7567
7568module.exports = getData;
7569
7570
7571/***/ }),
7572/* 119 */
7573/***/ (function(module, exports, __webpack_require__) {
7574
7575var realNames = __webpack_require__(306);
7576
7577/** Used for built-in method references. */
7578var objectProto = Object.prototype;
7579
7580/** Used to check objects for own properties. */
7581var hasOwnProperty = objectProto.hasOwnProperty;
7582
7583/**
7584 * Gets the name of `func`.
7585 *
7586 * @private
7587 * @param {Function} func The function to query.
7588 * @returns {string} Returns the function name.
7589 */
7590function getFuncName(func) {
7591  var result = (func.name + ''),
7592      array = realNames[result],
7593      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
7594
7595  while (length--) {
7596    var data = array[length],
7597        otherFunc = data.func;
7598    if (otherFunc == null || otherFunc == func) {
7599      return data.name;
7600    }
7601  }
7602  return result;
7603}
7604
7605module.exports = getFuncName;
7606
7607
7608/***/ }),
7609/* 120 */
7610/***/ (function(module, exports, __webpack_require__) {
7611
7612__webpack_require__(121);
7613__webpack_require__(122);
7614__webpack_require__(65);
7615__webpack_require__(125);
7616__webpack_require__(313);
7617__webpack_require__(314);
7618__webpack_require__(315);
7619__webpack_require__(316);
7620module.exports = __webpack_require__(321);
7621
7622
7623/***/ }),
7624/* 121 */
7625/***/ (function(module, exports, __webpack_require__) {
7626
7627"use strict";
7628 // @wf-will-never-add-flow-to-this-file
7629
7630/*
7631 global
7632 window, document, Event
7633*/
7634
7635/*----------------------------------------
7636 * objectFitPolyfill 2.3.0
7637 *
7638 * Basic, no-frills version -
7639 * Defaults to object-fit: cover and object-position: 50% 50%
7640 *
7641 * Made by Constance Chen
7642 * Released under the MIT license
7643 *
7644 * https://github.com/constancecchen/object-fit-polyfill
7645 *--------------------------------------*/
7646
7647var _interopRequireDefault = __webpack_require__(0);
7648
7649var _typeof2 = _interopRequireDefault(__webpack_require__(13));
7650
7651(function () {
7652  // if the page is being rendered on the server, don't continue
7653  if (typeof window === 'undefined') return; // Workaround for Edge 16+, which only implemented object-fit for <img> tags
7654  // TODO: Keep an eye on Edge to determine which version has full final support
7655
7656  var edgeVersion = window.navigator.userAgent.match(/Edge\/(\d{2})\./);
7657  var edgePartialSupport = edgeVersion ? parseInt(edgeVersion[1], 10) >= 16 : false; // If the browser does support object-fit, we don't need to continue
7658
7659  var hasSupport = 'objectFit' in document.documentElement.style !== false;
7660
7661  if (hasSupport && !edgePartialSupport) {
7662    window.objectFitPolyfill = function () {
7663      return false;
7664    };
7665
7666    return;
7667  }
7668  /**
7669   * Check the container's parent element to make sure it will
7670   * correctly handle and clip absolutely positioned children
7671   *
7672   * @param {node} $container - parent element
7673   */
7674
7675
7676  var checkParentContainer = function checkParentContainer($container) {
7677    var styles = window.getComputedStyle($container, null);
7678    var position = styles.getPropertyValue('position');
7679    var overflow = styles.getPropertyValue('overflow');
7680    var display = styles.getPropertyValue('display');
7681
7682    if (!position || position === 'static') {
7683      $container.style.position = 'relative';
7684    }
7685
7686    if (overflow !== 'hidden') {
7687      $container.style.overflow = 'hidden';
7688    } // Guesstimating that people want the parent to act like full width/height wrapper here.
7689    // Mostly attempts to target <picture> elements, which default to inline.
7690
7691
7692    if (!display || display === 'inline') {
7693      $container.style.display = 'block';
7694    }
7695
7696    if ($container.clientHeight === 0) {
7697      $container.style.height = '100%';
7698    } // Add a CSS class hook, in case people need to override styles for any reason.
7699
7700
7701    if ($container.className.indexOf('object-fit-polyfill') === -1) {
7702      $container.className += ' object-fit-polyfill';
7703    }
7704  };
7705  /**
7706   * Check for pre-set max-width/height, min-width/height,
7707   * positioning, or margins, which can mess up image calculations
7708   *
7709   * @param {node} $media - img/video element
7710   */
7711
7712
7713  var checkMediaProperties = function checkMediaProperties($media) {
7714    var styles = window.getComputedStyle($media, null);
7715    var constraints = {
7716      'max-width': 'none',
7717      'max-height': 'none',
7718      'min-width': '0px',
7719      'min-height': '0px',
7720      top: 'auto',
7721      right: 'auto',
7722      bottom: 'auto',
7723      left: 'auto',
7724      'margin-top': '0px',
7725      'margin-right': '0px',
7726      'margin-bottom': '0px',
7727      'margin-left': '0px'
7728    };
7729
7730    for (var property in constraints) {
7731      var constraint = styles.getPropertyValue(property);
7732
7733      if (constraint !== constraints[property]) {
7734        $media.style[property] = constraints[property];
7735      }
7736    }
7737  };
7738  /**
7739   * Calculate & set object-fit
7740   *
7741   * @param {node} $media - img/video/picture element
7742   */
7743
7744
7745  var objectFit = function objectFit($media) {
7746    // If necessary, make the parent container work with absolutely positioned elements
7747    var $container = $media.parentNode;
7748    checkParentContainer($container); // Check for any pre-set CSS which could mess up image calculations
7749
7750    checkMediaProperties($media); // Mathematically figure out which side needs covering, and add CSS positioning & centering
7751
7752    $media.style.position = 'absolute';
7753    $media.style.height = '100%';
7754    $media.style.width = 'auto';
7755
7756    if ($media.clientWidth > $container.clientWidth) {
7757      $media.style.top = '0';
7758      $media.style.marginTop = '0';
7759      $media.style.left = '50%';
7760      $media.style.marginLeft = $media.clientWidth / -2 + 'px';
7761    } else {
7762      $media.style.width = '100%';
7763      $media.style.height = 'auto';
7764      $media.style.left = '0';
7765      $media.style.marginLeft = '0';
7766      $media.style.top = '50%';
7767      $media.style.marginTop = $media.clientHeight / -2 + 'px';
7768    }
7769  };
7770  /**
7771   * Initialize plugin
7772   *
7773   * @param {node} media - Optional specific DOM node(s) to be polyfilled
7774   */
7775
7776
7777  var objectFitPolyfill = function objectFitPolyfill(media) {
7778    if (typeof media === 'undefined' || media instanceof Event) {
7779      // If left blank, or a default event, all media on the page will be polyfilled.
7780      media = document.querySelectorAll('[data-object-fit]');
7781    } else if (media && media.nodeName) {
7782      // If it's a single node, wrap it in an array so it works.
7783      media = [media];
7784    } else if ((0, _typeof2["default"])(media) === 'object' && media.length && media[0].nodeName) {
7785      // If it's an array of DOM nodes (e.g. a jQuery selector), it's fine as-is.
7786      // eslint-disable-next-line no-self-assign
7787      media = media;
7788    } else {
7789      // Otherwise, if it's invalid or an incorrect type, return false to let people know.
7790      return false;
7791    }
7792
7793    for (var i = 0; i < media.length; i++) {
7794      if (!media[i].nodeName) continue;
7795      var mediaType = media[i].nodeName.toLowerCase();
7796
7797      if (mediaType === 'img') {
7798        if (edgePartialSupport) continue; // Edge supports object-fit for images (but nothing else), so no need to polyfill
7799
7800        if (media[i].complete) {
7801          objectFit(media[i]);
7802        } else {
7803          media[i].addEventListener('load', function () {
7804            objectFit(this);
7805          });
7806        }
7807      } else if (mediaType === 'video') {
7808        if (media[i].readyState > 0) {
7809          objectFit(media[i]);
7810        } else {
7811          media[i].addEventListener('loadedmetadata', function () {
7812            objectFit(this);
7813          });
7814        }
7815      } else {
7816        objectFit(media[i]);
7817      }
7818    }
7819
7820    return true;
7821  };
7822
7823  if (document.readyState === 'loading') {
7824    // Loading hasn't finished yet
7825    document.addEventListener('DOMContentLoaded', objectFitPolyfill);
7826  } else {
7827    // `DOMContentLoaded` has already fired
7828    objectFitPolyfill();
7829  }
7830
7831  window.addEventListener('resize', objectFitPolyfill);
7832  window.objectFitPolyfill = objectFitPolyfill;
7833})();
7834
7835/***/ }),
7836/* 122 */
7837/***/ (function(module, exports, __webpack_require__) {
7838
7839"use strict";
7840 // @wf-will-never-add-flow-to-this-file
7841
7842/* globals document, window, navigator */
7843
7844/* eslint-disable no-var */
7845
7846/**
7847 * Webflow: Brand pages on the subdomain
7848 */
7849
7850var Webflow = __webpack_require__(6);
7851
7852Webflow.define('brand', module.exports = function ($) {
7853  var api = {};
7854  var doc = document;
7855  var $html = $('html');
7856  var $body = $('body');
7857  var namespace = '.w-webflow-badge';
7858  var location = window.location;
7859  var isPhantom = /PhantomJS/i.test(navigator.userAgent);
7860  var fullScreenEvents = 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange';
7861  var brandElement; // -----------------------------------
7862  // Module methods
7863
7864  api.ready = function () {
7865    var shouldBrand = $html.attr('data-wf-status');
7866    var publishedDomain = $html.attr('data-wf-domain') || '';
7867
7868    if (/\.webflow\.io$/i.test(publishedDomain) && location.hostname !== publishedDomain) {
7869      shouldBrand = true;
7870    }
7871
7872    if (shouldBrand && !isPhantom) {
7873      brandElement = brandElement || createBadge();
7874      ensureBrand();
7875      setTimeout(ensureBrand, 500);
7876      $(doc).off(fullScreenEvents, onFullScreenChange).on(fullScreenEvents, onFullScreenChange);
7877    }
7878  };
7879
7880  function onFullScreenChange() {
7881    var fullScreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen || doc.msFullscreenElement || Boolean(doc.webkitFullscreenElement);
7882    $(brandElement).attr('style', fullScreen ? 'display: none !important;' : '');
7883  }
7884
7885  function createBadge() {
7886    var $brand = $('<a class="w-webflow-badge"></a>').attr('href', 'https://webflow.com?utm_campaign=brandjs');
7887    var $logoArt = $('<img>').attr('src', 'https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon.f67cd735e3.svg').attr('alt', '').css({
7888      marginRight: '8px',
7889      width: '16px'
7890    });
7891    var $logoText = $('<img>').attr('src', 'https://d1otoma47x30pg.cloudfront.net/img/webflow-badge-text.6faa6a38cd.svg').attr('alt', 'Made in Webflow');
7892    $brand.append($logoArt, $logoText);
7893    return $brand[0];
7894  }
7895
7896  function ensureBrand() {
7897    var found = $body.children(namespace);
7898    var match = found.length && found.get(0) === brandElement;
7899    var inEditor = Webflow.env('editor');
7900
7901    if (match) {
7902      // Remove brand when Editor is active
7903      if (inEditor) {
7904        found.remove();
7905      } // Exit early, brand is in place
7906
7907
7908      return;
7909    } // Remove any invalid brand elements
7910
7911
7912    if (found.length) {
7913      found.remove();
7914    } // Append the brand (unless Editor is active)
7915
7916
7917    if (!inEditor) {
7918      $body.append(brandElement);
7919    }
7920  } // Export module
7921
7922
7923  return api;
7924});
7925
7926/***/ }),
7927/* 123 */
7928/***/ (function(module, exports, __webpack_require__) {
7929
7930"use strict";
7931 // @wf-will-never-add-flow-to-this-file
7932// Include tram for frame-throttling
7933
7934/* globals window */
7935
7936/* eslint-disable no-var */
7937
7938var $ = window.$;
7939var tram = __webpack_require__(64) && $.tram;
7940/*!
7941 * Webflow._ (aka) Underscore.js 1.6.0 (custom build)
7942 * _.each
7943 * _.map
7944 * _.find
7945 * _.filter
7946 * _.any
7947 * _.contains
7948 * _.delay
7949 * _.defer
7950 * _.throttle (webflow)
7951 * _.debounce
7952 * _.keys
7953 * _.has
7954 * _.now
7955 *
7956 * http://underscorejs.org
7957 * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7958 * Underscore may be freely distributed under the MIT license.
7959 * @license MIT
7960 */
7961
7962module.exports = function () {
7963  var _ = {}; // Current version.
7964
7965  _.VERSION = '1.6.0-Webflow'; // Establish the object that gets returned to break out of a loop iteration.
7966
7967  var breaker = {}; // Save bytes in the minified (but not gzipped) version:
7968
7969  /* eslint-disable one-var */
7970
7971  var ArrayProto = Array.prototype,
7972      ObjProto = Object.prototype,
7973      FuncProto = Function.prototype;
7974  /* eslint-enable one-var */
7975  // Create quick reference variables for speed access to core prototypes.
7976
7977  /* eslint-disable one-var, no-unused-vars */
7978
7979  var push = ArrayProto.push,
7980      slice = ArrayProto.slice,
7981      concat = ArrayProto.concat,
7982      toString = ObjProto.toString,
7983      hasOwnProperty = ObjProto.hasOwnProperty;
7984  /* eslint-enable one-var, no-unused-vars */
7985  // All **ECMAScript 5** native function implementations that we hope to use
7986  // are declared here.
7987
7988  /* eslint-disable one-var, no-unused-vars */
7989
7990  var nativeForEach = ArrayProto.forEach,
7991      nativeMap = ArrayProto.map,
7992      nativeReduce = ArrayProto.reduce,
7993      nativeReduceRight = ArrayProto.reduceRight,
7994      nativeFilter = ArrayProto.filter,
7995      nativeEvery = ArrayProto.every,
7996      nativeSome = ArrayProto.some,
7997      nativeIndexOf = ArrayProto.indexOf,
7998      nativeLastIndexOf = ArrayProto.lastIndexOf,
7999      nativeIsArray = Array.isArray,
8000      nativeKeys = Object.keys,
8001      nativeBind = FuncProto.bind;
8002  /* eslint-enable one-var, no-unused-vars */
8003  // Collection Functions
8004  // --------------------
8005  // The cornerstone, an `each` implementation, aka `forEach`.
8006  // Handles objects with the built-in `forEach`, arrays, and raw objects.
8007  // Delegates to **ECMAScript 5**'s native `forEach` if available.
8008
8009  var each = _.each = _.forEach = function (obj, iterator, context) {
8010    /* jshint shadow:true */
8011    if (obj == null) return obj;
8012
8013    if (nativeForEach && obj.forEach === nativeForEach) {
8014      obj.forEach(iterator, context); // eslint-disable-next-line no-implicit-coercion
8015    } else if (obj.length === +obj.length) {
8016      for (var i = 0, length = obj.length; i < length; i++) {
8017        if (iterator.call(context, obj[i], i, obj) === breaker) return;
8018      }
8019    } else {
8020      var keys = _.keys(obj); // eslint-disable-next-line no-redeclare
8021
8022
8023      for (var i = 0, length = keys.length; i < length; i++) {
8024        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
8025      }
8026    }
8027
8028    return obj;
8029  }; // Return the results of applying the iterator to each element.
8030  // Delegates to **ECMAScript 5**'s native `map` if available.
8031
8032
8033  _.map = _.collect = function (obj, iterator, context) {
8034    var results = [];
8035    if (obj == null) return results;
8036    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
8037    each(obj, function (value, index, list) {
8038      results.push(iterator.call(context, value, index, list));
8039    });
8040    return results;
8041  }; // Return the first value which passes a truth test. Aliased as `detect`.
8042
8043
8044  _.find = _.detect = function (obj, predicate, context) {
8045    var result;
8046    any(obj, function (value, index, list) {
8047      if (predicate.call(context, value, index, list)) {
8048        result = value;
8049        return true;
8050      }
8051    });
8052    return result;
8053  }; // Return all the elements that pass a truth test.
8054  // Delegates to **ECMAScript 5**'s native `filter` if available.
8055  // Aliased as `select`.
8056
8057
8058  _.filter = _.select = function (obj, predicate, context) {
8059    var results = [];
8060    if (obj == null) return results;
8061    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
8062    each(obj, function (value, index, list) {
8063      if (predicate.call(context, value, index, list)) results.push(value);
8064    });
8065    return results;
8066  }; // Determine if at least one element in the object matches a truth test.
8067  // Delegates to **ECMAScript 5**'s native `some` if available.
8068  // Aliased as `any`.
8069
8070
8071  var any = _.some = _.any = function (obj, predicate, context) {
8072    predicate || (predicate = _.identity);
8073    var result = false;
8074    if (obj == null) return result;
8075    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
8076    each(obj, function (value, index, list) {
8077      if (result || (result = predicate.call(context, value, index, list))) return breaker;
8078    });
8079    return !!result; // eslint-disable-line no-implicit-coercion
8080  }; // Determine if the array or object contains a given value (using `===`).
8081  // Aliased as `include`.
8082
8083
8084  _.contains = _.include = function (obj, target) {
8085    if (obj == null) return false;
8086    if (nativeIndexOf && obj.indexOf === nativeIndexOf) // eslint-disable-next-line eqeqeq
8087      return obj.indexOf(target) != -1;
8088    return any(obj, function (value) {
8089      return value === target;
8090    });
8091  }; // Function (ahem) Functions
8092  // --------------------
8093  // Delays a function for the given number of milliseconds, and then calls
8094  // it with the arguments supplied.
8095
8096
8097  _.delay = function (func, wait) {
8098    var args = slice.call(arguments, 2);
8099    return setTimeout(function () {
8100      return func.apply(null, args);
8101    }, wait);
8102  }; // Defers a function, scheduling it to run after the current call stack has
8103  // cleared.
8104
8105
8106  _.defer = function (func) {
8107    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
8108  }; // Returns a function, that, when invoked, will only be triggered once every
8109  // browser animation frame - using tram's requestAnimationFrame polyfill.
8110
8111
8112  _.throttle = function (func) {
8113    // eslint-disable-next-line one-var
8114    var wait, args, context;
8115    return function () {
8116      if (wait) return;
8117      wait = true;
8118      args = arguments;
8119      context = this;
8120      tram.frame(function () {
8121        wait = false;
8122        func.apply(context, args);
8123      });
8124    };
8125  }; // Returns a function, that, as long as it continues to be invoked, will not
8126  // be triggered. The function will be called after it stops being called for
8127  // N milliseconds. If `immediate` is passed, trigger the function on the
8128  // leading edge, instead of the trailing.
8129
8130
8131  _.debounce = function (func, wait, immediate) {
8132    // eslint-disable-next-line one-var
8133    var timeout, args, context, timestamp, result;
8134
8135    var later = function later() {
8136      var last = _.now() - timestamp;
8137
8138      if (last < wait) {
8139        timeout = setTimeout(later, wait - last);
8140      } else {
8141        timeout = null;
8142
8143        if (!immediate) {
8144          result = func.apply(context, args);
8145          context = args = null;
8146        }
8147      }
8148    };
8149
8150    return function () {
8151      context = this;
8152      args = arguments;
8153      timestamp = _.now();
8154      var callNow = immediate && !timeout;
8155
8156      if (!timeout) {
8157        timeout = setTimeout(later, wait);
8158      }
8159
8160      if (callNow) {
8161        result = func.apply(context, args);
8162        context = args = null;
8163      }
8164
8165      return result;
8166    };
8167  }; // Object Functions
8168  // ----------------
8169  // Fill in a given object with default properties.
8170
8171
8172  _.defaults = function (obj) {
8173    if (!_.isObject(obj)) return obj;
8174
8175    for (var i = 1, length = arguments.length; i < length; i++) {
8176      var source = arguments[i];
8177
8178      for (var prop in source) {
8179        // eslint-disable-next-line no-void
8180        if (obj[prop] === void 0) obj[prop] = source[prop];
8181      }
8182    }
8183
8184    return obj;
8185  }; // Retrieve the names of an object's properties.
8186  // Delegates to **ECMAScript 5**'s native `Object.keys`
8187
8188
8189  _.keys = function (obj) {
8190    if (!_.isObject(obj)) return [];
8191    if (nativeKeys) return nativeKeys(obj);
8192    var keys = [];
8193
8194    for (var key in obj) {
8195      if (_.has(obj, key)) keys.push(key);
8196    }
8197
8198    return keys;
8199  }; // Shortcut function for checking if an object has a given property directly
8200  // on itself (in other words, not on a prototype).
8201
8202
8203  _.has = function (obj, key) {
8204    return hasOwnProperty.call(obj, key);
8205  }; // Is a given variable an object?
8206
8207
8208  _.isObject = function (obj) {
8209    return obj === Object(obj);
8210  }; // Utility Functions
8211  // -----------------
8212  // A (possibly faster) way to get the current timestamp as an integer.
8213
8214
8215  _.now = Date.now || function () {
8216    return new Date().getTime();
8217  }; // By default, Underscore uses ERB-style template delimiters, change the
8218  // following template settings to use alternative delimiters.
8219
8220
8221  _.templateSettings = {
8222    evaluate: /<%([\s\S]+?)%>/g,
8223    interpolate: /<%=([\s\S]+?)%>/g,
8224    escape: /<%-([\s\S]+?)%>/g
8225  }; // When customizing `templateSettings`, if you don't want to define an
8226  // interpolation, evaluation or escaping regex, we need one that is
8227  // guaranteed not to match.
8228
8229  var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a
8230  // string literal.
8231
8232  var escapes = {
8233    "'": "'",
8234    '\\': '\\',
8235    '\r': 'r',
8236    '\n': 'n',
8237    "\u2028": 'u2028',
8238    "\u2029": 'u2029'
8239  };
8240  var escaper = /\\|'|\r|\n|\u2028|\u2029/g;
8241
8242  var escapeChar = function escapeChar(match) {
8243    return '\\' + escapes[match];
8244  }; // JavaScript micro-templating, similar to John Resig's implementation.
8245  // Underscore templating handles arbitrary delimiters, preserves whitespace,
8246  // and correctly escapes quotes within interpolated code.
8247  // NB: `oldSettings` only exists for backwards compatibility.
8248
8249
8250  _.template = function (text, settings, oldSettings) {
8251    if (!settings && oldSettings) settings = oldSettings;
8252    settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation.
8253
8254    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.
8255
8256    var index = 0;
8257    var source = "__p+='";
8258    text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
8259      source += text.slice(index, offset).replace(escaper, escapeChar);
8260      index = offset + match.length;
8261
8262      if (escape) {
8263        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
8264      } else if (interpolate) {
8265        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
8266      } else if (evaluate) {
8267        source += "';\n" + evaluate + "\n__p+='";
8268      } // Adobe VMs need the match returned to produce the correct offest.
8269
8270
8271      return match;
8272    });
8273    source += "';\n"; // If a variable is not specified, place data values in local scope.
8274
8275    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
8276    source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n';
8277
8278    try {
8279      // eslint-disable-next-line no-new-func
8280      var render = new Function(settings.variable || 'obj', '_', source);
8281    } catch (e) {
8282      e.source = source;
8283      throw e;
8284    }
8285
8286    var template = function template(data) {
8287      return render.call(this, data, _);
8288    }; // Provide the compiled source as a convenience for precompilation.
8289
8290
8291    var argument = settings.variable || 'obj';
8292    template.source = 'function(' + argument + '){\n' + source + '}';
8293    return template;
8294  }; // Export underscore
8295
8296
8297  return _;
8298}();
8299/* eslint-enable */
8300
8301/***/ }),
8302/* 124 */
8303/***/ (function(module, exports, __webpack_require__) {
8304
8305"use strict";
8306// @wf-will-never-add-flow-to-this-file
8307
8308/* globals window */
8309
8310/* eslint-disable no-var */
8311
8312/**
8313 * Webflow: IX Event triggers for other modules
8314 */
8315// eslint-disable-next-line strict
8316
8317
8318var $ = window.jQuery;
8319var api = {};
8320var eventQueue = [];
8321var namespace = '.w-ix';
8322var eventTriggers = {
8323  reset: function reset(i, el) {
8324    el.__wf_intro = null;
8325  },
8326  intro: function intro(i, el) {
8327    if (el.__wf_intro) {
8328      return;
8329    }
8330
8331    el.__wf_intro = true;
8332    $(el).triggerHandler(api.types.INTRO);
8333  },
8334  outro: function outro(i, el) {
8335    if (!el.__wf_intro) {
8336      return;
8337    }
8338
8339    el.__wf_intro = null;
8340    $(el).triggerHandler(api.types.OUTRO);
8341  }
8342};
8343api.triggers = {};
8344api.types = {
8345  INTRO: 'w-ix-intro' + namespace,
8346  OUTRO: 'w-ix-outro' + namespace
8347}; // Trigger any events in queue + restore trigger methods
8348
8349api.init = function () {
8350  var count = eventQueue.length;
8351
8352  for (var i = 0; i < count; i++) {
8353    var memo = eventQueue[i];
8354    memo[0](0, memo[1]);
8355  }
8356
8357  eventQueue = [];
8358  $.extend(api.triggers, eventTriggers);
8359}; // Replace all triggers with async wrapper to queue events until init
8360
8361
8362api.async = function () {
8363  for (var key in eventTriggers) {
8364    var func = eventTriggers[key];
8365
8366    if (!eventTriggers.hasOwnProperty(key)) {
8367      continue;
8368    } // Replace trigger method with async wrapper
8369
8370
8371    api.triggers[key] = function (i, el) {
8372      eventQueue.push([func, el]);
8373    };
8374  }
8375}; // Default triggers to async queue
8376
8377
8378api.async();
8379module.exports = api;
8380
8381/***/ }),
8382/* 125 */
8383/***/ (function(module, exports, __webpack_require__) {
8384
8385"use strict";
8386 // @wf-will-never-add-flow-to-this-file
8387
8388/* eslint-disable no-var */
8389
8390/**
8391 * Webflow: Interactions 2
8392 */
8393
8394var Webflow = __webpack_require__(6);
8395
8396var ix2 = __webpack_require__(126);
8397
8398ix2.setEnv(Webflow.env);
8399Webflow.define('ix2', module.exports = function () {
8400  return ix2;
8401});
8402
8403/***/ }),
8404/* 126 */
8405/***/ (function(module, exports, __webpack_require__) {
8406
8407"use strict";
8408
8409
8410var _interopRequireWildcard = __webpack_require__(14);
8411
8412var _interopRequireDefault = __webpack_require__(0);
8413
8414Object.defineProperty(exports, "__esModule", {
8415  value: true
8416});
8417exports.setEnv = setEnv;
8418exports.init = init;
8419exports.destroy = destroy;
8420exports.actions = exports.store = void 0;
8421
8422__webpack_require__(127);
8423
8424var _redux = __webpack_require__(78);
8425
8426var _IX2Reducer = _interopRequireDefault(__webpack_require__(168));
8427
8428var _IX2VanillaEngine = __webpack_require__(114);
8429
8430var actions = _interopRequireWildcard(__webpack_require__(60));
8431
8432exports.actions = actions; // Array.includes needed for IE11 @packages/systems/ix2/shared/utils/quick-effects
8433
8434var store = (0, _redux.createStore)(_IX2Reducer["default"]);
8435exports.store = store;
8436
8437function setEnv(env) {
8438  if (env()) {
8439    (0, _IX2VanillaEngine.observeRequests)(store);
8440  }
8441}
8442
8443function init(rawData) {
8444  destroy();
8445  (0, _IX2VanillaEngine.startEngine)({
8446    store: store,
8447    rawData: rawData,
8448    allowEvents: true
8449  });
8450}
8451
8452function destroy() {
8453  (0, _IX2VanillaEngine.stopEngine)(store);
8454}
8455
8456/***/ }),
8457/* 127 */
8458/***/ (function(module, exports, __webpack_require__) {
8459
8460module.exports = __webpack_require__(128);
8461
8462
8463/***/ }),
8464/* 128 */
8465/***/ (function(module, exports, __webpack_require__) {
8466
8467__webpack_require__(129);
8468var entryUnbind = __webpack_require__(154);
8469
8470module.exports = entryUnbind('Array', 'includes');
8471
8472
8473/***/ }),
8474/* 129 */
8475/***/ (function(module, exports, __webpack_require__) {
8476
8477"use strict";
8478
8479var $ = __webpack_require__(130);
8480var $includes = __webpack_require__(76).includes;
8481var addToUnscopables = __webpack_require__(147);
8482
8483// `Array.prototype.includes` method
8484// https://tc39.github.io/ecma262/#sec-array.prototype.includes
8485$({ target: 'Array', proto: true }, {
8486  includes: function includes(el /* , fromIndex = 0 */) {
8487    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
8488  }
8489});
8490
8491// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
8492addToUnscopables('includes');
8493
8494
8495/***/ }),
8496/* 130 */
8497/***/ (function(module, exports, __webpack_require__) {
8498
8499var global = __webpack_require__(3);
8500var getOwnPropertyDescriptor = __webpack_require__(66).f;
8501var hide = __webpack_require__(18);
8502var redefine = __webpack_require__(135);
8503var setGlobal = __webpack_require__(38);
8504var copyConstructorProperties = __webpack_require__(139);
8505var isForced = __webpack_require__(146);
8506
8507/*
8508  options.target      - name of the target object
8509  options.global      - target is the global object
8510  options.stat        - export as static methods of target
8511  options.proto       - export as prototype methods of target
8512  options.real        - real prototype method for the `pure` version
8513  options.forced      - export even if the native feature is available
vendor: 4,140 bytes, lines 8514-8639
8514  options.bind        - bind methods to the target, required for the `pure` version
8515  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
8516  options.unsafe      - use the simple assignment of property instead of delete + defineProperty
8517  options.sham        - add a flag to not completely full polyfills
8518  options.enumerable  - export as enumerable property
8519  options.noTargetGet - prevent calling a getter on target
8520*/
8521module.exports = function (options, source) {
8522  var TARGET = options.target;
8523  var GLOBAL = options.global;
8524  var STATIC = options.stat;
8525  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
8526  if (GLOBAL) {
8527    target = global;
8528  } else if (STATIC) {
8529    target = global[TARGET] || setGlobal(TARGET, {});
8530  } else {
8531    target = (global[TARGET] || {}).prototype;
8532  }
8533  if (target) for (key in source) {
8534    sourceProperty = source[key];
8535    if (options.noTargetGet) {
8536      descriptor = getOwnPropertyDescriptor(target, key);
8537      targetProperty = descriptor && descriptor.value;
8538    } else targetProperty = target[key];
8539    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
8540    // contained in target
8541    if (!FORCED && targetProperty !== undefined) {
8542      if (typeof sourceProperty === typeof targetProperty) continue;
8543      copyConstructorProperties(sourceProperty, targetProperty);
8544    }
8545    // add a flag to not completely full polyfills
8546    if (options.sham || (targetProperty && targetProperty.sham)) {
8547      hide(sourceProperty, 'sham', true);
8548    }
8549    // extend global
8550    redefine(target, key, sourceProperty, options);
8551  }
8552};
8553
8554
8555/***/ }),
8556/* 131 */
8557/***/ (function(module, exports, __webpack_require__) {
8558
8559"use strict";
8560
8561var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
8562var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
8563
8564// Nashorn ~ JDK8 bug
8565var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
8566
8567// `Object.prototype.propertyIsEnumerable` method implementation
8568// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
8569exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
8570  var descriptor = getOwnPropertyDescriptor(this, V);
8571  return !!descriptor && descriptor.enumerable;
8572} : nativePropertyIsEnumerable;
8573
8574
8575/***/ }),
8576/* 132 */
8577/***/ (function(module, exports, __webpack_require__) {
8578
8579var fails = __webpack_require__(16);
8580var classof = __webpack_require__(133);
8581
8582var split = ''.split;
8583
8584// fallback for non-array-like ES3 and non-enumerable old V8 strings
8585module.exports = fails(function () {
8586  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
8587  // eslint-disable-next-line no-prototype-builtins
8588  return !Object('z').propertyIsEnumerable(0);
8589}) ? function (it) {
8590  return classof(it) == 'String' ? split.call(it, '') : Object(it);
8591} : Object;
8592
8593
8594/***/ }),
8595/* 133 */
8596/***/ (function(module, exports) {
8597
8598var toString = {}.toString;
8599
8600module.exports = function (it) {
8601  return toString.call(it).slice(8, -1);
8602};
8603
8604
8605/***/ }),
8606/* 134 */
8607/***/ (function(module, exports) {
8608
8609// `RequireObjectCoercible` abstract operation
8610// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
8611module.exports = function (it) {
8612  if (it == undefined) throw TypeError("Can't call method on " + it);
8613  return it;
8614};
8615
8616
8617/***/ }),
8618/* 135 */
8619/***/ (function(module, exports, __webpack_require__) {
8620
8621var global = __webpack_require__(3);
8622var shared = __webpack_require__(25);
8623var hide = __webpack_require__(18);
8624var has = __webpack_require__(17);
8625var setGlobal = __webpack_require__(38);
8626var nativeFunctionToString = __webpack_require__(71);
8627var InternalStateModule = __webpack_require__(137);
8628
8629var getInternalState = InternalStateModule.get;
8630var enforceInternalState = InternalStateModule.enforce;
8631var TEMPLATE = String(nativeFunctionToString).split('toString');
8632
8633shared('inspectSource', function (it) {
8634  return nativeFunctionToString.call(it);
8635});
8636
8637(module.exports = function (O, key, value, options) {
8638  var unsafe = options ? !!options.unsafe : false;
8639  var simple = options ? !!options.enumerable : false;
vendor: 10,923 bytes, lines 8640-9048
8640  var noTargetGet = options ? !!options.noTargetGet : false;
8641  if (typeof value == 'function') {
8642    if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);
8643    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
8644  }
8645  if (O === global) {
8646    if (simple) O[key] = value;
8647    else setGlobal(key, value);
8648    return;
8649  } else if (!unsafe) {
8650    delete O[key];
8651  } else if (!noTargetGet && O[key]) {
8652    simple = true;
8653  }
8654  if (simple) O[key] = value;
8655  else hide(O, key, value);
8656// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
8657})(Function.prototype, 'toString', function toString() {
8658  return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
8659});
8660
8661
8662/***/ }),
8663/* 136 */
8664/***/ (function(module, exports) {
8665
8666module.exports = false;
8667
8668
8669/***/ }),
8670/* 137 */
8671/***/ (function(module, exports, __webpack_require__) {
8672
8673var NATIVE_WEAK_MAP = __webpack_require__(138);
8674var global = __webpack_require__(3);
8675var isObject = __webpack_require__(23);
8676var hide = __webpack_require__(18);
8677var objectHas = __webpack_require__(17);
8678var sharedKey = __webpack_require__(72);
8679var hiddenKeys = __webpack_require__(39);
8680
8681var WeakMap = global.WeakMap;
8682var set, get, has;
8683
8684var enforce = function (it) {
8685  return has(it) ? get(it) : set(it, {});
8686};
8687
8688var getterFor = function (TYPE) {
8689  return function (it) {
8690    var state;
8691    if (!isObject(it) || (state = get(it)).type !== TYPE) {
8692      throw TypeError('Incompatible receiver, ' + TYPE + ' required');
8693    } return state;
8694  };
8695};
8696
8697if (NATIVE_WEAK_MAP) {
8698  var store = new WeakMap();
8699  var wmget = store.get;
8700  var wmhas = store.has;
8701  var wmset = store.set;
8702  set = function (it, metadata) {
8703    wmset.call(store, it, metadata);
8704    return metadata;
8705  };
8706  get = function (it) {
8707    return wmget.call(store, it) || {};
8708  };
8709  has = function (it) {
8710    return wmhas.call(store, it);
8711  };
8712} else {
8713  var STATE = sharedKey('state');
8714  hiddenKeys[STATE] = true;
8715  set = function (it, metadata) {
8716    hide(it, STATE, metadata);
8717    return metadata;
8718  };
8719  get = function (it) {
8720    return objectHas(it, STATE) ? it[STATE] : {};
8721  };
8722  has = function (it) {
8723    return objectHas(it, STATE);
8724  };
8725}
8726
8727module.exports = {
8728  set: set,
8729  get: get,
8730  has: has,
8731  enforce: enforce,
8732  getterFor: getterFor
8733};
8734
8735
8736/***/ }),
8737/* 138 */
8738/***/ (function(module, exports, __webpack_require__) {
8739
8740var global = __webpack_require__(3);
8741var nativeFunctionToString = __webpack_require__(71);
8742
8743var WeakMap = global.WeakMap;
8744
8745module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));
8746
8747
8748/***/ }),
8749/* 139 */
8750/***/ (function(module, exports, __webpack_require__) {
8751
8752var has = __webpack_require__(17);
8753var ownKeys = __webpack_require__(140);
8754var getOwnPropertyDescriptorModule = __webpack_require__(66);
8755var definePropertyModule = __webpack_require__(37);
8756
8757module.exports = function (target, source) {
8758  var keys = ownKeys(source);
8759  var defineProperty = definePropertyModule.f;
8760  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
8761  for (var i = 0; i < keys.length; i++) {
8762    var key = keys[i];
8763    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
8764  }
8765};
8766
8767
8768/***/ }),
8769/* 140 */
8770/***/ (function(module, exports, __webpack_require__) {
8771
8772var getBuiltIn = __webpack_require__(74);
8773var getOwnPropertyNamesModule = __webpack_require__(142);
8774var getOwnPropertySymbolsModule = __webpack_require__(145);
8775var anObject = __webpack_require__(24);
8776
8777// all object keys, includes non-enumerable and symbols
8778module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
8779  var keys = getOwnPropertyNamesModule.f(anObject(it));
8780  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
8781  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
8782};
8783
8784
8785/***/ }),
8786/* 141 */
8787/***/ (function(module, exports, __webpack_require__) {
8788
8789module.exports = __webpack_require__(3);
8790
8791
8792/***/ }),
8793/* 142 */
8794/***/ (function(module, exports, __webpack_require__) {
8795
8796var internalObjectKeys = __webpack_require__(75);
8797var enumBugKeys = __webpack_require__(40);
8798
8799var hiddenKeys = enumBugKeys.concat('length', 'prototype');
8800
8801// `Object.getOwnPropertyNames` method
8802// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
8803exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
8804  return internalObjectKeys(O, hiddenKeys);
8805};
8806
8807
8808/***/ }),
8809/* 143 */
8810/***/ (function(module, exports, __webpack_require__) {
8811
8812var toInteger = __webpack_require__(77);
8813
8814var min = Math.min;
8815
8816// `ToLength` abstract operation
8817// https://tc39.github.io/ecma262/#sec-tolength
8818module.exports = function (argument) {
8819  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
8820};
8821
8822
8823/***/ }),
8824/* 144 */
8825/***/ (function(module, exports, __webpack_require__) {
8826
8827var toInteger = __webpack_require__(77);
8828
8829var max = Math.max;
8830var min = Math.min;
8831
8832// Helper for a popular repeating case of the spec:
8833// Let integer be ? ToInteger(index).
8834// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).
8835module.exports = function (index, length) {
8836  var integer = toInteger(index);
8837  return integer < 0 ? max(integer + length, 0) : min(integer, length);
8838};
8839
8840
8841/***/ }),
8842/* 145 */
8843/***/ (function(module, exports) {
8844
8845exports.f = Object.getOwnPropertySymbols;
8846
8847
8848/***/ }),
8849/* 146 */
8850/***/ (function(module, exports, __webpack_require__) {
8851
8852var fails = __webpack_require__(16);
8853
8854var replacement = /#|\.prototype\./;
8855
8856var isForced = function (feature, detection) {
8857  var value = data[normalize(feature)];
8858  return value == POLYFILL ? true
8859    : value == NATIVE ? false
8860    : typeof detection == 'function' ? fails(detection)
8861    : !!detection;
8862};
8863
8864var normalize = isForced.normalize = function (string) {
8865  return String(string).replace(replacement, '.').toLowerCase();
8866};
8867
8868var data = isForced.data = {};
8869var NATIVE = isForced.NATIVE = 'N';
8870var POLYFILL = isForced.POLYFILL = 'P';
8871
8872module.exports = isForced;
8873
8874
8875/***/ }),
8876/* 147 */
8877/***/ (function(module, exports, __webpack_require__) {
8878
8879var wellKnownSymbol = __webpack_require__(148);
8880var create = __webpack_require__(150);
8881var hide = __webpack_require__(18);
8882
8883var UNSCOPABLES = wellKnownSymbol('unscopables');
8884var ArrayPrototype = Array.prototype;
8885
8886// Array.prototype[@@unscopables]
8887// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
8888if (ArrayPrototype[UNSCOPABLES] == undefined) {
8889  hide(ArrayPrototype, UNSCOPABLES, create(null));
8890}
8891
8892// add a key to Array.prototype[@@unscopables]
8893module.exports = function (key) {
8894  ArrayPrototype[UNSCOPABLES][key] = true;
8895};
8896
8897
8898/***/ }),
8899/* 148 */
8900/***/ (function(module, exports, __webpack_require__) {
8901
8902var global = __webpack_require__(3);
8903var shared = __webpack_require__(25);
8904var uid = __webpack_require__(73);
8905var NATIVE_SYMBOL = __webpack_require__(149);
8906
8907var Symbol = global.Symbol;
8908var store = shared('wks');
8909
8910module.exports = function (name) {
8911  return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]
8912    || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));
8913};
8914
8915
8916/***/ }),
8917/* 149 */
8918/***/ (function(module, exports, __webpack_require__) {
8919
8920var fails = __webpack_require__(16);
8921
8922module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
8923  // Chrome 38 Symbol has incorrect toString conversion
8924  // eslint-disable-next-line no-undef
8925  return !String(Symbol());
8926});
8927
8928
8929/***/ }),
8930/* 150 */
8931/***/ (function(module, exports, __webpack_require__) {
8932
8933var anObject = __webpack_require__(24);
8934var defineProperties = __webpack_require__(151);
8935var enumBugKeys = __webpack_require__(40);
8936var hiddenKeys = __webpack_require__(39);
8937var html = __webpack_require__(153);
8938var documentCreateElement = __webpack_require__(70);
8939var sharedKey = __webpack_require__(72);
8940var IE_PROTO = sharedKey('IE_PROTO');
8941
8942var PROTOTYPE = 'prototype';
8943var Empty = function () { /* empty */ };
8944
8945// Create object with fake `null` prototype: use iframe Object with cleared prototype
8946var createDict = function () {
8947  // Thrash, waste and sodomy: IE GC bug
8948  var iframe = documentCreateElement('iframe');
8949  var length = enumBugKeys.length;
8950  var lt = '<';
8951  var script = 'script';
8952  var gt = '>';
8953  var js = 'java' + script + ':';
8954  var iframeDocument;
8955  iframe.style.display = 'none';
8956  html.appendChild(iframe);
8957  iframe.src = String(js);
8958  iframeDocument = iframe.contentWindow.document;
8959  iframeDocument.open();
8960  iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);
8961  iframeDocument.close();
8962  createDict = iframeDocument.F;
8963  while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];
8964  return createDict();
8965};
8966
8967// `Object.create` method
8968// https://tc39.github.io/ecma262/#sec-object.create
8969module.exports = Object.create || function create(O, Properties) {
8970  var result;
8971  if (O !== null) {
8972    Empty[PROTOTYPE] = anObject(O);
8973    result = new Empty();
8974    Empty[PROTOTYPE] = null;
8975    // add "__proto__" for Object.getPrototypeOf polyfill
8976    result[IE_PROTO] = O;
8977  } else result = createDict();
8978  return Properties === undefined ? result : defineProperties(result, Properties);
8979};
8980
8981hiddenKeys[IE_PROTO] = true;
8982
8983
8984/***/ }),
8985/* 151 */
8986/***/ (function(module, exports, __webpack_require__) {
8987
8988var DESCRIPTORS = __webpack_require__(15);
8989var definePropertyModule = __webpack_require__(37);
8990var anObject = __webpack_require__(24);
8991var objectKeys = __webpack_require__(152);
8992
8993// `Object.defineProperties` method
8994// https://tc39.github.io/ecma262/#sec-object.defineproperties
8995module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
8996  anObject(O);
8997  var keys = objectKeys(Properties);
8998  var length = keys.length;
8999  var index = 0;
9000  var key;
9001  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
9002  return O;
9003};
9004
9005
9006/***/ }),
9007/* 152 */
9008/***/ (function(module, exports, __webpack_require__) {
9009
9010var internalObjectKeys = __webpack_require__(75);
9011var enumBugKeys = __webpack_require__(40);
9012
9013// `Object.keys` method
9014// https://tc39.github.io/ecma262/#sec-object.keys
9015module.exports = Object.keys || function keys(O) {
9016  return internalObjectKeys(O, enumBugKeys);
9017};
9018
9019
9020/***/ }),
9021/* 153 */
9022/***/ (function(module, exports, __webpack_require__) {
9023
9024var getBuiltIn = __webpack_require__(74);
9025
9026module.exports = getBuiltIn('document', 'documentElement');
9027
9028
9029/***/ }),
9030/* 154 */
9031/***/ (function(module, exports, __webpack_require__) {
9032
9033var global = __webpack_require__(3);
9034var bind = __webpack_require__(155);
9035
9036var call = Function.call;
9037
9038module.exports = function (CONSTRUCTOR, METHOD, length) {
9039  return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);
9040};
9041
9042
9043/***/ }),
9044/* 155 */
9045/***/ (function(module, exports, __webpack_require__) {
9046
9047var aFunction = __webpack_require__(156);
9048
9049// optional / simple context binding
9050module.exports = function (fn, that, length) {
9051  aFunction(fn);
9052  if (that === undefined) return fn;
9053  switch (length) {
9054    case 0: return function () {
9055      return fn.call(that);
9056    };
9057    case 1: return function (a) {
9058      return fn.call(that, a);
9059    };
9060    case 2: return function (a, b) {
9061      return fn.call(that, a, b);
9062    };
9063    case 3: return function (a, b, c) {
9064      return fn.call(that, a, b, c);
9065    };
9066  }
9067  return function (/* ...args */) {
9068    return fn.apply(that, arguments);
9069  };
9070};
9071
9072
9073/***/ }),
9074/* 156 */
9075/***/ (function(module, exports) {
9076
9077module.exports = function (it) {
9078  if (typeof it != 'function') {
9079    throw TypeError(String(it) + ' is not a function');
9080  } return it;
9081};
9082
9083
9084/***/ }),
9085/* 157 */
9086/***/ (function(module, __webpack_exports__, __webpack_require__) {
9087
9088"use strict";
9089__webpack_require__.r(__webpack_exports__);
9090/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80);
9091/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(160);
9092/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(161);
9093
9094
9095
9096
9097/** `Object#toString` result references. */
9098var nullTag = '[object Null]',
9099    undefinedTag = '[object Undefined]';
9100
9101/** Built-in value references. */
9102var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
9103
9104/**
9105 * The base implementation of `getTag` without fallbacks for buggy environments.
9106 *
9107 * @private
9108 * @param {*} value The value to query.
9109 * @returns {string} Returns the `toStringTag`.
9110 */
9111function baseGetTag(value) {
9112  if (value == null) {
9113    return value === undefined ? undefinedTag : nullTag;
9114  }
9115  return (symToStringTag && symToStringTag in Object(value))
9116    ? Object(_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value)
9117    : Object(_objectToString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value);
9118}
9119
9120/* harmony default export */ __webpack_exports__["default"] = (baseGetTag);
9121
9122
9123/***/ }),
9124/* 158 */
9125/***/ (function(module, __webpack_exports__, __webpack_require__) {
9126
9127"use strict";
9128__webpack_require__.r(__webpack_exports__);
9129/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159);
9130
9131
9132/** Detect free variable `self`. */
9133var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
9134
9135/** Used as a reference to the global object. */
9136var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__["default"] || freeSelf || Function('return this')();
9137
9138/* harmony default export */ __webpack_exports__["default"] = (root);
9139
9140
9141/***/ }),
9142/* 159 */
9143/***/ (function(module, __webpack_exports__, __webpack_require__) {
9144
9145"use strict";
9146__webpack_require__.r(__webpack_exports__);
9147/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
9148var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
9149
9150/* harmony default export */ __webpack_exports__["default"] = (freeGlobal);
9151
9152/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(22)))
9153
9154/***/ }),
9155/* 160 */
9156/***/ (function(module, __webpack_exports__, __webpack_require__) {
9157
9158"use strict";
9159__webpack_require__.r(__webpack_exports__);
9160/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80);
9161
9162
9163/** Used for built-in method references. */
9164var objectProto = Object.prototype;
9165
9166/** Used to check objects for own properties. */
9167var hasOwnProperty = objectProto.hasOwnProperty;
9168
9169/**
9170 * Used to resolve the
9171 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
9172 * of values.
9173 */
9174var nativeObjectToString = objectProto.toString;
9175
9176/** Built-in value references. */
9177var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
9178
9179/**
9180 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
9181 *
9182 * @private
9183 * @param {*} value The value to query.
9184 * @returns {string} Returns the raw `toStringTag`.
9185 */
9186function getRawTag(value) {
9187  var isOwn = hasOwnProperty.call(value, symToStringTag),
9188      tag = value[symToStringTag];
9189
9190  try {
9191    value[symToStringTag] = undefined;
9192    var unmasked = true;
9193  } catch (e) {}
9194
9195  var result = nativeObjectToString.call(value);
9196  if (unmasked) {
9197    if (isOwn) {
9198      value[symToStringTag] = tag;
9199    } else {
9200      delete value[symToStringTag];
9201    }
9202  }
9203  return result;
9204}
9205
9206/* harmony default export */ __webpack_exports__["default"] = (getRawTag);
9207
9208
9209/***/ }),
9210/* 161 */
9211/***/ (function(module, __webpack_exports__, __webpack_require__) {
9212
9213"use strict";
9214__webpack_require__.r(__webpack_exports__);
9215/** Used for built-in method references. */
9216var objectProto = Object.prototype;
9217
9218/**
9219 * Used to resolve the
9220 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
9221 * of values.
9222 */
9223var nativeObjectToString = objectProto.toString;
9224
9225/**
9226 * Converts `value` to a string using `Object.prototype.toString`.
9227 *
9228 * @private
9229 * @param {*} value The value to convert.
9230 * @returns {string} Returns the converted string.
9231 */
9232function objectToString(value) {
9233  return nativeObjectToString.call(value);
9234}
9235
9236/* harmony default export */ __webpack_exports__["default"] = (objectToString);
9237
9238
9239/***/ }),
9240/* 162 */
9241/***/ (function(module, __webpack_exports__, __webpack_require__) {
9242
9243"use strict";
9244__webpack_require__.r(__webpack_exports__);
9245/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163);
9246
9247
9248/** Built-in value references. */
9249var getPrototype = Object(_overArg_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object.getPrototypeOf, Object);
9250
9251/* harmony default export */ __webpack_exports__["default"] = (getPrototype);
9252
9253
9254/***/ }),
9255/* 163 */
9256/***/ (function(module, __webpack_exports__, __webpack_require__) {
9257
9258"use strict";
9259__webpack_require__.r(__webpack_exports__);
9260/**
9261 * Creates a unary function that invokes `func` with its argument transformed.
9262 *
9263 * @private
9264 * @param {Function} func The function to wrap.
9265 * @param {Function} transform The argument transform.
9266 * @returns {Function} Returns the new function.
9267 */
9268function overArg(func, transform) {
9269  return function(arg) {
9270    return func(transform(arg));
9271  };
9272}
9273
9274/* harmony default export */ __webpack_exports__["default"] = (overArg);
9275
9276
9277/***/ }),
9278/* 164 */
9279/***/ (function(module, __webpack_exports__, __webpack_require__) {
9280
9281"use strict";
9282__webpack_require__.r(__webpack_exports__);
9283/**
9284 * Checks if `value` is object-like. A value is object-like if it's not `null`
9285 * and has a `typeof` result of "object".
9286 *
9287 * @static
9288 * @memberOf _
9289 * @since 4.0.0
9290 * @category Lang
9291 * @param {*} value The value to check.
9292 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
9293 * @example
9294 *
9295 * _.isObjectLike({});
9296 * // => true
9297 *
9298 * _.isObjectLike([1, 2, 3]);
9299 * // => true
9300 *
9301 * _.isObjectLike(_.noop);
9302 * // => false
9303 *
9304 * _.isObjectLike(null);
9305 * // => false
9306 */
9307function isObjectLike(value) {
9308  return value != null && typeof value == 'object';
9309}
9310
9311/* harmony default export */ __webpack_exports__["default"] = (isObjectLike);
9312
9313
9314/***/ }),
9315/* 165 */
9316/***/ (function(module, __webpack_exports__, __webpack_require__) {
9317
9318"use strict";
9319__webpack_require__.r(__webpack_exports__);
9320/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(167);
9321/* global window */
9322
9323
9324var root;
9325
9326if (typeof self !== 'undefined') {
9327  root = self;
9328} else if (typeof window !== 'undefined') {
9329  root = window;
9330} else if (typeof global !== 'undefined') {
9331  root = global;
9332} else if (true) {
9333  root = module;
9334} else {}
9335
9336var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__["default"])(root);
9337/* harmony default export */ __webpack_exports__["default"] = (result);
9338
9339/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(22), __webpack_require__(166)(module)))
9340
9341/***/ }),
9342/* 166 */
9343/***/ (function(module, exports) {
9344
9345module.exports = function(originalModule) {
9346	if (!originalModule.webpackPolyfill) {
9347		var module = Object.create(originalModule);
9348		// module.parent = undefined by default
9349		if (!module.children) module.children = [];
9350		Object.defineProperty(module, "loaded", {
9351			enumerable: true,
9352			get: function() {
9353				return module.l;
9354			}
9355		});
9356		Object.defineProperty(module, "id", {
9357			enumerable: true,
9358			get: function() {
9359				return module.i;
9360			}
9361		});
9362		Object.defineProperty(module, "exports", {
9363			enumerable: true
9364		});
9365		module.webpackPolyfill = 1;
9366	}
9367	return module;
9368};
9369
9370
9371/***/ }),
9372/* 167 */
9373/***/ (function(module, __webpack_exports__, __webpack_require__) {
9374
9375"use strict";
9376__webpack_require__.r(__webpack_exports__);
9377/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return symbolObservablePonyfill; });
9378function symbolObservablePonyfill(root) {
9379	var result;
9380	var Symbol = root.Symbol;
9381
9382	if (typeof Symbol === 'function') {
9383		if (Symbol.observable) {
9384			result = Symbol.observable;
9385		} else {
9386			result = Symbol('observable');
9387			Symbol.observable = result;
9388		}
9389	} else {
9390		result = '@@observable';
9391	}
9392
9393	return result;
9394};
9395
9396
9397/***/ }),
9398/* 168 */
9399/***/ (function(module, exports, __webpack_require__) {
9400
9401"use strict";
9402
9403
9404Object.defineProperty(exports, "__esModule", {
9405  value: true
9406});
9407exports["default"] = void 0;
9408
9409var _redux = __webpack_require__(78);
9410
9411var _IX2DataReducer = __webpack_require__(169);
9412
9413var _IX2RequestReducer = __webpack_require__(175);
9414
9415var _IX2SessionReducer = __webpack_require__(176);
9416
9417var _shared = __webpack_require__(10);
9418
9419var _IX2InstancesReducer = __webpack_require__(261);
9420
9421var _IX2ParametersReducer = __webpack_require__(262);
9422
9423var ixElements = _shared.IX2ElementsReducer.ixElements;
9424
9425var _default = (0, _redux.combineReducers)({
9426  ixData: _IX2DataReducer.ixData,
9427  ixRequest: _IX2RequestReducer.ixRequest,
9428  ixSession: _IX2SessionReducer.ixSession,
9429  ixElements: ixElements,
9430  ixInstances: _IX2InstancesReducer.ixInstances,
9431  ixParameters: _IX2ParametersReducer.ixParameters
9432});
9433
9434exports["default"] = _default;
9435
9436/***/ }),
9437/* 169 */
9438/***/ (function(module, exports, __webpack_require__) {
9439
9440"use strict";
9441
9442
9443Object.defineProperty(exports, "__esModule", {
9444  value: true
9445});
9446exports.ixData = void 0;
9447
9448var _constants = __webpack_require__(2);
9449
9450var IX2_RAW_DATA_IMPORTED = _constants.IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED;
9451
9452var ixData = function ixData() {
9453  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
9454  var action = arguments.length > 1 ? arguments[1] : undefined;
9455
9456  switch (action.type) {
9457    case IX2_RAW_DATA_IMPORTED:
9458      {
9459        return action.payload.ixData || Object.freeze({});
9460      }
9461
9462    default:
9463      {
9464        return state;
9465      }
9466  }
9467};
9468
9469exports.ixData = ixData;
9470
9471/***/ }),
9472/* 170 */
9473/***/ (function(module, exports, __webpack_require__) {
9474
9475"use strict";
9476
9477
9478Object.defineProperty(exports, "__esModule", {
9479  value: true
9480});
9481exports.QuickEffectDirectionConsts = exports.QuickEffectIds = exports.EventLimitAffectedElements = exports.EventContinuousMouseAxes = exports.EventBasedOn = exports.EventAppliesTo = exports.EventTypeConsts = void 0;
9482/**
9483 * Event Type IDs
9484 */
9485
9486var EventTypeConsts = {
9487  NAVBAR_OPEN: 'NAVBAR_OPEN',
9488  NAVBAR_CLOSE: 'NAVBAR_CLOSE',
9489  TAB_ACTIVE: 'TAB_ACTIVE',
9490  TAB_INACTIVE: 'TAB_INACTIVE',
9491  SLIDER_ACTIVE: 'SLIDER_ACTIVE',
9492  SLIDER_INACTIVE: 'SLIDER_INACTIVE',
9493  DROPDOWN_OPEN: 'DROPDOWN_OPEN',
9494  DROPDOWN_CLOSE: 'DROPDOWN_CLOSE',
9495  MOUSE_CLICK: 'MOUSE_CLICK',
9496  MOUSE_SECOND_CLICK: 'MOUSE_SECOND_CLICK',
9497  MOUSE_DOWN: 'MOUSE_DOWN',
9498  MOUSE_UP: 'MOUSE_UP',
9499  MOUSE_OVER: 'MOUSE_OVER',
9500  MOUSE_OUT: 'MOUSE_OUT',
9501  MOUSE_MOVE: 'MOUSE_MOVE',
9502  MOUSE_MOVE_IN_VIEWPORT: 'MOUSE_MOVE_IN_VIEWPORT',
9503  SCROLL_INTO_VIEW: 'SCROLL_INTO_VIEW',
9504  SCROLL_OUT_OF_VIEW: 'SCROLL_OUT_OF_VIEW',
9505  SCROLLING_IN_VIEW: 'SCROLLING_IN_VIEW',
9506  ECOMMERCE_CART_OPEN: 'ECOMMERCE_CART_OPEN',
9507  ECOMMERCE_CART_CLOSE: 'ECOMMERCE_CART_CLOSE',
9508  PAGE_START: 'PAGE_START',
9509  PAGE_FINISH: 'PAGE_FINISH',
9510  PAGE_SCROLL_UP: 'PAGE_SCROLL_UP',
9511  PAGE_SCROLL_DOWN: 'PAGE_SCROLL_DOWN',
9512  PAGE_SCROLL: 'PAGE_SCROLL'
9513};
9514/**
9515 * Event Config Enums
9516 */
9517
9518exports.EventTypeConsts = EventTypeConsts;
9519var EventAppliesTo = {
9520  ELEMENT: 'ELEMENT',
9521  CLASS: 'CLASS',
9522  PAGE: 'PAGE'
9523};
9524exports.EventAppliesTo = EventAppliesTo;
9525var EventBasedOn = {
9526  ELEMENT: 'ELEMENT',
9527  VIEWPORT: 'VIEWPORT'
9528};
9529exports.EventBasedOn = EventBasedOn;
9530var EventContinuousMouseAxes = {
9531  X_AXIS: 'X_AXIS',
9532  Y_AXIS: 'Y_AXIS'
9533};
9534exports.EventContinuousMouseAxes = EventContinuousMouseAxes;
9535var EventLimitAffectedElements = {
9536  CHILDREN: 'CHILDREN',
9537  SIBLINGS: 'SIBLINGS',
9538  IMMEDIATE_CHILDREN: 'IMMEDIATE_CHILDREN'
9539};
9540/**
9541 * Quick Effect Enums
9542 */
9543
9544exports.EventLimitAffectedElements = EventLimitAffectedElements;
9545var QuickEffectIds = {
9546  FADE_EFFECT: 'FADE_EFFECT',
9547  SLIDE_EFFECT: 'SLIDE_EFFECT',
9548  GROW_EFFECT: 'GROW_EFFECT',
9549  SHRINK_EFFECT: 'SHRINK_EFFECT',
9550  SPIN_EFFECT: 'SPIN_EFFECT',
9551  FLY_EFFECT: 'FLY_EFFECT',
9552  POP_EFFECT: 'POP_EFFECT',
9553  FLIP_EFFECT: 'FLIP_EFFECT',
9554  JIGGLE_EFFECT: 'JIGGLE_EFFECT',
9555  PULSE_EFFECT: 'PULSE_EFFECT',
9556  DROP_EFFECT: 'DROP_EFFECT',
9557  BLINK_EFFECT: 'BLINK_EFFECT',
9558  BOUNCE_EFFECT: 'BOUNCE_EFFECT',
9559  FLIP_LEFT_TO_RIGHT_EFFECT: 'FLIP_LEFT_TO_RIGHT_EFFECT',
9560  FLIP_RIGHT_TO_LEFT_EFFECT: 'FLIP_RIGHT_TO_LEFT_EFFECT',
9561  RUBBER_BAND_EFFECT: 'RUBBER_BAND_EFFECT',
9562  JELLO_EFFECT: 'JELLO_EFFECT',
9563  GROW_BIG_EFFECT: 'GROW_BIG_EFFECT',
9564  SHRINK_BIG_EFFECT: 'SHRINK_BIG_EFFECT',
9565  PLUGIN_LOTTIE_EFFECT: 'PLUGIN_LOTTIE_EFFECT'
9566};
9567/**
9568 * Quick Effect Direction Enums
9569 */
9570
9571exports.QuickEffectIds = QuickEffectIds;
9572var QuickEffectDirectionConsts = {
9573  LEFT: 'LEFT',
9574  RIGHT: 'RIGHT',
9575  BOTTOM: 'BOTTOM',
9576  TOP: 'TOP',
9577  BOTTOM_LEFT: 'BOTTOM_LEFT',
9578  BOTTOM_RIGHT: 'BOTTOM_RIGHT',
9579  TOP_RIGHT: 'TOP_RIGHT',
9580  TOP_LEFT: 'TOP_LEFT',
9581  CLOCKWISE: 'CLOCKWISE',
9582  COUNTER_CLOCKWISE: 'COUNTER_CLOCKWISE'
9583};
9584exports.QuickEffectDirectionConsts = QuickEffectDirectionConsts;
9585
9586/***/ }),
9587/* 171 */
9588/***/ (function(module, exports, __webpack_require__) {
9589
9590"use strict";
9591
9592
9593Object.defineProperty(exports, "__esModule", {
9594  value: true
9595});
9596exports.ActionAppliesTo = exports.ActionTypeConsts = void 0;
9597var ActionTypeConsts = {
9598  TRANSFORM_MOVE: 'TRANSFORM_MOVE',
9599  TRANSFORM_SCALE: 'TRANSFORM_SCALE',
9600  TRANSFORM_ROTATE: 'TRANSFORM_ROTATE',
9601  TRANSFORM_SKEW: 'TRANSFORM_SKEW',
9602  STYLE_OPACITY: 'STYLE_OPACITY',
9603  STYLE_SIZE: 'STYLE_SIZE',
9604  STYLE_FILTER: 'STYLE_FILTER',
9605  STYLE_BACKGROUND_COLOR: 'STYLE_BACKGROUND_COLOR',
9606  STYLE_BORDER: 'STYLE_BORDER',
9607  STYLE_TEXT_COLOR: 'STYLE_TEXT_COLOR',
9608  PLUGIN_LOTTIE: 'PLUGIN_LOTTIE',
9609  GENERAL_DISPLAY: 'GENERAL_DISPLAY',
9610  GENERAL_START_ACTION: 'GENERAL_START_ACTION',
9611  GENERAL_CONTINUOUS_ACTION: 'GENERAL_CONTINUOUS_ACTION',
9612  // TODO: Clean these up below because they're not used at this time
9613  GENERAL_COMBO_CLASS: 'GENERAL_COMBO_CLASS',
9614  GENERAL_STOP_ACTION: 'GENERAL_STOP_ACTION',
9615  GENERAL_LOOP: 'GENERAL_LOOP',
9616  STYLE_BOX_SHADOW: 'STYLE_BOX_SHADOW'
9617};
9618exports.ActionTypeConsts = ActionTypeConsts;
9619var ActionAppliesTo = {
9620  ELEMENT: 'ELEMENT',
9621  ELEMENT_CLASS: 'ELEMENT_CLASS',
9622  TRIGGER_ELEMENT: 'TRIGGER_ELEMENT'
9623};
9624exports.ActionAppliesTo = ActionAppliesTo;
9625
9626/***/ }),
9627/* 172 */
9628/***/ (function(module, exports, __webpack_require__) {
9629
9630"use strict";
9631
9632
9633Object.defineProperty(exports, "__esModule", {
9634  value: true
9635});
9636exports.InteractionTypeConsts = void 0;
9637var InteractionTypeConsts = {
9638  MOUSE_CLICK_INTERACTION: 'MOUSE_CLICK_INTERACTION',
9639  MOUSE_HOVER_INTERACTION: 'MOUSE_HOVER_INTERACTION',
9640  MOUSE_MOVE_INTERACTION: 'MOUSE_MOVE_INTERACTION',
9641  SCROLL_INTO_VIEW_INTERACTION: 'SCROLL_INTO_VIEW_INTERACTION',
9642  SCROLLING_IN_VIEW_INTERACTION: 'SCROLLING_IN_VIEW_INTERACTION',
9643  MOUSE_MOVE_IN_VIEWPORT_INTERACTION: 'MOUSE_MOVE_IN_VIEWPORT_INTERACTION',
9644  PAGE_IS_SCROLLING_INTERACTION: 'PAGE_IS_SCROLLING_INTERACTION',
9645  PAGE_LOAD_INTERACTION: 'PAGE_LOAD_INTERACTION',
9646  PAGE_SCROLLED_INTERACTION: 'PAGE_SCROLLED_INTERACTION',
9647  NAVBAR_INTERACTION: 'NAVBAR_INTERACTION',
9648  DROPDOWN_INTERACTION: 'DROPDOWN_INTERACTION',
9649  ECOMMERCE_CART_INTERACTION: 'ECOMMERCE_CART_INTERACTION',
9650  TAB_INTERACTION: 'TAB_INTERACTION',
9651  SLIDER_INTERACTION: 'SLIDER_INTERACTION'
9652};
9653exports.InteractionTypeConsts = InteractionTypeConsts;
9654
9655/***/ }),
9656/* 173 */
9657/***/ (function(module, exports, __webpack_require__) {
9658
9659"use strict";
9660
9661
9662Object.defineProperty(exports, "__esModule", {
9663  value: true
9664});
9665exports.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;
9666var IX2_RAW_DATA_IMPORTED = 'IX2_RAW_DATA_IMPORTED';
9667exports.IX2_RAW_DATA_IMPORTED = IX2_RAW_DATA_IMPORTED;
9668var IX2_SESSION_INITIALIZED = 'IX2_SESSION_INITIALIZED';
9669exports.IX2_SESSION_INITIALIZED = IX2_SESSION_INITIALIZED;
9670var IX2_SESSION_STARTED = 'IX2_SESSION_STARTED';
9671exports.IX2_SESSION_STARTED = IX2_SESSION_STARTED;
9672var IX2_SESSION_STOPPED = 'IX2_SESSION_STOPPED';
9673exports.IX2_SESSION_STOPPED = IX2_SESSION_STOPPED;
9674var IX2_PREVIEW_REQUESTED = 'IX2_PREVIEW_REQUESTED';
9675exports.IX2_PREVIEW_REQUESTED = IX2_PREVIEW_REQUESTED;
9676var IX2_PLAYBACK_REQUESTED = 'IX2_PLAYBACK_REQUESTED';
9677exports.IX2_PLAYBACK_REQUESTED = IX2_PLAYBACK_REQUESTED;
9678var IX2_STOP_REQUESTED = 'IX2_STOP_REQUESTED';
9679exports.IX2_STOP_REQUESTED = IX2_STOP_REQUESTED;
9680var IX2_CLEAR_REQUESTED = 'IX2_CLEAR_REQUESTED';
9681exports.IX2_CLEAR_REQUESTED = IX2_CLEAR_REQUESTED;
9682var IX2_EVENT_LISTENER_ADDED = 'IX2_EVENT_LISTENER_ADDED';
9683exports.IX2_EVENT_LISTENER_ADDED = IX2_EVENT_LISTENER_ADDED;
9684var IX2_EVENT_STATE_CHANGED = 'IX2_EVENT_STATE_CHANGED';
9685exports.IX2_EVENT_STATE_CHANGED = IX2_EVENT_STATE_CHANGED;
9686var IX2_ANIMATION_FRAME_CHANGED = 'IX2_ANIMATION_FRAME_CHANGED';
9687exports.IX2_ANIMATION_FRAME_CHANGED = IX2_ANIMATION_FRAME_CHANGED;
9688var IX2_PARAMETER_CHANGED = 'IX2_PARAMETER_CHANGED';
9689exports.IX2_PARAMETER_CHANGED = IX2_PARAMETER_CHANGED;
9690var IX2_INSTANCE_ADDED = 'IX2_INSTANCE_ADDED';
9691exports.IX2_INSTANCE_ADDED = IX2_INSTANCE_ADDED;
9692var IX2_INSTANCE_STARTED = 'IX2_INSTANCE_STARTED';
9693exports.IX2_INSTANCE_STARTED = IX2_INSTANCE_STARTED;
9694var IX2_INSTANCE_REMOVED = 'IX2_INSTANCE_REMOVED';
9695exports.IX2_INSTANCE_REMOVED = IX2_INSTANCE_REMOVED;
9696var IX2_ELEMENT_STATE_CHANGED = 'IX2_ELEMENT_STATE_CHANGED';
9697exports.IX2_ELEMENT_STATE_CHANGED = IX2_ELEMENT_STATE_CHANGED;
9698var IX2_ACTION_LIST_PLAYBACK_CHANGED = 'IX2_ACTION_LIST_PLAYBACK_CHANGED';
9699exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = IX2_ACTION_LIST_PLAYBACK_CHANGED;
9700var IX2_VIEWPORT_WIDTH_CHANGED = 'IX2_VIEWPORT_WIDTH_CHANGED';
9701exports.IX2_VIEWPORT_WIDTH_CHANGED = IX2_VIEWPORT_WIDTH_CHANGED;
9702var IX2_MEDIA_QUERIES_DEFINED = 'IX2_MEDIA_QUERIES_DEFINED';
9703exports.IX2_MEDIA_QUERIES_DEFINED = IX2_MEDIA_QUERIES_DEFINED;
9704var IX2_TEST_FRAME_RENDERED = 'IX2_TEST_FRAME_RENDERED';
9705exports.IX2_TEST_FRAME_RENDERED = IX2_TEST_FRAME_RENDERED;
9706
9707/***/ }),
9708/* 174 */
9709/***/ (function(module, exports, __webpack_require__) {
9710
9711"use strict";
9712
9713
9714Object.defineProperty(exports, "__esModule", {
9715  value: true
9716});
9717exports.RENDER_PLUGIN = exports.RENDER_STYLE = exports.RENDER_GENERAL = exports.RENDER_TRANSFORM = exp
9717orts.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.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;
9718var IX2_ID_DELIMITER = '|';
9719exports.IX2_ID_DELIMITER = IX2_ID_DELIMITER;
9720var WF_PAGE = 'data-wf-page';
9721exports.WF_PAGE = WF_PAGE;
9722var W_MOD_JS = 'w-mod-js';
9723exports.W_MOD_JS = W_MOD_JS;
9724var W_MOD_IX = 'w-mod-ix';
9725exports.W_MOD_IX = W_MOD_IX;
9726var BOUNDARY_SELECTOR = '.w-dyn-item';
9727exports.BOUNDARY_SELECTOR = BOUNDARY_SELECTOR;
9728var CONFIG_X_VALUE = 'xValue';
9729exports.CONFIG_X_VALUE = CONFIG_X_VALUE;
9730var CONFIG_Y_VALUE = 'yValue';
9731exports.CONFIG_Y_VALUE = CONFIG_Y_VALUE;
9732var CONFIG_Z_VALUE = 'zValue';
9733exports.CONFIG_Z_VALUE = CONFIG_Z_VALUE;
9734var CONFIG_VALUE = 'value';
9735exports.CONFIG_VALUE = CONFIG_VALUE;
9736var CONFIG_X_UNIT = 'xUnit';
9737exports.CONFIG_X_UNIT = CONFIG_X_UNIT;
9738var CONFIG_Y_UNIT = 'yUnit';
9739exports.CONFIG_Y_UNIT = CONFIG_Y_UNIT;
9740var CONFIG_Z_UNIT = 'zUnit';
9741exports.CONFIG_Z_UNIT = CONFIG_Z_UNIT;
9742var CONFIG_UNIT = 'unit';
9743exports.CONFIG_UNIT = CONFIG_UNIT;
9744var TRANSFORM = 'transform';
9745exports.TRANSFORM = TRANSFORM;
9746var TRANSLATE_X = 'translateX';
9747exports.TRANSLATE_X = TRANSLATE_X;
9748var TRANSLATE_Y = 'translateY';
9749exports.TRANSLATE_Y = TRANSLATE_Y;
9750var TRANSLATE_Z = 'translateZ';
9751exports.TRANSLATE_Z = TRANSLATE_Z;
9752var TRANSLATE_3D = 'translate3d';
9753exports.TRANSLATE_3D = TRANSLATE_3D;
9754var SCALE_X = 'scaleX';
9755exports.SCALE_X = SCALE_X;
9756var SCALE_Y = 'scaleY';
9757exports.SCALE_Y = SCALE_Y;
9758var SCALE_Z = 'scaleZ';
9759exports.SCALE_Z = SCALE_Z;
9760var SCALE_3D = 'scale3d';
9761exports.SCALE_3D = SCALE_3D;
9762var ROTATE_X = 'rotateX';
9763exports.ROTATE_X = ROTATE_X;
9764var ROTATE_Y = 'rotateY';
9765exports.ROTATE_Y = ROTATE_Y;
9766var ROTATE_Z = 'rotateZ';
9767exports.ROTATE_Z = ROTATE_Z;
9768var SKEW = 'skew';
9769exports.SKEW = SKEW;
9770var SKEW_X = 'skewX';
9771exports.SKEW_X = SKEW_X;
9772var SKEW_Y = 'skewY';
9773exports.SKEW_Y = SKEW_Y;
9774var OPACITY = 'opacity';
9775exports.OPACITY = OPACITY;
9776var FILTER = 'filter';
9777exports.FILTER = FILTER;
9778var WIDTH = 'width';
9779exports.WIDTH = WIDTH;
9780var HEIGHT = 'height';
9781exports.HEIGHT = HEIGHT;
9782var BACKGROUND_COLOR = 'backgroundColor';
9783exports.BACKGROUND_COLOR = BACKGROUND_COLOR;
9784var BACKGROUND = 'background';
9785exports.BACKGROUND = BACKGROUND;
9786var BORDER_COLOR = 'borderColor';
9787exports.BORDER_COLOR = BORDER_COLOR;
9788var COLOR = 'color';
9789exports.COLOR = COLOR;
9790var DISPLAY = 'display';
9791exports.DISPLAY = DISPLAY;
9792var FLEX = 'flex';
9793exports.FLEX = FLEX;
9794var WILL_CHANGE = 'willChange';
9795exports.WILL_CHANGE = WILL_CHANGE;
9796var AUTO = 'AUTO';
9797exports.AUTO = AUTO;
9798var COMMA_DELIMITER = ',';
9799exports.COMMA_DELIMITER = COMMA_DELIMITER;
9800var COLON_DELIMITER = ':';
9801exports.COLON_DELIMITER = COLON_DELIMITER;
9802var BAR_DELIMITER = '|';
9803exports.BAR_DELIMITER = BAR_DELIMITER;
9804var CHILDREN = 'CHILDREN';
9805exports.CHILDREN = CHILDREN;
9806var IMMEDIATE_CHILDREN = 'IMMEDIATE_CHILDREN';
9807exports.IMMEDIATE_CHILDREN = IMMEDIATE_CHILDREN;
9808var SIBLINGS = 'SIBLINGS';
9809exports.SIBLINGS = SIBLINGS;
9810var PARENT = 'PARENT';
9811exports.PARENT = PARENT;
9812var PRESERVE_3D = 'preserve-3d';
9813exports.PRESERVE_3D = PRESERVE_3D;
9814var HTML_ELEMENT = 'HTML_ELEMENT';
9815exports.HTML_ELEMENT = HTML_ELEMENT;
9816var PLAIN_OBJECT = 'PLAIN_OBJECT';
9817exports.PLAIN_OBJECT = PLAIN_OBJECT;
9818var ABSTRACT_NODE = 'ABSTRACT_NODE';
9819exports.ABSTRACT_NODE = ABSTRACT_NODE;
9820var RENDER_TRANSFORM = 'RENDER_TRANSFORM';
9821exports.RENDER_TRANSFORM = RENDER_TRANSFORM;
9822var RENDER_GENERAL = 'RENDER_GENERAL';
9823exports.RENDER_GENERAL = RENDER_GENERAL;
9824var RENDER_STYLE = 'RENDER_STYLE';
9825exports.RENDER_STYLE = RENDER_STYLE;
9826var RENDER_PLUGIN = 'RENDER_PLUGIN';
9827exports.RENDER_PLUGIN = RENDER_PLUGIN;
9828
9829/***/ }),
9830/* 175 */
9831/***/ (function(module, exports, __webpack_require__) {
9832
9833"use strict";
9834
9835
9836var _interopRequireDefault2 = __webpack_require__(0);
9837
9838var _defineProperty2 = _interopRequireDefault2(__webpack_require__(26));
9839
9840var _Object$create;
9841
9842var _interopRequireDefault = __webpack_require__(0);
9843
9844Object.defineProperty(exports, "__esModule", {
9845  value: true
9846});
9847exports.ixRequest = void 0;
9848
9849var _extends2 = _interopRequireDefault(__webpack_require__(27));
9850
9851var _constants = __webpack_require__(2);
9852
9853var _timm = __webpack_require__(19);
9854
9855var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
9856    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
9857    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
9858    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
9859    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED;
9860var initialState = {
9861  preview: {},
9862  playback: {},
9863  stop: {},
9864  clear: {}
9865};
9866var stateKeys = Object.create(null, (_Object$create = {}, (0, _defineProperty2["default"])(_Object$create, IX2_PREVIEW_REQUESTED, {
9867  value: 'preview'
9868}), (0, _defineProperty2["default"])(_Object$create, IX2_PLAYBACK_REQUESTED, {
9869  value: 'playback'
9870}), (0, _defineProperty2["default"])(_Object$create, IX2_STOP_REQUESTED, {
9871  value: 'stop'
9872}), (0, _defineProperty2["default"])(_Object$create, IX2_CLEAR_REQUESTED, {
9873  value: 'clear'
9874}), _Object$create));
9875
9876var ixRequest = function ixRequest() {
9877  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
9878  var action = arguments.length > 1 ? arguments[1] : undefined;
9879
9880  if (action.type in stateKeys) {
9881    var key = [stateKeys[action.type]];
9882    return (0, _timm.setIn)(state, [key], (0, _extends2["default"])({}, action.payload));
9883  }
9884
9885  return state;
9886};
9887
9888exports.ixRequest = ixRequest;
9889
9890/***/ }),
9891/* 176 */
9892/***/ (function(module, exports, __webpack_require__) {
9893
9894"use strict";
9895
9896
9897Object.defineProperty(exports, "__esModule", {
9898  value: true
9899});
9900exports.ixSession = void 0;
9901
9902var _constants = __webpack_require__(2);
9903
9904var _timm = __webpack_require__(19);
9905
9906var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
9907    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
9908    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
9909    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
9910    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
9911    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
9912    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
9913    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
9914    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
9915    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
9916    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
9917var initialState = {
9918  active: false,
9919  tick: 0,
9920  eventListeners: [],
9921  eventState: {},
9922  playbackState: {},
9923  viewportWidth: 0,
9924  mediaQueryKey: null,
9925  hasBoundaryNodes: false,
9926  hasDefinedMediaQueries: false
9927};
9928var TEST_FRAME_STEPS_SIZE = 20; // $FlowFixMe
9929
9930var ixSession = function ixSession() {
9931  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
9932  var action = arguments.length > 1 ? arguments[1] : undefined;
9933
9934  switch (action.type) {
9935    case IX2_SESSION_INITIALIZED:
9936      {
9937        var hasBoundaryNodes = action.payload.hasBoundaryNodes;
9938        return (0, _timm.set)(state, 'hasBoundaryNodes', hasBoundaryNodes);
9939      }
9940
9941    case IX2_SESSION_STARTED:
9942      {
9943        return (0, _timm.set)(state, 'active', true);
9944      }
9945
9946    case IX2_TEST_FRAME_RENDERED:
9947      {
9948        var _action$payload$step = action.payload.step,
9949            step = _action$payload$step === void 0 ? TEST_FRAME_STEPS_SIZE : _action$payload$step;
9950        return (0, _timm.set)(state, 'tick', state.tick + step);
9951      }
9952
9953    case IX2_SESSION_STOPPED:
9954      {
9955        return initialState;
9956      }
9957
9958    case IX2_ANIMATION_FRAME_CHANGED:
9959      {
9960        var now = action.payload.now;
9961        return (0, _timm.set)(state, 'tick', now);
9962      }
9963
9964    case IX2_EVENT_LISTENER_ADDED:
9965      {
9966        var eventListeners = (0, _timm.addLast)(state.eventListeners, action.payload);
9967        return (0, _timm.set)(state, 'eventListeners', eventListeners);
9968      }
9969
9970    case IX2_EVENT_STATE_CHANGED:
9971      {
9972        var _action$payload = action.payload,
9973            stateKey = _action$payload.stateKey,
9974            newState = _action$payload.newState;
9975        return (0, _timm.setIn)(state, ['eventState', stateKey], newState);
9976      }
9977
9978    case IX2_ACTION_LIST_PLAYBACK_CHANGED:
9979      {
9980        var _action$payload2 = action.payload,
9981            actionListId = _action$payload2.actionListId,
9982            isPlaying = _action$payload2.isPlaying;
9983        return (0, _timm.setIn)(state, ['playbackState', actionListId], isPlaying);
9984      }
9985
9986    case IX2_VIEWPORT_WIDTH_CHANGED:
9987      {
9988        var _action$payload3 = action.payload,
9989            width = _action$payload3.width,
9990            mediaQueries = _action$payload3.mediaQueries;
9991        var mediaQueryCount = mediaQueries.length;
9992        var mediaQueryKey = null;
9993
9994        for (var i = 0; i < mediaQueryCount; i++) {
9995          var _mediaQueries$i = mediaQueries[i],
9996              key = _mediaQueries$i.key,
9997              min = _mediaQueries$i.min,
9998              max = _mediaQueries$i.max;
9999
10000          if (width >= min && width <= max) {
10001            mediaQueryKey = key;
10002            break;
10003          }
10004        }
10005
10006        return (0, _timm.merge)(state, {
10007          viewportWidth: width,
10008          mediaQueryKey: mediaQueryKey
10009        });
10010      }
10011
10012    case IX2_MEDIA_QUERIES_DEFINED:
10013      {
10014        return (0, _timm.set)(state, 'hasDefinedMediaQueries', true);
10015      }
10016
10017    default:
10018      {
10019        return state;
10020      }
10021  }
10022};
10023
10024exports.ixSession = ixSession;
10025
10026/***/ }),
10027/* 177 */
10028/***/ (function(module, exports, __webpack_require__) {
10029
10030var baseIsMatch = __webpack_require__(178),
10031    getMatchData = __webpack_require__(230),
10032    matchesStrictComparable = __webpack_require__(101);
10033
10034/**
10035 * The base implementation of `_.matches` which doesn't clone `source`.
10036 *
10037 * @private
10038 * @param {Object} source The object of property values to match.
10039 * @returns {Function} Returns the new spec function.
10040 */
10041function baseMatches(source) {
10042  var matchData = getMatchData(source);
10043  if (matchData.length == 1 && matchData[0][2]) {
10044    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
10045  }
10046  return function(object) {
10047    return object === source || baseIsMatch(object, source, matchData);
10048  };
10049}
10050
10051module.exports = baseMatches;
10052
10053
10054/***/ }),
10055/* 178 */
10056/***/ (function(module, exports, __webpack_require__) {
10057
10058var Stack = __webpack_require__(87),
10059    baseIsEqual = __webpack_require__(91);
10060
10061/** Used to compose bitmasks for value comparisons. */
10062var COMPARE_PARTIAL_FLAG = 1,
10063    COMPARE_UNORDERED_FLAG = 2;
10064
10065/**
10066 * The base implementation of `_.isMatch` without support for iteratee shorthands.
10067 *
10068 * @private
10069 * @param {Object} object The object to inspect.
10070 * @param {Object} source The object of property values to match.
10071 * @param {Array} matchData The property names, values, and compare flags to match.
10072 * @param {Function} [customizer] The function to customize comparisons.
10073 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
10074 */
10075function baseIsMatch(object, source, matchData, customizer) {
10076  var index = matchData.length,
10077      length = index,
10078      noCustomizer = !customizer;
10079
10080  if (object == null) {
10081    return !length;
10082  }
10083  object = Object(object);
10084  while (index--) {
10085    var data = matchData[index];
10086    if ((noCustomizer && data[2])
10087          ? data[1] !== object[data[0]]
10088          : !(data[0] in object)
10089        ) {
10090      return false;
vendor: 4,246 bytes, lines 10091-10307
10091    }
10092  }
10093  while (++index < length) {
10094    data = matchData[index];
10095    var key = data[0],
10096        objValue = object[key],
10097        srcValue = data[1];
10098
10099    if (noCustomizer && data[2]) {
10100      if (objValue === undefined && !(key in object)) {
10101        return false;
10102      }
10103    } else {
10104      var stack = new Stack;
10105      if (customizer) {
10106        var result = customizer(objValue, srcValue, key, object, source, stack);
10107      }
10108      if (!(result === undefined
10109            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
10110            : result
10111          )) {
10112        return false;
10113      }
10114    }
10115  }
10116  return true;
10117}
10118
10119module.exports = baseIsMatch;
10120
10121
10122/***/ }),
10123/* 179 */
10124/***/ (function(module, exports) {
10125
10126/**
10127 * Removes all key-value entries from the list cache.
10128 *
10129 * @private
10130 * @name clear
10131 * @memberOf ListCache
10132 */
10133function listCacheClear() {
10134  this.__data__ = [];
10135  this.size = 0;
10136}
10137
10138module.exports = listCacheClear;
10139
10140
10141/***/ }),
10142/* 180 */
10143/***/ (function(module, exports, __webpack_require__) {
10144
10145var assocIndexOf = __webpack_require__(29);
10146
10147/** Used for built-in method references. */
10148var arrayProto = Array.prototype;
10149
10150/** Built-in value references. */
10151var splice = arrayProto.splice;
10152
10153/**
10154 * Removes `key` and its value from the list cache.
10155 *
10156 * @private
10157 * @name delete
10158 * @memberOf ListCache
10159 * @param {string} key The key of the value to remove.
10160 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10161 */
10162function listCacheDelete(key) {
10163  var data = this.__data__,
10164      index = assocIndexOf(data, key);
10165
10166  if (index < 0) {
10167    return false;
10168  }
10169  var lastIndex = data.length - 1;
10170  if (index == lastIndex) {
10171    data.pop();
10172  } else {
10173    splice.call(data, index, 1);
10174  }
10175  --this.size;
10176  return true;
10177}
10178
10179module.exports = listCacheDelete;
10180
10181
10182/***/ }),
10183/* 181 */
10184/***/ (function(module, exports, __webpack_require__) {
10185
10186var assocIndexOf = __webpack_require__(29);
10187
10188/**
10189 * Gets the list cache value for `key`.
10190 *
10191 * @private
10192 * @name get
10193 * @memberOf ListCache
10194 * @param {string} key The key of the value to get.
10195 * @returns {*} Returns the entry value.
10196 */
10197function listCacheGet(key) {
10198  var data = this.__data__,
10199      index = assocIndexOf(data, key);
10200
10201  return index < 0 ? undefined : data[index][1];
10202}
10203
10204module.exports = listCacheGet;
10205
10206
10207/***/ }),
10208/* 182 */
10209/***/ (function(module, exports, __webpack_require__) {
10210
10211var assocIndexOf = __webpack_require__(29);
10212
10213/**
10214 * Checks if a list cache value for `key` exists.
10215 *
10216 * @private
10217 * @name has
10218 * @memberOf ListCache
10219 * @param {string} key The key of the entry to check.
10220 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10221 */
10222function listCacheHas(key) {
10223  return assocIndexOf(this.__data__, key) > -1;
10224}
10225
10226module.exports = listCacheHas;
10227
10228
10229/***/ }),
10230/* 183 */
10231/***/ (function(module, exports, __webpack_require__) {
10232
10233var assocIndexOf = __webpack_require__(29);
10234
10235/**
10236 * Sets the list cache `key` to `value`.
10237 *
10238 * @private
10239 * @name set
10240 * @memberOf ListCache
10241 * @param {string} key The key of the value to set.
10242 * @param {*} value The value to set.
10243 * @returns {Object} Returns the list cache instance.
10244 */
10245function listCacheSet(key, value) {
10246  var data = this.__data__,
10247      index = assocIndexOf(data, key);
10248
10249  if (index < 0) {
10250    ++this.size;
10251    data.push([key, value]);
10252  } else {
10253    data[index][1] = value;
10254  }
10255  return this;
10256}
10257
10258module.exports = listCacheSet;
10259
10260
10261/***/ }),
10262/* 184 */
10263/***/ (function(module, exports, __webpack_require__) {
10264
10265var ListCache = __webpack_require__(28);
10266
10267/**
10268 * Removes all key-value entries from the stack.
10269 *
10270 * @private
10271 * @name clear
10272 * @memberOf Stack
10273 */
10274function stackClear() {
10275  this.__data__ = new ListCache;
10276  this.size = 0;
10277}
10278
10279module.exports = stackClear;
10280
10281
10282/***/ }),
10283/* 185 */
10284/***/ (function(module, exports) {
10285
10286/**
10287 * Removes `key` and its value from the stack.
10288 *
10289 * @private
10290 * @name delete
10291 * @memberOf Stack
10292 * @param {string} key The key of the value to remove.
10293 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10294 */
10295function stackDelete(key) {
10296  var data = this.__data__,
10297      result = data['delete'](key);
10298
10299  this.size = data.size;
10300  return result;
10301}
10302
10303module.exports = stackDelete;
10304
10305
10306/***/ }),
10307/* 186 */
vendor: 11,191 bytes, lines 10308-10804
10308/***/ (function(module, exports) {
10309
10310/**
10311 * Gets the stack value for `key`.
10312 *
10313 * @private
10314 * @name get
10315 * @memberOf Stack
10316 * @param {string} key The key of the value to get.
10317 * @returns {*} Returns the entry value.
10318 */
10319function stackGet(key) {
10320  return this.__data__.get(key);
10321}
10322
10323module.exports = stackGet;
10324
10325
10326/***/ }),
10327/* 187 */
10328/***/ (function(module, exports) {
10329
10330/**
10331 * Checks if a stack value for `key` exists.
10332 *
10333 * @private
10334 * @name has
10335 * @memberOf Stack
10336 * @param {string} key The key of the entry to check.
10337 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10338 */
10339function stackHas(key) {
10340  return this.__data__.has(key);
10341}
10342
10343module.exports = stackHas;
10344
10345
10346/***/ }),
10347/* 188 */
10348/***/ (function(module, exports, __webpack_require__) {
10349
10350var ListCache = __webpack_require__(28),
10351    Map = __webpack_require__(45),
10352    MapCache = __webpack_require__(46);
10353
10354/** Used as the size to enable large array optimizations. */
10355var LARGE_ARRAY_SIZE = 200;
10356
10357/**
10358 * Sets the stack `key` to `value`.
10359 *
10360 * @private
10361 * @name set
10362 * @memberOf Stack
10363 * @param {string} key The key of the value to set.
10364 * @param {*} value The value to set.
10365 * @returns {Object} Returns the stack cache instance.
10366 */
10367function stackSet(key, value) {
10368  var data = this.__data__;
10369  if (data instanceof ListCache) {
10370    var pairs = data.__data__;
10371    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
10372      pairs.push([key, value]);
10373      this.size = ++data.size;
10374      return this;
10375    }
10376    data = this.__data__ = new MapCache(pairs);
10377  }
10378  data.set(key, value);
10379  this.size = data.size;
10380  return this;
10381}
10382
10383module.exports = stackSet;
10384
10385
10386/***/ }),
10387/* 189 */
10388/***/ (function(module, exports, __webpack_require__) {
10389
10390var isFunction = __webpack_require__(88),
10391    isMasked = __webpack_require__(192),
10392    isObject = __webpack_require__(5),
10393    toSource = __webpack_require__(90);
10394
10395/**
10396 * Used to match `RegExp`
10397 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
10398 */
10399var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
10400
10401/** Used to detect host constructors (Safari). */
10402var reIsHostCtor = /^\[object .+?Constructor\]$/;
10403
10404/** Used for built-in method references. */
10405var funcProto = Function.prototype,
10406    objectProto = Object.prototype;
10407
10408/** Used to resolve the decompiled source of functions. */
10409var funcToString = funcProto.toString;
10410
10411/** Used to check objects for own properties. */
10412var hasOwnProperty = objectProto.hasOwnProperty;
10413
10414/** Used to detect if a method is native. */
10415var reIsNative = RegExp('^' +
10416  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
10417  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
10418);
10419
10420/**
10421 * The base implementation of `_.isNative` without bad shim checks.
10422 *
10423 * @private
10424 * @param {*} value The value to check.
10425 * @returns {boolean} Returns `true` if `value` is a native function,
10426 *  else `false`.
10427 */
10428function baseIsNative(value) {
10429  if (!isObject(value) || isMasked(value)) {
10430    return false;
10431  }
10432  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
10433  return pattern.test(toSource(value));
10434}
10435
10436module.exports = baseIsNative;
10437
10438
10439/***/ }),
10440/* 190 */
10441/***/ (function(module, exports, __webpack_require__) {
10442
10443var Symbol = __webpack_require__(20);
10444
10445/** Used for built-in method references. */
10446var objectProto = Object.prototype;
10447
10448/** Used to check objects for own properties. */
10449var hasOwnProperty = objectProto.hasOwnProperty;
10450
10451/**
10452 * Used to resolve the
10453 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10454 * of values.
10455 */
10456var nativeObjectToString = objectProto.toString;
10457
10458/** Built-in value references. */
10459var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
10460
10461/**
10462 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
10463 *
10464 * @private
10465 * @param {*} value The value to query.
10466 * @returns {string} Returns the raw `toStringTag`.
10467 */
10468function getRawTag(value) {
10469  var isOwn = hasOwnProperty.call(value, symToStringTag),
10470      tag = value[symToStringTag];
10471
10472  try {
10473    value[symToStringTag] = undefined;
10474    var unmasked = true;
10475  } catch (e) {}
10476
10477  var result = nativeObjectToString.call(value);
10478  if (unmasked) {
10479    if (isOwn) {
10480      value[symToStringTag] = tag;
10481    } else {
10482      delete value[symToStringTag];
10483    }
10484  }
10485  return result;
10486}
10487
10488module.exports = getRawTag;
10489
10490
10491/***/ }),
10492/* 191 */
10493/***/ (function(module, exports) {
10494
10495/** Used for built-in method references. */
10496var objectProto = Object.prototype;
10497
10498/**
10499 * Used to resolve the
10500 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10501 * of values.
10502 */
10503var nativeObjectToString = objectProto.toString;
10504
10505/**
10506 * Converts `value` to a string using `Object.prototype.toString`.
10507 *
10508 * @private
10509 * @param {*} value The value to convert.
10510 * @returns {string} Returns the converted string.
10511 */
10512function objectToString(value) {
10513  return nativeObjectToString.call(value);
10514}
10515
10516module.exports = objectToString;
10517
10518
10519/***/ }),
10520/* 192 */
10521/***/ (function(module, exports, __webpack_require__) {
10522
10523var coreJsData = __webpack_require__(193);
10524
10525/** Used to detect methods masquerading as native. */
10526var maskSrcKey = (function() {
10527  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
10528  return uid ? ('Symbol(src)_1.' + uid) : '';
10529}());
10530
10531/**
10532 * Checks if `func` has its source masked.
10533 *
10534 * @private
10535 * @param {Function} func The function to check.
10536 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
10537 */
10538function isMasked(func) {
10539  return !!maskSrcKey && (maskSrcKey in func);
10540}
10541
10542module.exports = isMasked;
10543
10544
10545/***/ }),
10546/* 193 */
10547/***/ (function(module, exports, __webpack_require__) {
10548
10549var root = __webpack_require__(4);
10550
10551/** Used to detect overreaching core-js shims. */
10552var coreJsData = root['__core-js_shared__'];
10553
10554module.exports = coreJsData;
10555
10556
10557/***/ }),
10558/* 194 */
10559/***/ (function(module, exports) {
10560
10561/**
10562 * Gets the value at `key` of `object`.
10563 *
10564 * @private
10565 * @param {Object} [object] The object to query.
10566 * @param {string} key The key of the property to get.
10567 * @returns {*} Returns the property value.
10568 */
10569function getValue(object, key) {
10570  return object == null ? undefined : object[key];
10571}
10572
10573module.exports = getValue;
10574
10575
10576/***/ }),
10577/* 195 */
10578/***/ (function(module, exports, __webpack_require__) {
10579
10580var Hash = __webpack_require__(196),
10581    ListCache = __webpack_require__(28),
10582    Map = __webpack_require__(45);
10583
10584/**
10585 * Removes all key-value entries from the map.
10586 *
10587 * @private
10588 * @name clear
10589 * @memberOf MapCache
10590 */
10591function mapCacheClear() {
10592  this.size = 0;
10593  this.__data__ = {
10594    'hash': new Hash,
10595    'map': new (Map || ListCache),
10596    'string': new Hash
10597  };
10598}
10599
10600module.exports = mapCacheClear;
10601
10602
10603/***/ }),
10604/* 196 */
10605/***/ (function(module, exports, __webpack_require__) {
10606
10607var hashClear = __webpack_require__(197),
10608    hashDelete = __webpack_require__(198),
10609    hashGet = __webpack_require__(199),
10610    hashHas = __webpack_require__(200),
10611    hashSet = __webpack_require__(201);
10612
10613/**
10614 * Creates a hash object.
10615 *
10616 * @private
10617 * @constructor
10618 * @param {Array} [entries] The key-value pairs to cache.
10619 */
10620function Hash(entries) {
10621  var index = -1,
10622      length = entries == null ? 0 : entries.length;
10623
10624  this.clear();
10625  while (++index < length) {
10626    var entry = entries[index];
10627    this.set(entry[0], entry[1]);
10628  }
10629}
10630
10631// Add methods to `Hash`.
10632Hash.prototype.clear = hashClear;
10633Hash.prototype['delete'] = hashDelete;
10634Hash.prototype.get = hashGet;
10635Hash.prototype.has = hashHas;
10636Hash.prototype.set = hashSet;
10637
10638module.exports = Hash;
10639
10640
10641/***/ }),
10642/* 197 */
10643/***/ (function(module, exports, __webpack_require__) {
10644
10645var nativeCreate = __webpack_require__(30);
10646
10647/**
10648 * Removes all key-value entries from the hash.
10649 *
10650 * @private
10651 * @name clear
10652 * @memberOf Hash
10653 */
10654function hashClear() {
10655  this.__data__ = nativeCreate ? nativeCreate(null) : {};
10656  this.size = 0;
10657}
10658
10659module.exports = hashClear;
10660
10661
10662/***/ }),
10663/* 198 */
10664/***/ (function(module, exports) {
10665
10666/**
10667 * Removes `key` and its value from the hash.
10668 *
10669 * @private
10670 * @name delete
10671 * @memberOf Hash
10672 * @param {Object} hash The hash to modify.
10673 * @param {string} key The key of the value to remove.
10674 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10675 */
10676function hashDelete(key) {
10677  var result = this.has(key) && delete this.__data__[key];
10678  this.size -= result ? 1 : 0;
10679  return result;
10680}
10681
10682module.exports = hashDelete;
10683
10684
10685/***/ }),
10686/* 199 */
10687/***/ (function(module, exports, __webpack_require__) {
10688
10689var nativeCreate = __webpack_require__(30);
10690
10691/** Used to stand-in for `undefined` hash values. */
10692var HASH_UNDEFINED = '__lodash_hash_undefined__';
10693
10694/** Used for built-in method references. */
10695var objectProto = Object.prototype;
10696
10697/** Used to check objects for own properties. */
10698var hasOwnProperty = objectProto.hasOwnProperty;
10699
10700/**
10701 * Gets the hash value for `key`.
10702 *
10703 * @private
10704 * @name get
10705 * @memberOf Hash
10706 * @param {string} key The key of the value to get.
10707 * @returns {*} Returns the entry value.
10708 */
10709function hashGet(key) {
10710  var data = this.__data__;
10711  if (nativeCreate) {
10712    var result = data[key];
10713    return result === HASH_UNDEFINED ? undefined : result;
10714  }
10715  return hasOwnProperty.call(data, key) ? data[key] : undefined;
10716}
10717
10718module.exports = hashGet;
10719
10720
10721/***/ }),
10722/* 200 */
10723/***/ (function(module, exports, __webpack_require__) {
10724
10725var nativeCreate = __webpack_require__(30);
10726
10727/** Used for built-in method references. */
10728var objectProto = Object.prototype;
10729
10730/** Used to check objects for own properties. */
10731var hasOwnProperty = objectProto.hasOwnProperty;
10732
10733/**
10734 * Checks if a hash value for `key` exists.
10735 *
10736 * @private
10737 * @name has
10738 * @memberOf Hash
10739 * @param {string} key The key of the entry to check.
10740 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10741 */
10742function hashHas(key) {
10743  var data = this.__data__;
10744  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
10745}
10746
10747module.exports = hashHas;
10748
10749
10750/***/ }),
10751/* 201 */
10752/***/ (function(module, exports, __webpack_require__) {
10753
10754var nativeCreate = __webpack_require__(30);
10755
10756/** Used to stand-in for `undefined` hash values. */
10757var HASH_UNDEFINED = '__lodash_hash_undefined__';
10758
10759/**
10760 * Sets the hash `key` to `value`.
10761 *
10762 * @private
10763 * @name set
10764 * @memberOf Hash
10765 * @param {string} key The key of the value to set.
10766 * @param {*} value The value to set.
10767 * @returns {Object} Returns the hash instance.
10768 */
10769function hashSet(key, value) {
10770  var data = this.__data__;
10771  this.size += this.has(key) ? 0 : 1;
10772  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
10773  return this;
10774}
10775
10776module.exports = hashSet;
10777
10778
10779/***/ }),
10780/* 202 */
10781/***/ (function(module, exports, __webpack_require__) {
10782
10783var getMapData = __webpack_require__(31);
10784
10785/**
10786 * Removes `key` and its value from the map.
10787 *
10788 * @private
10789 * @name delete
10790 * @memberOf MapCache
10791 * @param {string} key The key of the value to remove.
10792 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10793 */
10794function mapCacheDelete(key) {
10795  var result = getMapData(this, key)['delete'](key);
10796  this.size -= result ? 1 : 0;
10797  return result;
10798}
10799
10800module.exports = mapCacheDelete;
10801
10802
10803/***/ }),
10804/* 203 */
vendor: 13,821 bytes, lines 10805-11325
10805/***/ (function(module, exports) {
10806
10807/**
10808 * Checks if `value` is suitable for use as unique object key.
10809 *
10810 * @private
10811 * @param {*} value The value to check.
10812 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
10813 */
10814function isKeyable(value) {
10815  var type = typeof value;
10816  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
10817    ? (value !== '__proto__')
10818    : (value === null);
10819}
10820
10821module.exports = isKeyable;
10822
10823
10824/***/ }),
10825/* 204 */
10826/***/ (function(module, exports, __webpack_require__) {
10827
10828var getMapData = __webpack_require__(31);
10829
10830/**
10831 * Gets the map value for `key`.
10832 *
10833 * @private
10834 * @name get
10835 * @memberOf MapCache
10836 * @param {string} key The key of the value to get.
10837 * @returns {*} Returns the entry value.
10838 */
10839function mapCacheGet(key) {
10840  return getMapData(this, key).get(key);
10841}
10842
10843module.exports = mapCacheGet;
10844
10845
10846/***/ }),
10847/* 205 */
10848/***/ (function(module, exports, __webpack_require__) {
10849
10850var getMapData = __webpack_require__(31);
10851
10852/**
10853 * Checks if a map value for `key` exists.
10854 *
10855 * @private
10856 * @name has
10857 * @memberOf MapCache
10858 * @param {string} key The key of the entry to check.
10859 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10860 */
10861function mapCacheHas(key) {
10862  return getMapData(this, key).has(key);
10863}
10864
10865module.exports = mapCacheHas;
10866
10867
10868/***/ }),
10869/* 206 */
10870/***/ (function(module, exports, __webpack_require__) {
10871
10872var getMapData = __webpack_require__(31);
10873
10874/**
10875 * Sets the map `key` to `value`.
10876 *
10877 * @private
10878 * @name set
10879 * @memberOf MapCache
10880 * @param {string} key The key of the value to set.
10881 * @param {*} value The value to set.
10882 * @returns {Object} Returns the map cache instance.
10883 */
10884function mapCacheSet(key, value) {
10885  var data = getMapData(this, key),
10886      size = data.size;
10887
10888  data.set(key, value);
10889  this.size += data.size == size ? 0 : 1;
10890  return this;
10891}
10892
10893module.exports = mapCacheSet;
10894
10895
10896/***/ }),
10897/* 207 */
10898/***/ (function(module, exports, __webpack_require__) {
10899
10900var Stack = __webpack_require__(87),
10901    equalArrays = __webpack_require__(92),
10902    equalByTag = __webpack_require__(213),
10903    equalObjects = __webpack_require__(217),
10904    getTag = __webpack_require__(54),
10905    isArray = __webpack_require__(1),
10906    isBuffer = __webpack_require__(48),
10907    isTypedArray = __webpack_require__(50);
10908
10909/** Used to compose bitmasks for value comparisons. */
10910var COMPARE_PARTIAL_FLAG = 1;
10911
10912/** `Object#toString` result references. */
10913var argsTag = '[object Arguments]',
10914    arrayTag = '[object Array]',
10915    objectTag = '[object Object]';
10916
10917/** Used for built-in method references. */
10918var objectProto = Object.prototype;
10919
10920/** Used to check objects for own properties. */
10921var hasOwnProperty = objectProto.hasOwnProperty;
10922
10923/**
10924 * A specialized version of `baseIsEqual` for arrays and objects which performs
10925 * deep comparisons and tracks traversed objects enabling objects with circular
10926 * references to be compared.
10927 *
10928 * @private
10929 * @param {Object} object The object to compare.
10930 * @param {Object} other The other object to compare.
10931 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
10932 * @param {Function} customizer The function to customize comparisons.
10933 * @param {Function} equalFunc The function to determine equivalents of values.
10934 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
10935 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10936 */
10937function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
10938  var objIsArr = isArray(object),
10939      othIsArr = isArray(other),
10940      objTag = objIsArr ? arrayTag : getTag(object),
10941      othTag = othIsArr ? arrayTag : getTag(other);
10942
10943  objTag = objTag == argsTag ? objectTag : objTag;
10944  othTag = othTag == argsTag ? objectTag : othTag;
10945
10946  var objIsObj = objTag == objectTag,
10947      othIsObj = othTag == objectTag,
10948      isSameTag = objTag == othTag;
10949
10950  if (isSameTag && isBuffer(object)) {
10951    if (!isBuffer(other)) {
10952      return false;
10953    }
10954    objIsArr = true;
10955    objIsObj = false;
10956  }
10957  if (isSameTag && !objIsObj) {
10958    stack || (stack = new Stack);
10959    return (objIsArr || isTypedArray(object))
10960      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
10961      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
10962  }
10963  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
10964    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
10965        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
10966
10967    if (objIsWrapped || othIsWrapped) {
10968      var objUnwrapped = objIsWrapped ? object.value() : object,
10969          othUnwrapped = othIsWrapped ? other.value() : other;
10970
10971      stack || (stack = new Stack);
10972      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
10973    }
10974  }
10975  if (!isSameTag) {
10976    return false;
10977  }
10978  stack || (stack = new Stack);
10979  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
10980}
10981
10982module.exports = baseIsEqualDeep;
10983
10984
10985/***/ }),
10986/* 208 */
10987/***/ (function(module, exports, __webpack_require__) {
10988
10989var MapCache = __webpack_require__(46),
10990    setCacheAdd = __webpack_require__(209),
10991    setCacheHas = __webpack_require__(210);
10992
10993/**
10994 *
10995 * Creates an array cache object to store unique values.
10996 *
10997 * @private
10998 * @constructor
10999 * @param {Array} [values] The values to cache.
11000 */
11001function SetCache(values) {
11002  var index = -1,
11003      length = values == null ? 0 : values.length;
11004
11005  this.__data__ = new MapCache;
11006  while (++index < length) {
11007    this.add(values[index]);
11008  }
11009}
11010
11011// Add methods to `SetCache`.
11012SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
11013SetCache.prototype.has = setCacheHas;
11014
11015module.exports = SetCache;
11016
11017
11018/***/ }),
11019/* 209 */
11020/***/ (function(module, exports) {
11021
11022/** Used to stand-in for `undefined` hash values. */
11023var HASH_UNDEFINED = '__lodash_hash_undefined__';
11024
11025/**
11026 * Adds `value` to the array cache.
11027 *
11028 * @private
11029 * @name add
11030 * @memberOf SetCache
11031 * @alias push
11032 * @param {*} value The value to cache.
11033 * @returns {Object} Returns the cache instance.
11034 */
11035function setCacheAdd(value) {
11036  this.__data__.set(value, HASH_UNDEFINED);
11037  return this;
11038}
11039
11040module.exports = setCacheAdd;
11041
11042
11043/***/ }),
11044/* 210 */
11045/***/ (function(module, exports) {
11046
11047/**
11048 * Checks if `value` is in the array cache.
11049 *
11050 * @private
11051 * @name has
11052 * @memberOf SetCache
11053 * @param {*} value The value to search for.
11054 * @returns {number} Returns `true` if `value` is found, else `false`.
11055 */
11056function setCacheHas(value) {
11057  return this.__data__.has(value);
11058}
11059
11060module.exports = setCacheHas;
11061
11062
11063/***/ }),
11064/* 211 */
11065/***/ (function(module, exports) {
11066
11067/**
11068 * A specialized version of `_.some` for arrays without support for iteratee
11069 * shorthands.
11070 *
11071 * @private
11072 * @param {Array} [array] The array to iterate over.
11073 * @param {Function} predicate The function invoked per iteration.
11074 * @returns {boolean} Returns `true` if any element passes the predicate check,
11075 *  else `false`.
11076 */
11077function arraySome(array, predicate) {
11078  var index = -1,
11079      length = array == null ? 0 : array.length;
11080
11081  while (++index < length) {
11082    if (predicate(array[index], index, array)) {
11083      return true;
11084    }
11085  }
11086  return false;
11087}
11088
11089module.exports = arraySome;
11090
11091
11092/***/ }),
11093/* 212 */
11094/***/ (function(module, exports) {
11095
11096/**
11097 * Checks if a `cache` value for `key` exists.
11098 *
11099 * @private
11100 * @param {Object} cache The cache to query.
11101 * @param {string} key The key of the entry to check.
11102 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11103 */
11104function cacheHas(cache, key) {
11105  return cache.has(key);
11106}
11107
11108module.exports = cacheHas;
11109
11110
11111/***/ }),
11112/* 213 */
11113/***/ (function(module, exports, __webpack_require__) {
11114
11115var Symbol = __webpack_require__(20),
11116    Uint8Array = __webpack_require__(214),
11117    eq = __webpack_require__(44),
11118    equalArrays = __webpack_require__(92),
11119    mapToArray = __webpack_require__(215),
11120    setToArray = __webpack_require__(216);
11121
11122/** Used to compose bitmasks for value comparisons. */
11123var COMPARE_PARTIAL_FLAG = 1,
11124    COMPARE_UNORDERED_FLAG = 2;
11125
11126/** `Object#toString` result references. */
11127var boolTag = '[object Boolean]',
11128    dateTag = '[object Date]',
11129    errorTag = '[object Error]',
11130    mapTag = '[object Map]',
11131    numberTag = '[object Number]',
11132    regexpTag = '[object RegExp]',
11133    setTag = '[object Set]',
11134    stringTag = '[object String]',
11135    symbolTag = '[object Symbol]';
11136
11137var arrayBufferTag = '[object ArrayBuffer]',
11138    dataViewTag = '[object DataView]';
11139
11140/** Used to convert symbols to primitives and strings. */
11141var symbolProto = Symbol ? Symbol.prototype : undefined,
11142    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
11143
11144/**
11145 * A specialized version of `baseIsEqualDeep` for comparing objects of
11146 * the same `toStringTag`.
11147 *
11148 * **Note:** This function only supports comparing values with tags of
11149 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
11150 *
11151 * @private
11152 * @param {Object} object The object to compare.
11153 * @param {Object} other The other object to compare.
11154 * @param {string} tag The `toStringTag` of the objects to compare.
11155 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11156 * @param {Function} customizer The function to customize comparisons.
11157 * @param {Function} equalFunc The function to determine equivalents of values.
11158 * @param {Object} stack Tracks traversed `object` and `other` objects.
11159 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11160 */
11161function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
11162  switch (tag) {
11163    case dataViewTag:
11164      if ((object.byteLength != other.byteLength) ||
11165          (object.byteOffset != other.byteOffset)) {
11166        return false;
11167      }
11168      object = object.buffer;
11169      other = other.buffer;
11170
11171    case arrayBufferTag:
11172      if ((object.byteLength != other.byteLength) ||
11173          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
11174        return false;
11175      }
11176      return true;
11177
11178    case boolTag:
11179    case dateTag:
11180    case numberTag:
11181      // Coerce booleans to `1` or `0` and dates to milliseconds.
11182      // Invalid dates are coerced to `NaN`.
11183      return eq(+object, +other);
11184
11185    case errorTag:
11186      return object.name == other.name && object.message == other.message;
11187
11188    case regexpTag:
11189    case stringTag:
11190      // Coerce regexes to strings and treat strings, primitives and objects,
11191      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
11192      // for more details.
11193      return object == (other + '');
11194
11195    case mapTag:
11196      var convert = mapToArray;
11197
11198    case setTag:
11199      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
11200      convert || (convert = setToArray);
11201
11202      if (object.size != other.size && !isPartial) {
11203        return false;
11204      }
11205      // Assume cyclic values are equal.
11206      var stacked = stack.get(object);
11207      if (stacked) {
11208        return stacked == other;
11209      }
11210      bitmask |= COMPARE_UNORDERED_FLAG;
11211
11212      // Recursively compare objects (susceptible to call stack limits).
11213      stack.set(object, other);
11214      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
11215      stack['delete'](object);
11216      return result;
11217
11218    case symbolTag:
11219      if (symbolValueOf) {
11220        return symbolValueOf.call(object) == symbolValueOf.call(other);
11221      }
11222  }
11223  return false;
11224}
11225
11226module.exports = equalByTag;
11227
11228
11229/***/ }),
11230/* 214 */
11231/***/ (function(module, exports, __webpack_require__) {
11232
11233var root = __webpack_require__(4);
11234
11235/** Built-in value references. */
11236var Uint8Array = root.Uint8Array;
11237
11238module.exports = Uint8Array;
11239
11240
11241/***/ }),
11242/* 215 */
11243/***/ (function(module, exports) {
11244
11245/**
11246 * Converts `map` to its key-value pairs.
11247 *
11248 * @private
11249 * @param {Object} map The map to convert.
11250 * @returns {Array} Returns the key-value pairs.
11251 */
11252function mapToArray(map) {
11253  var index = -1,
11254      result = Array(map.size);
11255
11256  map.forEach(function(value, key) {
11257    result[++index] = [key, value];
11258  });
11259  return result;
11260}
11261
11262module.exports = mapToArray;
11263
11264
11265/***/ }),
11266/* 216 */
11267/***/ (function(module, exports) {
11268
11269/**
11270 * Converts `set` to an array of its values.
11271 *
11272 * @private
11273 * @param {Object} set The set to convert.
11274 * @returns {Array} Returns the values.
11275 */
11276function setToArray(set) {
11277  var index = -1,
11278      result = Array(set.size);
11279
11280  set.forEach(function(value) {
11281    result[++index] = value;
11282  });
11283  return result;
11284}
11285
11286module.exports = setToArray;
11287
11288
11289/***/ }),
11290/* 217 */
11291/***/ (function(module, exports, __webpack_require__) {
11292
11293var getAllKeys = __webpack_require__(218);
11294
11295/** Used to compose bitmasks for value comparisons. */
11296var COMPARE_PARTIAL_FLAG = 1;
11297
11298/** Used for built-in method references. */
11299var objectProto = Object.prototype;
11300
11301/** Used to check objects for own properties. */
11302var hasOwnProperty = objectProto.hasOwnProperty;
11303
11304/**
11305 * A specialized version of `baseIsEqualDeep` for objects with support for
11306 * partial deep comparisons.
11307 *
11308 * @private
11309 * @param {Object} object The object to compare.
11310 * @param {Object} other The other object to compare.
11311 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11312 * @param {Function} customizer The function to customize comparisons.
11313 * @param {Function} equalFunc The function to determine equivalents of values.
11314 * @param {Object} stack Tracks traversed `object` and `other` objects.
11315 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11316 */
11317function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
11318  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
11319      objProps = getAllKeys(object),
11320      objLength = objProps.length,
11321      othProps = getAllKeys(other),
11322      othLength = othProps.length;
11323
11324  if (objLength != othLength && !isPartial) {
11325    return false;
vendor: 1,075 bytes, lines 11326-11360
11326  }
11327  var index = objLength;
11328  while (index--) {
11329    var key = objProps[index];
11330    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
11331      return false;
11332    }
11333  }
11334  // Check that cyclic values are equal.
11335  var objStacked = stack.get(object);
11336  var othStacked = stack.get(other);
11337  if (objStacked && othStacked) {
11338    return objStacked == other && othStacked == object;
11339  }
11340  var result = true;
11341  stack.set(object, other);
11342  stack.set(other, object);
11343
11344  var skipCtor = isPartial;
11345  while (++index < objLength) {
11346    key = objProps[index];
11347    var objValue = object[key],
11348        othValue = other[key];
11349
11350    if (customizer) {
11351      var compared = isPartial
11352        ? customizer(othValue, objValue, key, other, object, stack)
11353        : customizer(objValue, othValue, key, object, other, stack);
11354    }
11355    // Recursively compare objects (susceptible to call stack limits).
11356    if (!(compared === undefined
11357          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
11358          : compared
11359        )) {
11360      result = false;
vendor: 10,618 bytes, lines 11361-11768
11361      break;
11362    }
11363    skipCtor || (skipCtor = key == 'constructor');
11364  }
11365  if (result && !skipCtor) {
11366    var objCtor = object.constructor,
11367        othCtor = other.constructor;
11368
11369    // Non `Object` object instances with different constructors are not equal.
11370    if (objCtor != othCtor &&
11371        ('constructor' in object && 'constructor' in other) &&
11372        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
11373          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
11374      result = false;
11375    }
11376  }
11377  stack['delete'](object);
11378  stack['delete'](other);
11379  return result;
11380}
11381
11382module.exports = equalObjects;
11383
11384
11385/***/ }),
11386/* 218 */
11387/***/ (function(module, exports, __webpack_require__) {
11388
11389var baseGetAllKeys = __webpack_require__(93),
11390    getSymbols = __webpack_require__(94),
11391    keys = __webpack_require__(32);
11392
11393/**
11394 * Creates an array of own enumerable property names and symbols of `object`.
11395 *
11396 * @private
11397 * @param {Object} object The object to query.
11398 * @returns {Array} Returns the array of property names and symbols.
11399 */
11400function getAllKeys(object) {
11401  return baseGetAllKeys(object, keys, getSymbols);
11402}
11403
11404module.exports = getAllKeys;
11405
11406
11407/***/ }),
11408/* 219 */
11409/***/ (function(module, exports) {
11410
11411/**
11412 * A specialized version of `_.filter` for arrays without support for
11413 * iteratee shorthands.
11414 *
11415 * @private
11416 * @param {Array} [array] The array to iterate over.
11417 * @param {Function} predicate The function invoked per iteration.
11418 * @returns {Array} Returns the new filtered array.
11419 */
11420function arrayFilter(array, predicate) {
11421  var index = -1,
11422      length = array == null ? 0 : array.length,
11423      resIndex = 0,
11424      result = [];
11425
11426  while (++index < length) {
11427    var value = array[index];
11428    if (predicate(value, index, array)) {
11429      result[resIndex++] = value;
11430    }
11431  }
11432  return result;
11433}
11434
11435module.exports = arrayFilter;
11436
11437
11438/***/ }),
11439/* 220 */
11440/***/ (function(module, exports) {
11441
11442/**
11443 * The base implementation of `_.times` without support for iteratee shorthands
11444 * or max array length checks.
11445 *
11446 * @private
11447 * @param {number} n The number of times to invoke `iteratee`.
11448 * @param {Function} iteratee The function invoked per iteration.
11449 * @returns {Array} Returns the array of results.
11450 */
11451function baseTimes(n, iteratee) {
11452  var index = -1,
11453      result = Array(n);
11454
11455  while (++index < n) {
11456    result[index] = iteratee(index);
11457  }
11458  return result;
11459}
11460
11461module.exports = baseTimes;
11462
11463
11464/***/ }),
11465/* 221 */
11466/***/ (function(module, exports, __webpack_require__) {
11467
11468var baseGetTag = __webpack_require__(11),
11469    isObjectLike = __webpack_require__(9);
11470
11471/** `Object#toString` result references. */
11472var argsTag = '[object Arguments]';
11473
11474/**
11475 * The base implementation of `_.isArguments`.
11476 *
11477 * @private
11478 * @param {*} value The value to check.
11479 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
11480 */
11481function baseIsArguments(value) {
11482  return isObjectLike(value) && baseGetTag(value) == argsTag;
11483}
11484
11485module.exports = baseIsArguments;
11486
11487
11488/***/ }),
11489/* 222 */
11490/***/ (function(module, exports) {
11491
11492/**
11493 * This method returns `false`.
11494 *
11495 * @static
11496 * @memberOf _
11497 * @since 4.13.0
11498 * @category Util
11499 * @returns {boolean} Returns `false`.
11500 * @example
11501 *
11502 * _.times(2, _.stubFalse);
11503 * // => [false, false]
11504 */
11505function stubFalse() {
11506  return false;
11507}
11508
11509module.exports = stubFalse;
11510
11511
11512/***/ }),
11513/* 223 */
11514/***/ (function(module, exports, __webpack_require__) {
11515
11516var baseGetTag = __webpack_require__(11),
11517    isLength = __webpack_require__(51),
11518    isObjectLike = __webpack_require__(9);
11519
11520/** `Object#toString` result references. */
11521var argsTag = '[object Arguments]',
11522    arrayTag = '[object Array]',
11523    boolTag = '[object Boolean]',
11524    dateTag = '[object Date]',
11525    errorTag = '[object Error]',
11526    funcTag = '[object Function]',
11527    mapTag = '[object Map]',
11528    numberTag = '[object Number]',
11529    objectTag = '[object Object]',
11530    regexpTag = '[object RegExp]',
11531    setTag = '[object Set]',
11532    stringTag = '[object String]',
11533    weakMapTag = '[object WeakMap]';
11534
11535var arrayBufferTag = '[object ArrayBuffer]',
11536    dataViewTag = '[object DataView]',
11537    float32Tag = '[object Float32Array]',
11538    float64Tag = '[object Float64Array]',
11539    int8Tag = '[object Int8Array]',
11540    int16Tag = '[object Int16Array]',
11541    int32Tag = '[object Int32Array]',
11542    uint8Tag = '[object Uint8Array]',
11543    uint8ClampedTag = '[object Uint8ClampedArray]',
11544    uint16Tag = '[object Uint16Array]',
11545    uint32Tag = '[object Uint32Array]';
11546
11547/** Used to identify `toStringTag` values of typed arrays. */
11548var typedArrayTags = {};
11549typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
11550typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
11551typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
11552typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
11553typedArrayTags[uint32Tag] = true;
11554typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
11555typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
11556typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
11557typedArrayTags[errorTag] = typedArrayTags[funcTag] =
11558typedArrayTags[mapTag] = typedArrayTags[numberTag] =
11559typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
11560typedArrayTags[setTag] = typedArrayTags[stringTag] =
11561typedArrayTags[weakMapTag] = false;
11562
11563/**
11564 * The base implementation of `_.isTypedArray` without Node.js optimizations.
11565 *
11566 * @private
11567 * @param {*} value The value to check.
11568 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
11569 */
11570function baseIsTypedArray(value) {
11571  return isObjectLike(value) &&
11572    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
11573}
11574
11575module.exports = baseIsTypedArray;
11576
11577
11578/***/ }),
11579/* 224 */
11580/***/ (function(module, exports) {
11581
11582/**
11583 * The base implementation of `_.unary` without support for storing metadata.
11584 *
11585 * @private
11586 * @param {Function} func The function to cap arguments for.
11587 * @returns {Function} Returns the new capped function.
11588 */
11589function baseUnary(func) {
11590  return function(value) {
11591    return func(value);
11592  };
11593}
11594
11595module.exports = baseUnary;
11596
11597
11598/***/ }),
11599/* 225 */
11600/***/ (function(module, exports, __webpack_require__) {
11601
11602/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(89);
11603
11604/** Detect free variable `exports`. */
11605var freeExports =  true && exports && !exports.nodeType && exports;
11606
11607/** Detect free variable `module`. */
11608var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
11609
11610/** Detect the popular CommonJS extension `module.exports`. */
11611var moduleExports = freeModule && freeModule.exports === freeExports;
11612
11613/** Detect free variable `process` from Node.js. */
11614var freeProcess = moduleExports && freeGlobal.process;
11615
11616/** Used to access faster Node.js helpers. */
11617var nodeUtil = (function() {
11618  try {
11619    // Use `util.types` for Node.js 10+.
11620    var types = freeModule && freeModule.require && freeModule.require('util').types;
11621
11622    if (types) {
11623      return types;
11624    }
11625
11626    // Legacy `process.binding('util')` for Node.js < 10.
11627    return freeProcess && freeProcess.binding && freeProcess.binding('util');
11628  } catch (e) {}
11629}());
11630
11631module.exports = nodeUtil;
11632
11633/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(97)(module)))
11634
11635/***/ }),
11636/* 226 */
11637/***/ (function(module, exports, __webpack_require__) {
11638
11639var overArg = __webpack_require__(98);
11640
11641/* Built-in method references for those with the same name as other `lodash` methods. */
11642var nativeKeys = overArg(Object.keys, Object);
11643
11644module.exports = nativeKeys;
11645
11646
11647/***/ }),
11648/* 227 */
11649/***/ (function(module, exports, __webpack_require__) {
11650
11651var getNative = __webpack_require__(8),
11652    root = __webpack_require__(4);
11653
11654/* Built-in method references that are verified to be native. */
11655var DataView = getNative(root, 'DataView');
11656
11657module.exports = DataView;
11658
11659
11660/***/ }),
11661/* 228 */
11662/***/ (function(module, exports, __webpack_require__) {
11663
11664var getNative = __webpack_require__(8),
11665    root = __webpack_require__(4);
11666
11667/* Built-in method references that are verified to be native. */
11668var Promise = getNative(root, 'Promise');
11669
11670module.exports = Promise;
11671
11672
11673/***/ }),
11674/* 229 */
11675/***/ (function(module, exports, __webpack_require__) {
11676
11677var getNative = __webpack_require__(8),
11678    root = __webpack_require__(4);
11679
11680/* Built-in method references that are verified to be native. */
11681var Set = getNative(root, 'Set');
11682
11683module.exports = Set;
11684
11685
11686/***/ }),
11687/* 230 */
11688/***/ (function(module, exports, __webpack_require__) {
11689
11690var isStrictComparable = __webpack_require__(100),
11691    keys = __webpack_require__(32);
11692
11693/**
11694 * Gets the property names, values, and compare flags of `object`.
11695 *
11696 * @private
11697 * @param {Object} object The object to query.
11698 * @returns {Array} Returns the match data of `object`.
11699 */
11700function getMatchData(object) {
11701  var result = keys(object),
11702      length = result.length;
11703
11704  while (length--) {
11705    var key = result[length],
11706        value = object[key];
11707
11708    result[length] = [key, value, isStrictComparable(value)];
11709  }
11710  return result;
11711}
11712
11713module.exports = getMatchData;
11714
11715
11716/***/ }),
11717/* 231 */
11718/***/ (function(module, exports, __webpack_require__) {
11719
11720var baseIsEqual = __webpack_require__(91),
11721    get = __webpack_require__(55),
11722    hasIn = __webpack_require__(237),
11723    isKey = __webpack_require__(57),
11724    isStrictComparable = __webpack_require__(100),
11725    matchesStrictComparable = __webpack_require__(101),
11726    toKey = __webpack_require__(21);
11727
11728/** Used to compose bitmasks for value comparisons. */
11729var COMPARE_PARTIAL_FLAG = 1,
11730    COMPARE_UNORDERED_FLAG = 2;
11731
11732/**
11733 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
11734 *
11735 * @private
11736 * @param {string} path The path of the property to get.
11737 * @param {*} srcValue The value to match.
11738 * @returns {Function} Returns the new spec function.
11739 */
11740function baseMatchesProperty(path, srcValue) {
11741  if (isKey(path) && isStrictComparable(srcValue)) {
11742    return matchesStrictComparable(toKey(path), srcValue);
11743  }
11744  return function(object) {
11745    var objValue = get(object, path);
11746    return (objValue === undefined && objValue === srcValue)
11747      ? hasIn(object, path)
11748      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
11749  };
11750}
11751
11752module.exports = baseMatchesProperty;
11753
11754
11755/***/ }),
11756/* 232 */
11757/***/ (function(module, exports, __webpack_require__) {
11758
11759var memoizeCapped = __webpack_require__(233);
11760
11761/** Used to match property names within property paths. */
11762var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
11763
11764/** Used to match backslashes in property paths. */
11765var reEscapeChar = /\\(\\)?/g;
11766
11767/**
11768 * Converts `string` to a property path array.
vendor: 5,053 bytes, lines 11769-11962
11769 *
11770 * @private
11771 * @param {string} string The string to convert.
11772 * @returns {Array} Returns the property path array.
11773 */
11774var stringToPath = memoizeCapped(function(string) {
11775  var result = [];
11776  if (string.charCodeAt(0) === 46 /* . */) {
11777    result.push('');
11778  }
11779  string.replace(rePropName, function(match, number, quote, subString) {
11780    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
11781  });
11782  return result;
11783});
11784
11785module.exports = stringToPath;
11786
11787
11788/***/ }),
11789/* 233 */
11790/***/ (function(module, exports, __webpack_require__) {
11791
11792var memoize = __webpack_require__(234);
11793
11794/** Used as the maximum memoize cache size. */
11795var MAX_MEMOIZE_SIZE = 500;
11796
11797/**
11798 * A specialized version of `_.memoize` which clears the memoized function's
11799 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
11800 *
11801 * @private
11802 * @param {Function} func The function to have its output memoized.
11803 * @returns {Function} Returns the new memoized function.
11804 */
11805function memoizeCapped(func) {
11806  var result = memoize(func, function(key) {
11807    if (cache.size === MAX_MEMOIZE_SIZE) {
11808      cache.clear();
11809    }
11810    return key;
11811  });
11812
11813  var cache = result.cache;
11814  return result;
11815}
11816
11817module.exports = memoizeCapped;
11818
11819
11820/***/ }),
11821/* 234 */
11822/***/ (function(module, exports, __webpack_require__) {
11823
11824var MapCache = __webpack_require__(46);
11825
11826/** Error message constants. */
11827var FUNC_ERROR_TEXT = 'Expected a function';
11828
11829/**
11830 * Creates a function that memoizes the result of `func`. If `resolver` is
11831 * provided, it determines the cache key for storing the result based on the
11832 * arguments provided to the memoized function. By default, the first argument
11833 * provided to the memoized function is used as the map cache key. The `func`
11834 * is invoked with the `this` binding of the memoized function.
11835 *
11836 * **Note:** The cache is exposed as the `cache` property on the memoized
11837 * function. Its creation may be customized by replacing the `_.memoize.Cache`
11838 * constructor with one whose instances implement the
11839 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
11840 * method interface of `clear`, `delete`, `get`, `has`, and `set`.
11841 *
11842 * @static
11843 * @memberOf _
11844 * @since 0.1.0
11845 * @category Function
11846 * @param {Function} func The function to have its output memoized.
11847 * @param {Function} [resolver] The function to resolve the cache key.
11848 * @returns {Function} Returns the new memoized function.
11849 * @example
11850 *
11851 * var object = { 'a': 1, 'b': 2 };
11852 * var other = { 'c': 3, 'd': 4 };
11853 *
11854 * var values = _.memoize(_.values);
11855 * values(object);
11856 * // => [1, 2]
11857 *
11858 * values(other);
11859 * // => [3, 4]
11860 *
11861 * object.a = 2;
11862 * values(object);
11863 * // => [1, 2]
11864 *
11865 * // Modify the result cache.
11866 * values.cache.set(object, ['a', 'b']);
11867 * values(object);
11868 * // => ['a', 'b']
11869 *
11870 * // Replace `_.memoize.Cache`.
11871 * _.memoize.Cache = WeakMap;
11872 */
11873function memoize(func, resolver) {
11874  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
11875    throw new TypeError(FUNC_ERROR_TEXT);
11876  }
11877  var memoized = function() {
11878    var args = arguments,
11879        key = resolver ? resolver.apply(this, args) : args[0],
11880        cache = memoized.cache;
11881
11882    if (cache.has(key)) {
11883      return cache.get(key);
11884    }
11885    var result = func.apply(this, args);
11886    memoized.cache = cache.set(key, result) || cache;
11887    return result;
11888  };
11889  memoized.cache = new (memoize.Cache || MapCache);
11890  return memoized;
11891}
11892
11893// Expose `MapCache`.
11894memoize.Cache = MapCache;
11895
11896module.exports = memoize;
11897
11898
11899/***/ }),
11900/* 235 */
11901/***/ (function(module, exports, __webpack_require__) {
11902
11903var baseToString = __webpack_require__(236);
11904
11905/**
11906 * Converts `value` to a string. An empty string is returned for `null`
11907 * and `undefined` values. The sign of `-0` is preserved.
11908 *
11909 * @static
11910 * @memberOf _
11911 * @since 4.0.0
11912 * @category Lang
11913 * @param {*} value The value to convert.
11914 * @returns {string} Returns the converted string.
11915 * @example
11916 *
11917 * _.toString(null);
11918 * // => ''
11919 *
11920 * _.toString(-0);
11921 * // => '-0'
11922 *
11923 * _.toString([1, 2, 3]);
11924 * // => '1,2,3'
11925 */
11926function toString(value) {
11927  return value == null ? '' : baseToString(value);
11928}
11929
11930module.exports = toString;
11931
11932
11933/***/ }),
11934/* 236 */
11935/***/ (function(module, exports, __webpack_require__) {
11936
11937var Symbol = __webpack_require__(20),
11938    arrayMap = __webpack_require__(102),
11939    isArray = __webpack_require__(1),
11940    isSymbol = __webpack_require__(35);
11941
11942/** Used as references for various `Number` constants. */
11943var INFINITY = 1 / 0;
11944
11945/** Used to convert symbols to primitives and strings. */
11946var symbolProto = Symbol ? Symbol.prototype : undefined,
11947    symbolToString = symbolProto ? symbolProto.toString : undefined;
11948
11949/**
11950 * The base implementation of `_.toString` which doesn't convert nullish
11951 * values to empty strings.
11952 *
11953 * @private
11954 * @param {*} value The value to process.
11955 * @returns {string} Returns the string.
11956 */
11957function baseToString(value) {
11958  // Exit early for strings to avoid a performance hit in some environments.
11959  if (typeof value == 'string') {
11960    return value;
11961  }
11962  if (isArray(value)) {
vendor: 2,364 bytes, lines 11963-12060
11963    // Recursively convert values (susceptible to call stack limits).
11964    return arrayMap(value, baseToString) + '';
11965  }
11966  if (isSymbol(value)) {
11967    return symbolToString ? symbolToString.call(value) : '';
11968  }
11969  var result = (value + '');
11970  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
11971}
11972
11973module.exports = baseToString;
11974
11975
11976/***/ }),
11977/* 237 */
11978/***/ (function(module, exports, __webpack_require__) {
11979
11980var baseHasIn = __webpack_require__(238),
11981    hasPath = __webpack_require__(239);
11982
11983/**
11984 * Checks if `path` is a direct or inherited property of `object`.
11985 *
11986 * @static
11987 * @memberOf _
11988 * @since 4.0.0
11989 * @category Object
11990 * @param {Object} object The object to query.
11991 * @param {Array|string} path The path to check.
11992 * @returns {boolean} Returns `true` if `path` exists, else `false`.
11993 * @example
11994 *
11995 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
11996 *
11997 * _.hasIn(object, 'a');
11998 * // => true
11999 *
12000 * _.hasIn(object, 'a.b');
12001 * // => true
12002 *
12003 * _.hasIn(object, ['a', 'b']);
12004 * // => true
12005 *
12006 * _.hasIn(object, 'b');
12007 * // => false
12008 */
12009function hasIn(object, path) {
12010  return object != null && hasPath(object, path, baseHasIn);
12011}
12012
12013module.exports = hasIn;
12014
12015
12016/***/ }),
12017/* 238 */
12018/***/ (function(module, exports) {
12019
12020/**
12021 * The base implementation of `_.hasIn` without support for deep paths.
12022 *
12023 * @private
12024 * @param {Object} [object] The object to query.
12025 * @param {Array|string} key The key to check.
12026 * @returns {boolean} Returns `true` if `key` exists, else `false`.
12027 */
12028function baseHasIn(object, key) {
12029  return object != null && key in Object(object);
12030}
12031
12032module.exports = baseHasIn;
12033
12034
12035/***/ }),
12036/* 239 */
12037/***/ (function(module, exports, __webpack_require__) {
12038
12039var castPath = __webpack_require__(34),
12040    isArguments = __webpack_require__(33),
12041    isArray = __webpack_require__(1),
12042    isIndex = __webpack_require__(49),
12043    isLength = __webpack_require__(51),
12044    toKey = __webpack_require__(21);
12045
12046/**
12047 * Checks if `path` exists on `object`.
12048 *
12049 * @private
12050 * @param {Object} object The object to query.
12051 * @param {Array|string} path The path to check.
12052 * @param {Function} hasFunc The function to check properties.
12053 * @returns {boolean} Returns `true` if `path` exists, else `false`.
12054 */
12055function hasPath(object, path, hasFunc) {
12056  path = castPath(path, object);
12057
12058  var index = -1,
12059      length = path.length,
12060      result = false;
vendor: 4,465 bytes, lines 12061-12250
12061
12062  while (++index < length) {
12063    var key = toKey(path[index]);
12064    if (!(result = object != null && hasFunc(object, key))) {
12065      break;
12066    }
12067    object = object[key];
12068  }
12069  if (result || ++index != length) {
12070    return result;
12071  }
12072  length = object == null ? 0 : object.length;
12073  return !!length && isLength(length) && isIndex(key, length) &&
12074    (isArray(object) || isArguments(object));
12075}
12076
12077module.exports = hasPath;
12078
12079
12080/***/ }),
12081/* 240 */
12082/***/ (function(module, exports, __webpack_require__) {
12083
12084var baseProperty = __webpack_require__(103),
12085    basePropertyDeep = __webpack_require__(241),
12086    isKey = __webpack_require__(57),
12087    toKey = __webpack_require__(21);
12088
12089/**
12090 * Creates a function that returns the value at `path` of a given object.
12091 *
12092 * @static
12093 * @memberOf _
12094 * @since 2.4.0
12095 * @category Util
12096 * @param {Array|string} path The path of the property to get.
12097 * @returns {Function} Returns the new accessor function.
12098 * @example
12099 *
12100 * var objects = [
12101 *   { 'a': { 'b': 2 } },
12102 *   { 'a': { 'b': 1 } }
12103 * ];
12104 *
12105 * _.map(objects, _.property('a.b'));
12106 * // => [2, 1]
12107 *
12108 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
12109 * // => [1, 2]
12110 */
12111function property(path) {
12112  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
12113}
12114
12115module.exports = property;
12116
12117
12118/***/ }),
12119/* 241 */
12120/***/ (function(module, exports, __webpack_require__) {
12121
12122var baseGet = __webpack_require__(56);
12123
12124/**
12125 * A specialized version of `baseProperty` which supports deep paths.
12126 *
12127 * @private
12128 * @param {Array|string} path The path of the property to get.
12129 * @returns {Function} Returns the new accessor function.
12130 */
12131function basePropertyDeep(path) {
12132  return function(object) {
12133    return baseGet(object, path);
12134  };
12135}
12136
12137module.exports = basePropertyDeep;
12138
12139
12140/***/ }),
12141/* 242 */
12142/***/ (function(module, exports, __webpack_require__) {
12143
12144var baseFindIndex = __webpack_require__(104),
12145    baseIteratee = __webpack_require__(7),
12146    toInteger = __webpack_require__(105);
12147
12148/* Built-in method references for those with the same name as other `lodash` methods. */
12149var nativeMax = Math.max;
12150
12151/**
12152 * This method is like `_.find` except that it returns the index of the first
12153 * element `predicate` returns truthy for instead of the element itself.
12154 *
12155 * @static
12156 * @memberOf _
12157 * @since 1.1.0
12158 * @category Array
12159 * @param {Array} array The array to inspect.
12160 * @param {Function} [predicate=_.identity] The function invoked per iteration.
12161 * @param {number} [fromIndex=0] The index to search from.
12162 * @returns {number} Returns the index of the found element, else `-1`.
12163 * @example
12164 *
12165 * var users = [
12166 *   { 'user': 'barney',  'active': false },
12167 *   { 'user': 'fred',    'active': false },
12168 *   { 'user': 'pebbles', 'active': true }
12169 * ];
12170 *
12171 * _.findIndex(users, function(o) { return o.user == 'barney'; });
12172 * // => 0
12173 *
12174 * // The `_.matches` iteratee shorthand.
12175 * _.findIndex(users, { 'user': 'fred', 'active': false });
12176 * // => 1
12177 *
12178 * // The `_.matchesProperty` iteratee shorthand.
12179 * _.findIndex(users, ['active', false]);
12180 * // => 0
12181 *
12182 * // The `_.property` iteratee shorthand.
12183 * _.findIndex(users, 'active');
12184 * // => 2
12185 */
12186function findIndex(array, predicate, fromIndex) {
12187  var length = array == null ? 0 : array.length;
12188  if (!length) {
12189    return -1;
12190  }
12191  var index = fromIndex == null ? 0 : toInteger(fromIndex);
12192  if (index < 0) {
12193    index = nativeMax(length + index, 0);
12194  }
12195  return baseFindIndex(array, baseIteratee(predicate, 3), index);
12196}
12197
12198module.exports = findIndex;
12199
12200
12201/***/ }),
12202/* 243 */
12203/***/ (function(module, exports, __webpack_require__) {
12204
12205var toNumber = __webpack_require__(59);
12206
12207/** Used as references for various `Number` constants. */
12208var INFINITY = 1 / 0,
12209    MAX_INTEGER = 1.7976931348623157e+308;
12210
12211/**
12212 * Converts `value` to a finite number.
12213 *
12214 * @static
12215 * @memberOf _
12216 * @since 4.12.0
12217 * @category Lang
12218 * @param {*} value The value to convert.
12219 * @returns {number} Returns the converted number.
12220 * @example
12221 *
12222 * _.toFinite(3.2);
12223 * // => 3.2
12224 *
12225 * _.toFinite(Number.MIN_VALUE);
12226 * // => 5e-324
12227 *
12228 * _.toFinite(Infinity);
12229 * // => 1.7976931348623157e+308
12230 *
12231 * _.toFinite('3.2');
12232 * // => 3.2
12233 */
12234function toFinite(value) {
12235  if (!value) {
12236    return value === 0 ? value : 0;
12237  }
12238  value = toNumber(value);
12239  if (value === INFINITY || value === -INFINITY) {
12240    var sign = (value < 0 ? -1 : 1);
12241    return sign * MAX_INTEGER;
12242  }
12243  return value === value ? value : 0;
12244}
12245
12246module.exports = toFinite;
12247
12248
12249/***/ }),
12250/* 244 */
12251/***/ (function(module, exports) {
12252
12253function _arrayWithoutHoles(arr) {
12254  if (Array.isArray(arr)) {
12255    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
12256      arr2[i] = arr[i];
12257    }
12258
12259    return arr2;
12260  }
12261}
12262
12263module.exports = _arrayWithoutHoles;
12264
12265/***/ }),
12266/* 245 */
12267/***/ (function(module, exports) {
12268
12269function _iterableToArray(iter) {
12270  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
12271}
12272
12273module.exports = _iterableToArray;
12274
12275/***/ }),
12276/* 246 */
12277/***/ (function(module, exports) {
12278
12279function _nonIterableSpread() {
12280  throw new TypeError("Invalid attempt to spread non-iterable instance");
12281}
12282
12283module.exports = _nonIterableSpread;
12284
12285/***/ }),
12286/* 247 */
12287/***/ (function(module, exports, __webpack_require__) {
12288
12289"use strict";
12290
12291
12292Object.defineProperty(exports, "__esModule", {
12293  value: true
12294});
12295exports.createElementState = createElementState;
12296exports.mergeActionState = mergeActionState;
12297exports.ixElements = void 0;
12298
12299var _timm = __webpack_require__(19);
12300
12301var _constants = __webpack_require__(2);
12302
12303var _constants$IX2EngineC = _constants.IX2EngineConstants,
12304    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
12305    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
12306    ABSTRACT_NODE = _constants$IX2EngineC.ABSTRACT_NODE,
12307    CONFIG_X_VALUE = _constants$IX2EngineC.CONFIG_X_VALUE,
12308    CONFIG_Y_VALUE = _constants$IX2EngineC.CONFIG_Y_VALUE,
12309    CONFIG_Z_VALUE = _constants$IX2EngineC.CONFIG_Z_VALUE,
12310    CONFIG_VALUE = _constants$IX2EngineC.CONFIG_VALUE,
12311    CONFIG_X_UNIT = _constants$IX2EngineC.CONFIG_X_UNIT,
12312    CONFIG_Y_UNIT = _constants$IX2EngineC.CONFIG_Y_UNIT,
12313    CONFIG_Z_UNIT = _constants$IX2EngineC.CONFIG_Z_UNIT,
12314    CONFIG_UNIT = _constants$IX2EngineC.CONFIG_UNIT;
12315var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
12316    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
12317    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
12318    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED;
12319var initialState = {};
12320var refState = 'refState';
12321
12322var ixElements = function ixElements() {
12323  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
12324  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12325
12326  switch (action.type) {
12327    case IX2_SESSION_STOPPED:
12328      {
12329        return initialState;
12330      }
12331
12332    case IX2_INSTANCE_ADDED:
12333      {
12334        var _action$payload = action.payload,
12335            elementId = _action$payload.elementId,
12336            ref = _action$payload.element,
12337            origin = _action$payload.origin,
12338            actionItem = _action$payload.actionItem,
12339            refType = _action$payload.refType;
12340        var actionTypeId = actionItem.actionTypeId;
12341        var newState = state; // Create new ref entry if it doesn't exist
12342
12343        if ((0, _timm.getIn)(newState, [elementId, ref]) !== ref) {
12344          newState = createElementState(newState, ref, refType, elementId, actionItem);
12345        } // Merge origin values into ref state
12346
12347
12348        return mergeActionState(newState, elementId, actionTypeId, origin, actionItem);
12349      }
12350
12351    case IX2_ELEMENT_STATE_CHANGED:
12352      {
12353        var _action$payload2 = action.payload,
12354            _elementId = _action$payload2.elementId,
12355            _actionTypeId = _action$payload2.actionTypeId,
12356            current = _action$payload2.current,
12357            _actionItem = _action$payload2.actionItem;
12358        return mergeActionState(state, _elementId, _actionTypeId, current, _actionItem);
12359      }
12360
12361    default:
12362      {
12363        return state;
12364      }
12365  }
12366};
12367
12368exports.ixElements = ixElements;
12369
12370function createElementState(state, ref, refType, elementId, actionItem) {
12371  var refId = refType === PLAIN_OBJECT ? (0, _timm.getIn)(actionItem, ['config', 'target', 'objectId']) : null;
12372  return (0, _timm.mergeIn)(state, [elementId], {
12373    id: elementId,
12374    ref: ref,
12375    refId: refId,
12376    refType: refType
12377  });
12378}
12379
12380function mergeActionState(state, elementId, actionTypeId, actionState, // FIXME: weak type is used
12381actionItem) {
12382  var units = pickUnits(actionItem);
12383  var mergePath = [elementId, refState, actionTypeId];
12384  return (0, _timm.mergeIn)(state, mergePath, actionState, units);
12385}
12386
12387var 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
12388// eslint-disable-next-line flowtype/no-weak-types
12389
12390function pickUnits(actionItem) {
12391  var config = actionItem.config;
12392  return valueUnitPairs.reduce(function (result, pair) {
12393    var valueKey = pair[0];
12394    var unitKey = pair[1];
12395    var configValue = config[valueKey];
12396    var configUnit = config[unitKey];
12397
12398    if (configValue != null && configUnit != null) {
12399      result[unitKey] = configUnit;
12400    }
12401
12402    return result;
12403  }, {});
12404}
12405
12406/***/ }),
12407/* 248 */
12408/***/ (function(module, exports, __webpack_require__) {
12409
12410"use strict";
12411
12412
12413Object.defineProperty(exports, "__esModule", {
12414  value: true
12415});
12416exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginDuration = exports.getPluginConfig = void 0;
12417/* eslint-env browser */
12418// $FlowFixMe
12419
12420var getPluginConfig = function getPluginConfig(actionItemConfig) {
12421  return actionItemConfig.value;
12422}; // $FlowFixMe
12423
12424
12425exports.getPluginConfig = getPluginConfig;
12426
12427var getPluginDuration = function getPluginDuration(element, actionItem) {
12428  if (actionItem.config.duration !== 'auto') {
12429    return null;
12430  }
12431
12432  var duration = parseFloat(element.getAttribute('data-duration'));
12433
12434  if (duration > 0) {
12435    return duration * 1000;
12436  }
12437
12438  return parseFloat(element.getAttribute('data-default-duration')) * 1000;
12439}; // $FlowFixMe
12440
12441
12442exports.getPluginDuration = getPluginDuration;
12443
12444var getPluginOrigin = function getPluginOrigin(refState) {
12445  return refState || {
12446    value: 0
12447  };
12448}; // $FlowFixMe
12449
12450
12451exports.getPluginOrigin = getPluginOrigin;
12452
12453var getPluginDestination = function getPluginDestination(actionItemConfig) {
12454  return {
12455    value: actionItemConfig.value
12456  };
12457}; // $FlowFixMe
12458
12459
12460exports.getPluginDestination = getPluginDestination;
12461
12462var createPluginInstance = function createPluginInstance(element) {
12463  var instance = window.Webflow.require('lottie').createInstance(element);
12464
12465  instance.stop();
12466  instance.setSubframe(true);
12467  return instance;
12468}; // $FlowFixMe
12469
12470
12471exports.createPluginInstance = createPluginInstance;
12472
12473var renderPlugin = function renderPlugin(pluginInstance, refState, actionItem) {
12474  if (!pluginInstance) {
12475    return;
12476  }
12477
12478  var percent = refState[actionItem.actionTypeId].value / 100;
12479  pluginInstance.goToFrame(pluginInstance.frames * percent);
12480}; // $FlowFixMe
12481
12482
12483exports.renderPlugin = renderPlugin;
12484
12485var clearPlugin = function clearPlugin(element) {
12486  var instance = window.Webflow.require('lottie').createInstance(element);
12487
12488  instance.stop();
12489};
12490
12491exports.clearPlugin = clearPlugin;
12492
12493/***/ }),
12494/* 249 */
12495/***/ (function(module, exports, __webpack_require__) {
12496
12497"use strict";
12498
12499
12500var _interopRequireDefault2 = __webpack_require__(0);
12501
12502var _typeof2 = _interopRequireDefault2(__webpack_require__(13));
12503
12504var _defineProperty2 = _interopRequireDefault2(__webpack_require__(26));
12505
12506var _Object$freeze, _Object$freeze2, _transformDefaults;
12507
12508var _interopRequireDefault = __webpack_require__(0);
12509
12510Object.defineProperty(exports, "__esModule", {
12511  value: true
12512});
12513exports.getInstanceId = getInstanceId;
12514exports.getElementId = getElementId;
12515exports.reifyState = reifyState;
12516exports.observeStore = observeStore;
12517exports.getAffectedElements = getAffectedElements;
12518exports.getComputedStyle = getComputedStyle;
12519exports.getInstanceOrigin = getInstanceOrigin;
12520exports.getDestinationValues = getDestinationValues;
12521exports.getRenderType = getRenderType;
12522exports.getStyleProp = getStyleProp;
12523exports.renderHTMLElement = renderHTMLElement;
12524exports.clearAllStyles = clearAllStyles;
12525exports.cleanupHTMLElement = cleanupHTMLElement;
12526exports.getMaxDurationItemIndex = getMaxDurationItemIndex;
12527exports.getActionListProgress = getActionListProgress;
12528exports.reduceListToGroup = reduceListToGroup;
12529exports.shouldNamespaceEventParameter = shouldNamespaceEventParameter;
12530exports.getNamespacedParameterId = getNamespacedParameterId;
12531exports.shouldAllowMediaQuery = shouldAllowMediaQuery;
12532exports.mediaQueriesEqual = mediaQueriesEqual;
12533exports.stringifyTarget = stringifyTarget;
12534exports.getItemConfigByKey = void 0;
12535
12536var _defaultTo = _interopRequireDefault(__webpack_require__(250));
12537
12538var _reduce = _interopRequireDefault(__webpack_require__(251));
12539
12540var _findLast = _interopRequireDefault(__webpack_require__(257));
12541
12542var _timm = __webpack_require__(19);
12543
12544var _shallowEqual = _interopRequireDefault(__webpack_require__(113));
12545
12546var _constants = __webpack_require__(2);
12547
12548var _IX2EasingUtils = __webpack_require__(108);
12549
12550var _IX2VanillaPlugins = __webpack_require__(110);
12551
12552var _IX2BrowserSupport = __webpack_require__(43);
12553/* eslint-env browser */
12554
12555
12556var _constants$IX2EngineC = _constants.IX2EngineConstants,
12557    BACKGROUND = _constants$IX2EngineC.BACKGROUND,
12558    TRANSFORM = _constants$IX2EngineC.TRANSFORM,
12559    TRANSLATE_3D = _constants$IX2EngineC.TRANSLATE_3D,
12560    SCALE_3D = _constants$IX2EngineC.SCALE_3D,
12561    ROTATE_X = _constants$IX2EngineC.ROTATE_X,
12562    ROTATE_Y = _constants$IX2EngineC.ROTATE_Y,
12563    ROTATE_Z = _constants$IX2EngineC.ROTATE_Z,
12564    SKEW = _constants$IX2EngineC.SKEW,
12565    PRESERVE_3D = _constants$IX2EngineC.PRESERVE_3D,
12566    FLEX = _constants$IX2EngineC.FLEX,
12567    OPACITY = _constants$IX2EngineC.OPACITY,
12568    FILTER = _constants$IX2EngineC.FILTER,
12569    WIDTH = _constants$IX2EngineC.WIDTH,
12570    HEIGHT = _constants$IX2EngineC.HEIGHT,
12571    BACKGROUND_COLOR = _constants$IX2EngineC.BACKGROUND_COLOR,
12572    BORDER_COLOR = _constants$IX2EngineC.BORDER_COLOR,
12573    COLOR = _constants$IX2EngineC.COLOR,
12574    CHILDREN = _constants$IX2EngineC.CHILDREN,
12575    IMMEDIATE_CHILDREN = _constants$IX2EngineC.IMMEDIATE_CHILDREN,
12576    SIBLINGS = _constants$IX2EngineC.SIBLINGS,
12577    PARENT = _constants$IX2EngineC.PARENT,
12578    DISPLAY = _constants$IX2EngineC.DISPLAY,
12579    WILL_CHANGE = _constants$IX2EngineC.WILL_CHANGE,
12580    AUTO = _constants$IX2EngineC.AUTO,
12581    COMMA_DELIMITER = _constants$IX2EngineC.COMMA_DELIMITER,
12582    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
12583    BAR_DELIMITER = _constants$IX2EngineC.BAR_DELIMITER,
12584    RENDER_TRANSFORM = _constants$IX2EngineC.RENDER_TRANSFORM,
12585    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
12586    RENDER_STYLE = _constants$IX2EngineC.RENDER_STYLE,
12587    RENDER_PLUGIN = _constants$IX2EngineC.RENDER_PLUGIN;
12588var _constants$ActionType = _constants.ActionTypeConsts,
12589    TRANSFORM_MOVE = _constants$ActionType.TRANSFORM_MOVE,
12590    TRANSFORM_SCALE = _constants$ActionType.TRANSFORM_SCALE,
12591    TRANSFORM_ROTATE = _constants$ActionType.TRANSFORM_ROTATE,
12592    TRANSFORM_SKEW = _constants$ActionType.TRANSFORM_SKEW,
12593    STYLE_OPACITY = _constants$ActionType.STYLE_OPACITY,
12594    STYLE_FILTER = _constants$ActionType.STYLE_FILTER,
12595    STYLE_SIZE = _constants$ActionType.STYLE_SIZE,
12596    STYLE_BACKGROUND_COLOR = _constants$ActionType.STYLE_BACKGROUND_COLOR,
12597    STYLE_BORDER = _constants$ActionType.STYLE_BORDER,
12598    STYLE_TEXT_COLOR = _constants$ActionType.STYLE_TEXT_COLOR,
12599    GENERAL_DISPLAY = _constants$ActionType.GENERAL_DISPLAY;
12600var OBJECT_VALUE = 'OBJECT_VALUE';
12601
12602var trim = function trim(v) {
12603  return v.trim();
12604};
12605
12606var 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));
12607var 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), _Object$freeze2));
12608var objectCache = {};
12609var instanceCount = 1;
12610
12611function getInstanceId() {
12612  return 'i' + instanceCount++;
12613}
12614
12615var elementCount = 1; // $FlowFixMe
12616
12617function getElementId(ixElements, ref) {
12618  // TODO: optimize element lookup
12619  for (var key in ixElements) {
12620    var ixEl = ixElements[key];
12621
12622    if (ixEl && ixEl.ref === ref) {
12623      return ixEl.id;
12624    }
12625  }
12626
12627  return 'e' + elementCount++;
12628} // $FlowFixMe
12629
12630
12631function reifyState() {
12632  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
12633      events = _ref2.events,
12634      actionLists = _ref2.actionLists,
12635      site = _ref2.site;
12636
12637  var eventTypeMap = (0, _reduce["default"])(events, function (result, event) {
12638    var eventTypeId = event.eventTypeId;
12639
12640    if (!result[eventTypeId]) {
12641      result[eventTypeId] = {};
12642    }
12643
12644    result[eventTypeId][event.id] = event;
12645    return result;
12646  }, {});
12647  var mediaQueries = site && site.mediaQueries;
12648  var mediaQueryKeys = [];
12649
12650  if (mediaQueries) {
12651    mediaQueryKeys = mediaQueries.map(function (mq) {
12652      return mq.key;
12653    });
12654  } else {
12655    mediaQueries = [];
12656    console.warn("IX2 missing mediaQueries in site data");
12657  }
12658
12659  return {
12660    ixData: {
12661      events: events,
12662      actionLists: actionLists,
12663      eventTypeMap: eventTypeMap,
12664      mediaQueries: mediaQueries,
12665      mediaQueryKeys: mediaQueryKeys
12666    }
12667  };
12668}
12669
12670var strictEqual = function strictEqual(a, b) {
12671  return a === b;
12672}; // $FlowFixMe
12673
12674
12675function observeStore(_ref3) {
12676  var store = _ref3.store,
12677      select = _ref3.select,
12678      onChange = _ref3.onChange,
12679      _ref3$comparator = _ref3.comparator,
12680      comparator = _ref3$comparator === void 0 ? strictEqual : _ref3$comparator;
12681  var getState = store.getState,
12682      subscribe = store.subscribe;
12683  var unsubscribe = subscribe(handleChange);
12684  var currentState = select(getState());
12685
12686  function handleChange() {
12687    var nextState = select(getState());
12688
12689    if (nextState == null) {
12690      unsubscribe();
12691      return;
12692    }
12693
12694    if (!comparator(nextState, currentState)) {
12695      currentState = nextState;
12696      onChange(currentState, store);
12697    }
12698  }
12699
12700  return unsubscribe;
12701}
12702
12703function normalizeTarget(target) {
12704  var type = (0, _typeof2["default"])(target);
12705
12706  if (type === 'string') {
12707    return {
12708      id: target
12709    };
12710  } else if (target != null && type === 'object') {
12711    var id = target.id,
12712        objectId = target.objectId,
12713        selector = target.selector,
12714        selectorGuids = target.selectorGuids,
12715        appliesTo = target.appliesTo,
12716        useEventTarget = target.useEventTarget;
12717    return {
12718      id: id,
12719      objectId: objectId,
12720      selector: selector,
12721      selectorGuids: selectorGuids,
12722      appliesTo: appliesTo,
12723      useEventTarget: useEventTarget
12724    };
12725  }
12726
12727  return {};
12728}
12729
12730function getAffectedElements(_ref4) {
12731  var config = _ref4.config,
12732      event = _ref4.event,
12733      eventTarget = _ref4.eventTarget,
12734      elementRoot = _ref4.elementRoot,
12735      elementApi = _ref4.elementApi;
12736
12737  var _ref, _event$action, _event$action$config;
12738
12739  if (!elementApi) {
12740    throw new Error('IX2 missing elementApi');
12741  }
12742
12743  var targets = config.targets;
12744
12745  if (Array.isArray(targets) && targets.length > 0) {
12746    return targets.reduce(function (accumulator, target) {
12747      return accumulator.concat(getAffectedElements({
12748        config: {
12749          target: target
12750        },
12751        event: event,
12752        eventTarget: eventTarget,
12753        elementRoot: elementRoot,
12754        elementApi: elementApi
12755      }));
12756    }, []);
12757  }
12758
12759  var getValidDocument = elementApi.getValidDocument,
12760      getQuerySelector = elementApi.getQuerySelector,
12761      queryDocument = elementApi.queryDocument,
12762      getChildElements = elementApi.getChildElements,
12763      getSiblingElements = elementApi.getSiblingElements,
12764      matchSelector = elementApi.matchSelector,
12765      elementContains = elementApi.elementContains,
12766      isSiblingNode = elementApi.isSiblingNode;
12767  var target = config.target;
12768
12769  if (!target) {
12770    return [];
12771  }
12772
12773  var _normalizeTarget = normalizeTarget(target),
12774      id = _normalizeTarget.id,
12775      objectId = _normalizeTarget.objectId,
12776      selector = _normalizeTarget.selector,
12777      selectorGuids = _normalizeTarget.selectorGuids,
12778      appliesTo = _normalizeTarget.appliesTo,
12779      useEventTarget = _normalizeTarget.useEventTarget;
12780
12781  if (objectId) {
12782    var ref = objectCache[objectId] || (objectCache[objectId] = {});
12783    return [ref];
12784  }
12785
12786  if (appliesTo === _constants.EventAppliesTo.PAGE) {
12787    var doc = getValidDocument(id);
12788    return doc ? [doc] : [];
12789  }
12790
12791  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 : {};
12792  var override = overrides[id || selector] || {};
12793  var validOverride = Boolean(override.id || override.selector);
12794  var limitAffectedElements;
12795  var baseSelector;
12796  var finalSelector;
12797  var eventTargetSelector = event && getQuerySelector(normalizeTarget(event.target));
12798
12799  if (validOverride) {
12800    limitAffectedElements = override.limitAffectedElements;
12801    baseSelector = eventTargetSelector;
12802    finalSelector = getQuerySelector(override);
12803  } else {
12804    // pass in selectorGuids as well for server-side rendering.
12805    baseSelector = finalSelector = getQuerySelector({
12806      id: id,
12807      selector: selector,
12808      selectorGuids: selectorGuids
12809    });
12810  }
12811
12812  if (event && useEventTarget) {
12813    // eventTarget is not defined when this function is called in a clear request, so find
12814    // all target elements associated with the event data, and return affected elements.
12815    var eventTargets = eventTarget && (finalSelector || useEventTarget === true) ? [eventTarget] : queryDocument(eventTargetSelector);
12816
12817    if (finalSelector) {
12818      if (useEventTarget === PARENT) {
12819        return queryDocument(finalSelector).filter(function (parentElement) {
12820          return eventTargets.some(function (targetElement) {
12821            return elementContains(parentElement, targetElement);
12822          });
12823        });
12824      }
12825
12826      if (useEventTarget === CHILDREN) {
12827        return queryDocument(finalSelector).filter(function (childElement) {
12828          return eventTargets.some(function (targetElement) {
12829            return elementContains(targetElement, childElement);
12830          });
12831        });
12832      }
12833
12834      if (useEventTarget === SIBLINGS) {
12835        return queryDocument(finalSelector).filter(function (siblingElement) {
12836          return eventTargets.some(function (targetElement) {
12837            return isSiblingNode(targetElement, siblingElement);
12838          });
12839        });
12840      }
12841    }
12842
12843    return eventTargets;
12844  }
12845
12846  if (baseSelector == null || finalSelector == null) {
12847    return [];
12848  }
12849
12850  if (_IX2BrowserSupport.IS_BROWSER_ENV && elementRoot) {
12851    return queryDocument(finalSelector).filter(function (element) {
12852      return elementRoot.contains(element);
12853    });
12854  }
12855
12856  if (limitAffectedElements === CHILDREN) {
12857    return queryDocument(baseSelector, finalSelector);
12858  } else if (limitAffectedElements === IMMEDIATE_CHILDREN) {
12859    return getChildElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
12860  } else if (limitAffectedElements === SIBLINGS) {
12861    return getSiblingElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
12862  } else {
12863    return queryDocument(finalSelector);
12864  }
12865} // $FlowFixMe
12866
12867
12868function getComputedStyle(_ref5) {
12869  var element = _ref5.element,
12870      actionItem = _ref5.actionItem;
12871
12872  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
12873    return {};
12874  }
12875
12876  var actionTypeId = actionItem.actionTypeId;
12877
12878  switch (actionTypeId) {
12879    case STYLE_SIZE:
12880    case STYLE_BACKGROUND_COLOR:
12881    case STYLE_BORDER:
12882    case STYLE_TEXT_COLOR:
12883    case GENERAL_DISPLAY:
12884      return window.getComputedStyle(element);
12885
12886    default:
12887      return {};
12888  }
12889}
12890
12891var pxValueRegex = /px/;
12892
12893var getFilterDefaults = function getFilterDefaults(actionState, filters) {
12894  return filters.reduce(function (result, filter) {
12895    if (result[filter.type] == null) {
12896      result[filter.type] = filterDefaults[filter.type];
12897    }
12898
12899    return result;
12900  }, actionState || {});
12901};
12902
12903function getInstanceOrigin( // $FlowFixMe
12904element) {
12905  var refState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12906  var computedStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
12907  var // $FlowFixMe
12908  actionItem = arguments.length > 3 ? arguments[3] : undefined;
12909  var // $FlowFixMe
12910  elementApi = arguments.length > 4 ? arguments[4] : undefined;
12911  var getStyle = elementApi.getStyle;
12912  var actionTypeId = actionItem.actionTypeId,
12913      config = actionItem.config;
12914
12915  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
12916    // $FlowFixMe
12917    return (0, _IX2VanillaPlugins.getPluginOrigin)(actionTypeId)(refState[actionTypeId]);
12918  }
12919
12920  switch (actionTypeId) {
12921    case TRANSFORM_MOVE:
12922    case TRANSFORM_SCALE:
12923    case TRANSFORM_ROTATE:
12924    case TRANSFORM_SKEW:
12925      return refState[actionTypeId] || transformDefaults[actionTypeId];
12926
12927    case STYLE_FILTER:
12928      return getFilterDefaults(refState[actionTypeId], actionItem.config.filters);
12929
12930    case STYLE_OPACITY:
12931      return {
12932        value: (0, _defaultTo["default"])(parseFloat(getStyle(element, OPACITY)), 1.0)
12933      };
12934
12935    case STYLE_SIZE:
12936      {
12937        var inlineWidth = getStyle(element, WIDTH);
12938        var inlineHeight = getStyle(element, HEIGHT);
12939        var widthValue;
12940        var heightValue; // When destination unit is 'AUTO', ensure origin values are in px
12941
12942        if (config.widthUnit === AUTO) {
12943          widthValue = pxValueRegex.test(inlineWidth) ? parseFloat(inlineWidth) : parseFloat(computedStyle.width);
12944        } else {
12945          widthValue = (0, _defaultTo["default"])(parseFloat(inlineWidth), parseFloat(computedStyle.width));
12946        }
12947
12948        if (config.heightUnit === AUTO) {
12949          heightValue = pxValueRegex.test(inlineHeight) ? parseFloat(inlineHeight) : parseFloat(computedStyle.height);
12950        } else {
12951          heightValue = (0, _defaultTo["default"])(parseFloat(inlineHeight), parseFloat(computedStyle.height));
12952        }
12953
12954        return {
12955          widthValue: widthValue,
12956          heightValue: heightValue
12957        };
12958      }
12959
12960    case STYLE_BACKGROUND_COLOR:
12961    case STYLE_BORDER:
12962    case STYLE_TEXT_COLOR:
12963      return parseColor({
12964        element: element,
12965        actionTypeId: actionTypeId,
12966        computedStyle: computedStyle,
12967        getStyle: getStyle
12968      });
12969
12970    case GENERAL_DISPLAY:
12971      return {
12972        value: (0, _defaultTo["default"])(getStyle(element, DISPLAY), computedStyle.display)
12973      };
12974
12975    case OBJECT_VALUE:
12976      return refState[actionTypeId] || {
12977        value: 0
12978      };
12979
12980    default:
12981      return;
12982  }
12983}
12984
12985var reduceFilters = function reduceFilters(result, filter) {
12986  if (filter) {
12987    result[filter.type] = filter.value || 0;
12988  }
12989
12990  return result;
12991}; // $FlowFixMe
12992
12993
12994var getItemConfigByKey = function getItemConfigByKey(actionTypeId, key, config) {
12995  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
12996    // $FlowFixMe
12997    return (0, _IX2VanillaPlugins.getPluginConfig)(actionTypeId)(config, key);
12998  }
12999
13000  switch (actionTypeId) {
13001    case STYLE_FILTER:
13002      {
13003        var filter = (0, _findLast["default"])(config.filters, function (_ref6) {
13004          var type = _ref6.type;
13005          return type === key;
13006        });
13007        return filter ? filter.value : 0;
13008      }
13009
13010    default:
13011      return config[key];
13012  }
13013}; // $FlowFixMe
13014
13015
13016exports.getItemConfigByKey = getItemConfigByKey;
13017
13018function getDestinationValues(_ref7) {
13019  var element = _ref7.element,
13020      actionItem = _ref7.actionItem,
13021      elementApi = _ref7.elementApi;
13022  var actionTypeId = actionItem.actionTypeId;
13023
13024  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13025    // $FlowFixMe
13026    return (0, _IX2VanillaPlugins.getPluginDestination)(actionTypeId)(actionItem.config);
13027  }
13028
13029  switch (actionTypeId) {
13030    case TRANSFORM_MOVE:
13031    case TRANSFORM_SCALE:
13032    case TRANSFORM_ROTATE:
13033    case TRANSFORM_SKEW:
13034      {
13035        var _actionItem$config = actionItem.config,
13036            xValue = _actionItem$config.xValue,
13037            yValue = _actionItem$config.yValue,
13038            zValue = _actionItem$config.zValue;
13039        return {
13040          xValue: xValue,
13041          yValue: yValue,
13042          zValue: zValue
13043        };
13044      }
13045
13046    case STYLE_SIZE:
13047      {
13048        var getStyle = elementApi.getStyle,
13049            setStyle = elementApi.setStyle,
13050            getProperty = elementApi.getProperty;
13051        var _actionItem$config2 = actionItem.config,
13052            widthUnit = _actionItem$config2.widthUnit,
13053            heightUnit = _actionItem$config2.heightUnit;
13054        var _actionItem$config3 = actionItem.config,
13055            widthValue = _actionItem$config3.widthValue,
13056            heightValue = _actionItem$config3.heightValue;
13057
13058        if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13059          return {
13060            widthValue: widthValue,
13061            heightValue: heightValue
13062          };
13063        }
13064
13065        if (widthUnit === AUTO) {
13066          var temp = getStyle(element, WIDTH);
13067          setStyle(element, WIDTH, '');
13068          widthValue = getProperty(element, 'offsetWidth');
13069          setStyle(element, WIDTH, temp);
13070        }
13071
13072        if (heightUnit === AUTO) {
13073          var _temp = getStyle(element, HEIGHT);
13074
13075          setStyle(element, HEIGHT, '');
13076          heightValue = getProperty(element, 'offsetHeight');
13077          setStyle(element, HEIGHT, _temp);
13078        }
13079
13080        return {
13081          widthValue: widthValue,
13082          heightValue: heightValue
13083        };
13084      }
13085
13086    case STYLE_BACKGROUND_COLOR:
13087    case STYLE_BORDER:
13088    case STYLE_TEXT_COLOR:
13089      {
13090        var _actionItem$config4 = actionItem.config,
13091            rValue = _actionItem$config4.rValue,
13092            gValue = _actionItem$config4.gValue,
13093            bValue = _actionItem$config4.bValue,
13094            aValue = _actionItem$config4.aValue;
13095        return {
13096          rValue: rValue,
13097          gValue: gValue,
13098          bValue: bValue,
13099          aValue: aValue
13100        };
13101      }
13102
13103    case STYLE_FILTER:
13104      {
13105        return actionItem.config.filters.reduce(reduceFilters, {});
13106      }
13107
13108    default:
13109      {
13110        var value = actionItem.config.value;
13111        return {
13112          value: value
13113        };
13114      }
13115  }
13116} // $FlowFixMe
13117
13118
13119function getRenderType(actionTypeId) {
13120  if (/^TRANSFORM_/.test(actionTypeId)) {
13121    return RENDER_TRANSFORM;
13122  }
13123
13124  if (/^STYLE_/.test(actionTypeId)) {
13125    return RENDER_STYLE;
13126  }
13127
13128  if (/^GENERAL_/.test(actionTypeId)) {
13129    return RENDER_GENERAL;
13130  }
13131
13132  if (/^PLUGIN_/.test(actionTypeId)) {
13133    return RENDER_PLUGIN;
13134  }
13135} // $FlowFixMe
13136
13137
13138function getStyleProp(renderType, actionTypeId) {
13139  return renderType === RENDER_STYLE ? actionTypeId.replace('STYLE_', '').toLowerCase() : null;
13140}
13141
13142function renderHTMLElement( // $FlowFixMe
13143element, // $FlowFixMe
13144refState, // $FlowFixMe
13145actionState, // $FlowFixMe
13146eventId, // $FlowFixMe
13147actionItem, // $FlowFixMe
13148styleProp, // $FlowFixMe
13149elementApi, // $FlowFixMe
13150renderType, // $FlowFixMe
13151pluginInstance) {
13152  switch (renderType) {
13153    case RENDER_TRANSFORM:
13154      {
13155        return renderTransform(element, refState, actionState, actionItem, elementApi);
13156      }
13157
13158    case RENDER_STYLE:
13159      {
13160        return renderStyle(element, refState, actionState, actionItem, styleProp, elementApi);
13161      }
13162
13163    case RENDER_GENERAL:
13164      {
13165        return renderGeneral(element, actionItem, elementApi);
13166      }
13167
13168    case RENDER_PLUGIN:
13169      {
13170        var actionTypeId = actionItem.actionTypeId;
13171
13172        if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13173          // $FlowFixMe
13174          return (0, _IX2VanillaPlugins.renderPlugin)(actionTypeId)(pluginInstance, refState, actionItem);
13175        }
13176      }
13177  }
13178}
13179
13180var transformDefaults = (_transformDefaults = {}, (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_MOVE, Object.freeze({
13181  xValue: 0,
13182  yValue: 0,
13183  zValue: 0
13184})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SCALE, Object.freeze({
13185  xValue: 1,
13186  yValue: 1,
13187  zValue: 1
13188})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_ROTATE, Object.freeze({
13189  xValue: 0,
13190  yValue: 0,
13191  zValue: 0
13192})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SKEW, Object.freeze({
13193  xValue: 0,
13194  yValue: 0
13195})), _transformDefaults);
13196var filterDefaults = Object.freeze({
13197  blur: 0,
13198  'hue-rotate': 0,
13199  invert: 0,
13200  grayscale: 0,
13201  saturate: 100,
13202  sepia: 0,
13203  contrast: 100,
13204  brightness: 100
13205});
13206
13207var getFilterUnit = function getFilterUnit(filterType, actionItemConfig) {
13208  var filter = (0, _findLast["default"])(actionItemConfig.filters, function (_ref8) {
13209    var type = _ref8.type;
13210    return type === filterType;
13211  });
13212
13213  if (filter && filter.unit) {
13214    return filter.unit;
13215  }
13216
13217  switch (filterType) {
13218    case 'blur':
13219      return 'px';
13220
13221    case 'hue-rotate':
13222      return 'deg';
13223
13224    default:
13225      return '%';
13226  }
13227};
13228
13229var transformKeys = Object.keys(transformDefaults);
13230
13231function renderTransform(element, refState, actionState, actionItem, elementApi) {
13232  var newTransform = transformKeys.map(function (actionTypeId) {
13233    var defaults = transformDefaults[actionTypeId];
13234
13235    var _ref9 = refState[actionTypeId] || {},
13236        _ref9$xValue = _ref9.xValue,
13237        xValue = _ref9$xValue === void 0 ? defaults.xValue : _ref9$xValue,
13238        _ref9$yValue = _ref9.yValue,
13239        yValue = _ref9$yValue === void 0 ? defaults.yValue : _ref9$yValue,
13240        _ref9$zValue = _ref9.zValue,
13241        zValue = _ref9$zValue === void 0 ? defaults.zValue : _ref9$zValue,
13242        _ref9$xUnit = _ref9.xUnit,
13243        xUnit = _ref9$xUnit === void 0 ? '' : _ref9$xUnit,
13244        _ref9$yUnit = _ref9.yUnit,
13245        yUnit = _ref9$yUnit === void 0 ? '' : _ref9$yUnit,
13246        _ref9$zUnit = _ref9.zUnit,
13247        zUnit = _ref9$zUnit === void 0 ? '' : _ref9$zUnit;
13248
13249    switch (actionTypeId) {
13250      case TRANSFORM_MOVE:
13251        return "".concat(TRANSLATE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
13252
13253      case TRANSFORM_SCALE:
13254        return "".concat(SCALE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
13255
13256      case TRANSFORM_ROTATE:
13257        return "".concat(ROTATE_X, "(").concat(xValue).concat(xUnit, ") ").concat(ROTATE_Y, "(").concat(yValue).concat(yUnit, ") ").concat(ROTATE_Z, "(").concat(zValue).concat(zUnit, ")");
13258
13259      case TRANSFORM_SKEW:
13260        return "".concat(SKEW, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ")");
13261
13262      default:
13263        return '';
13264    }
13265  }).join(' ');
13266  var setStyle = elementApi.setStyle;
13267  addWillChange(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
13268  setStyle(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, newTransform); // Set transform-style: preserve-3d
13269
13270  if (hasDefined3dTransform(actionItem, actionState)) {
13271    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, PRESERVE_3D);
13272  }
13273}
13274
13275function renderFilter(element, actionState, actionItemConfig, elementApi) {
13276  var filterValue = (0, _reduce["default"])(actionState, function (result, value, type) {
13277    return "".concat(result, " ").concat(type, "(").concat(value).concat(getFilterUnit(type, actionItemConfig), ")");
13278  }, '');
13279  var setStyle = elementApi.setStyle;
13280  addWillChange(element, FILTER, elementApi);
13281  setStyle(element, FILTER, filterValue);
13282}
13283
13284function hasDefined3dTransform(_ref10, _ref11) {
13285  var actionTypeId = _ref10.actionTypeId;
13286  var xValue = _ref11.xValue,
13287      yValue = _ref11.yValue,
13288      zValue = _ref11.zValue;
13289  // TRANSLATE_Z
13290  return actionTypeId === TRANSFORM_MOVE && zValue !== undefined || // SCALE_Z
13291  actionTypeId === TRANSFORM_SCALE && zValue !== undefined || // ROTATE_X or ROTATE_Y
13292  actionTypeId === TRANSFORM_ROTATE && (xValue !== undefined || yValue !== undefined);
13293}
13294
13295var paramCapture = '\\(([^)]+)\\)';
13296var rgbValidRegex = /^rgb/;
13297var rgbMatchRegex = RegExp("rgba?".concat(paramCapture));
13298
13299function getFirstMatch(regex, value) {
13300  var match = regex.exec(value);
13301  return match ? match[1] : '';
13302}
13303
13304function parseColor(_ref12) {
13305  var element = _ref12.element,
13306      actionTypeId = _ref12.actionTypeId,
13307      computedStyle = _ref12.computedStyle,
13308      getStyle = _ref12.getStyle;
13309  var prop = colorStyleProps[actionTypeId];
13310  var inlineValue = getStyle(element, prop);
13311  var value = rgbValidRegex.test(inlineValue) ? inlineValue : computedStyle[prop];
13312  var matches = getFirstMatch(rgbMatchRegex, value).split(COMMA_DELIMITER);
13313  return {
13314    rValue: (0, _defaultTo["default"])(parseInt(matches[0], 10), 255),
13315    gValue: (0, _defaultTo["default"])(parseInt(matches[1], 10), 255),
13316    bValue: (0, _defaultTo["default"])(parseInt(matches[2], 10), 255),
13317    aValue: (0, _defaultTo["default"])(parseFloat(matches[3]), 1)
13318  };
13319}
13320
13321function renderStyle(element, refState, actionState, actionItem, styleProp, elementApi) {
13322  var setStyle = elementApi.setStyle;
13323  var actionTypeId = actionItem.actionTypeId,
13324      config = actionItem.config;
13325
13326  switch (actionTypeId) {
13327    case STYLE_SIZE:
13328      {
13329        var _actionItem$config5 = actionItem.config,
13330            _actionItem$config5$w = _actionItem$config5.widthUnit,
13331            widthUnit = _actionItem$config5$w === void 0 ? '' : _actionItem$config5$w,
13332            _actionItem$config5$h = _actionItem$config5.heightUnit,
13333            heightUnit = _actionItem$config5$h === void 0 ? '' : _actionItem$config5$h;
13334        var widthValue = actionState.widthValue,
13335            heightValue = actionState.heightValue;
13336
13337        if (widthValue !== undefined) {
13338          if (widthUnit === AUTO) {
13339            widthUnit = 'px';
13340          }
13341
13342          addWillChange(element, WIDTH, elementApi);
13343          setStyle(element, WIDTH, widthValue + widthUnit);
13344        }
13345
13346        if (heightValue !== undefined) {
13347          if (heightUnit === AUTO) {
13348            heightUnit = 'px';
13349          }
13350
13351          addWillChange(element, HEIGHT, elementApi);
13352          setStyle(element, HEIGHT, heightValue + heightUnit);
13353        }
13354
13355        break;
13356      }
13357
13358    case STYLE_FILTER:
13359      {
13360        renderFilter(element, actionState, config, elementApi);
13361        break;
13362      }
13363
13364    case STYLE_BACKGROUND_COLOR:
13365    case STYLE_BORDER:
13366    case STYLE_TEXT_COLOR:
13367      {
13368        var prop = colorStyleProps[actionTypeId];
13369        var rValue = Math.round(actionState.rValue);
13370        var gValue = Math.round(actionState.gValue);
13371        var bValue = Math.round(actionState.bValue);
13372        var aValue = actionState.aValue;
13373        addWillChange(element, prop, elementApi);
13374        setStyle(element, prop, aValue >= 1 ? "rgb(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ")") : "rgba(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ",").concat(aValue, ")"));
13375        break;
13376      }
13377
13378    default:
13379      {
13380        var _config$unit = config.unit,
13381            unit = _config$unit === void 0 ? '' : _config$unit;
13382        addWillChange(element, styleProp, elementApi);
13383        setStyle(element, styleProp, actionState.value + unit);
13384        break;
13385      }
13386  }
13387}
13388
13389function renderGeneral(element, actionItem, elementApi) {
13390  var setStyle = elementApi.setStyle;
13391
13392  switch (actionItem.actionTypeId) {
13393    case GENERAL_DISPLAY:
13394      {
13395        var value = actionItem.config.value;
13396
13397        if (value === FLEX && _IX2BrowserSupport.IS_BROWSER_ENV) {
13398          setStyle(element, DISPLAY, _IX2BrowserSupport.FLEX_PREFIXED);
13399        } else {
13400          setStyle(element, DISPLAY, value);
13401        }
13402
13403        return;
13404      }
13405  }
13406}
13407
13408function addWillChange(element, prop, elementApi) {
13409  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13410    return;
13411  } // $FlowFixMe
13412
13413
13414  var validProp = willChangeProps[prop];
13415
13416  if (!validProp) {
13417    return;
13418  }
13419
13420  var getStyle = elementApi.getStyle,
13421      setStyle = elementApi.setStyle;
13422  var value = getStyle(element, WILL_CHANGE);
13423
13424  if (!value) {
13425    setStyle(element, WILL_CHANGE, validProp);
13426    return;
13427  }
13428
13429  var values = value.split(COMMA_DELIMITER).map(trim);
13430
13431  if (values.indexOf(validProp) === -1) {
13432    setStyle(element, WILL_CHANGE, values.concat(validProp).join(COMMA_DELIMITER));
13433  }
13434}
13435
13436function removeWillChange(element, prop, elementApi) {
13437  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13438    return;
13439  } // $FlowFixMe
13440
13441
13442  var validProp = willChangeProps[prop];
13443
13444  if (!validProp) {
13445    return;
13446  }
13447
13448  var getStyle = elementApi.getStyle,
13449      setStyle = elementApi.setStyle;
13450  var value = getStyle(element, WILL_CHANGE);
13451
13452  if (!value || value.indexOf(validProp) === -1) {
13453    return;
13454  }
13455
13456  setStyle(element, WILL_CHANGE, value.split(COMMA_DELIMITER).map(trim).filter(function (v) {
13457    return v !== validProp;
13458  }).join(COMMA_DELIMITER));
13459} // $FlowFixMe
13460
13461
13462function clearAllStyles(_ref13) {
13463  var store = _ref13.store,
13464      elementApi = _ref13.elementApi;
13465
13466  var _store$getState = store.getState(),
13467      ixData = _store$getState.ixData;
13468
13469  var _ixData$events = ixData.events,
13470      events = _ixData$events === void 0 ? {} : _ixData$events,
13471      _ixData$actionLists = ixData.actionLists,
13472      actionLists = _ixData$actionLists === void 0 ? {} : _ixData$actionLists;
13473  Object.keys(events).forEach(function (eventId) {
13474    var event = events[eventId];
13475    var config = event.action.config;
13476    var actionListId = config.actionListId;
13477    var actionList = actionLists[actionListId];
13478
13479    if (actionList) {
13480      clearActionListStyles({
13481        actionList: actionList,
13482        event: event,
13483        elementApi: elementApi
13484      });
13485    }
13486  });
13487  Object.keys(actionLists).forEach(function (actionListId) {
13488    clearActionListStyles({
13489      actionList: actionLists[actionListId],
13490      elementApi: elementApi
13491    });
13492  });
13493} // $FlowFixMe
13494
13495
13496function clearActionListStyles(_ref14) {
13497  var _ref14$actionList = _ref14.actionList,
13498      actionList = _ref14$actionList === void 0 ? {} : _ref14$actionList,
13499      event = _ref14.event,
13500      elementApi = _ref14.elementApi;
13501  var actionItemGroups = actionList.actionItemGroups,
13502      continuousParameterGroups = actionList.continuousParameterGroups;
13503  actionItemGroups && actionItemGroups.forEach(function (actionGroup) {
13504    clearActionGroupStyles({
13505      actionGroup: actionGroup,
13506      event: event,
13507      elementApi: elementApi
13508    });
13509  });
13510  continuousParameterGroups && continuousParameterGroups.forEach(function (paramGroup) {
13511    var continuousActionGroups = paramGroup.continuousActionGroups;
13512    continuousActionGroups.forEach(function (actionGroup) {
13513      clearActionGroupStyles({
13514        actionGroup: actionGroup,
13515        event: event,
13516        elementApi: elementApi
13517      });
13518    });
13519  });
13520}
13521
13522function clearActionGroupStyles(_ref15) {
13523  var actionGroup = _ref15.actionGroup,
13524      event = _ref15.event,
13525      elementApi = _ref15.elementApi;
13526  var actionItems = actionGroup.actionItems;
13527  actionItems.forEach(function (_ref16) {
13528    var actionTypeId = _ref16.actionTypeId,
13529        config = _ref16.config;
13530    var clearElement;
13531
13532    if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13533      clearElement = (0, _IX2VanillaPlugins.clearPlugin)(actionTypeId);
13534    } else {
13535      clearElement = processElementByType({
13536        effect: clearStyleProp,
13537        actionTypeId: actionTypeId,
13538        elementApi: elementApi
13539      });
13540    }
13541
13542    getAffectedElements({
13543      config: config,
13544      event: event,
13545      elementApi: elementApi
13546    }
13546).forEach(clearElement);
13547  });
13548} // $FlowFixMe
13549
13550
13551function cleanupHTMLElement(element, actionItem, elementApi) {
13552  var setStyle = elementApi.setStyle,
13553      getStyle = elementApi.getStyle;
13554  var actionTypeId = actionItem.actionTypeId;
13555
13556  if (actionTypeId === STYLE_SIZE) {
13557    var config = actionItem.config;
13558
13559    if (config.widthUnit === AUTO) {
13560      setStyle(element, WIDTH, '');
13561    }
13562
13563    if (config.heightUnit === AUTO) {
13564      setStyle(element, HEIGHT, '');
13565    }
13566  }
13567
13568  if (getStyle(element, WILL_CHANGE)) {
13569    processElementByType({
13570      effect: removeWillChange,
13571      actionTypeId: actionTypeId,
13572      elementApi: elementApi
13573    })(element);
13574  }
13575}
13576
13577var processElementByType = function processElementByType(_ref17) {
13578  var effect = _ref17.effect,
13579      actionTypeId = _ref17.actionTypeId,
13580      elementApi = _ref17.elementApi;
13581  return function (element) {
13582    switch (actionTypeId) {
13583      case TRANSFORM_MOVE:
13584      case TRANSFORM_SCALE:
13585      case TRANSFORM_ROTATE:
13586      case TRANSFORM_SKEW:
13587        effect(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
13588        break;
13589
13590      case STYLE_FILTER:
13591        effect(element, FILTER, elementApi);
13592        break;
13593
13594      case STYLE_OPACITY:
13595        effect(element, OPACITY, elementApi);
13596        break;
13597
13598      case STYLE_SIZE:
13599        effect(element, WIDTH, elementApi);
13600        effect(element, HEIGHT, elementApi);
13601        break;
13602
13603      case STYLE_BACKGROUND_COLOR:
13604      case STYLE_BORDER:
13605      case STYLE_TEXT_COLOR:
13606        effect(element, colorStyleProps[actionTypeId], elementApi);
13607        break;
13608
13609      case GENERAL_DISPLAY:
13610        effect(element, DISPLAY, elementApi);
13611        break;
13612    }
13613  };
13614};
13615
13616function clearStyleProp(element, prop, elementApi) {
13617  var setStyle = elementApi.setStyle;
13618  removeWillChange(element, prop, elementApi);
13619  setStyle(element, prop, ''); // Clear transform-style: preserve-3d
13620
13621  if (prop === _IX2BrowserSupport.TRANSFORM_PREFIXED) {
13622    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, '');
13623  }
13624} // $FlowFixMe
13625
13626
13627function getMaxDurationItemIndex(actionItems) {
13628  var maxDuration = 0;
13629  var resultIndex = 0;
13630  actionItems.forEach(function (actionItem, index) {
13631    var config = actionItem.config;
13632    var total = config.delay + config.duration;
13633
13634    if (total >= maxDuration) {
13635      maxDuration = total;
13636      resultIndex = index;
13637    }
13638  });
13639  return resultIndex;
13640} // $FlowFixMe
13641
13642
13643function getActionListProgress(actionList, instance) {
13644  var actionItemGroups = actionList.actionItemGroups,
13645      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState;
13646  var instanceItem = instance.actionItem,
13647      _instance$verboseTime = instance.verboseTimeElapsed,
13648      verboseTimeElapsed = _instance$verboseTime === void 0 ? 0 : _instance$verboseTime;
13649  var totalDuration = 0;
13650  var elapsedDuration = 0;
13651  actionItemGroups.forEach(function (group, index) {
13652    if (useFirstGroupAsInitialState && index === 0) {
13653      return;
13654    }
13655
13656    var actionItems = group.actionItems;
13657    var carrierItem = actionItems[getMaxDurationItemIndex(actionItems)];
13658    var config = carrierItem.config,
13659        actionTypeId = carrierItem.actionTypeId;
13660
13661    if (instanceItem.id === carrierItem.id) {
13662      elapsedDuration = totalDuration + verboseTimeElapsed;
13663    }
13664
13665    var duration = getRenderType(actionTypeId) === RENDER_GENERAL ? 0 : config.duration;
13666    totalDuration += config.delay + duration;
13667  });
13668  return totalDuration > 0 ? (0, _IX2EasingUtils.optimizeFloat)(elapsedDuration / totalDuration) : 0;
13669} // $FlowFixMe
13670
13671
13672function reduceListToGroup(_ref18) {
13673  var actionList = _ref18.actionList,
13674      actionItemId = _ref18.actionItemId,
13675      rawData = _ref18.rawData;
13676  var actionItemGroups = actionList.actionItemGroups,
13677      continuousParameterGroups = actionList.continuousParameterGroups;
13678  var newActionItems = [];
13679
13680  var takeItemUntilMatch = function takeItemUntilMatch(actionItem) {
13681    newActionItems.push((0, _timm.mergeIn)(actionItem, ['config'], {
13682      delay: 0,
13683      duration: 0
13684    }));
13685    return actionItem.id === actionItemId;
13686  };
13687
13688  actionItemGroups && actionItemGroups.some(function (_ref19) {
13689    var actionItems = _ref19.actionItems;
13690    return actionItems.some(takeItemUntilMatch);
13691  });
13692  continuousParameterGroups && continuousParameterGroups.some(function (paramGroup) {
13693    var continuousActionGroups = paramGroup.continuousActionGroups;
13694    return continuousActionGroups.some(function (_ref20) {
13695      var actionItems = _ref20.actionItems;
13696      return actionItems.some(takeItemUntilMatch);
13697    });
13698  });
13699  return (0, _timm.setIn)(rawData, ['actionLists'], (0, _defineProperty2["default"])({}, actionList.id, {
13700    id: actionList.id,
13701    actionItemGroups: [{
13702      actionItems: newActionItems
13703    }]
13704  }));
13705} // $FlowFixMe
13706
13707
13708function shouldNamespaceEventParameter(eventTypeId, _ref22) {
13709  var basedOn = _ref22.basedOn;
13710  return eventTypeId === _constants.EventTypeConsts.SCROLLING_IN_VIEW && (basedOn === _constants.EventBasedOn.ELEMENT || basedOn == null) || eventTypeId === _constants.EventTypeConsts.MOUSE_MOVE && basedOn === _constants.EventBasedOn.ELEMENT;
13711}
13712
13713function getNamespacedParameterId(eventStateKey, continuousParameterGroupId) {
13714  var namespacedParameterId = eventStateKey + COLON_DELIMITER + continuousParameterGroupId;
13715  return namespacedParameterId;
13716} // $FlowFixMe
13717
13718
13719function shouldAllowMediaQuery(mediaQueries, mediaQueryKey) {
13720  // During design mode, current media query key does not exist
13721  if (mediaQueryKey == null) {
13722    return true;
13723  }
13724
13725  return mediaQueries.indexOf(mediaQueryKey) !== -1;
13726} // $FlowFixMe
13727
13728
13729function mediaQueriesEqual(listA, listB) {
13730  return (0, _shallowEqual["default"])(listA && listA.sort(), listB && listB.sort());
13731} // $FlowFixMe
13732
13733
13734function stringifyTarget(target) {
13735  if (typeof target === 'string') {
13736    return target;
13737  }
13738
13739  var _target$id = target.id,
13740      id = _target$id === void 0 ? '' : _target$id,
13741      _target$selector = target.selector,
13742      selector = _target$selector === void 0 ? '' : _target$selector,
13743      _target$useEventTarge = target.useEventTarget,
13744      useEventTarget = _target$useEventTarge === void 0 ? '' : _target$useEventTarge;
13745  return id + BAR_DELIMITER + selector + BAR_DELIMITER + useEventTarget;
13746}
13747
13748/***/ }),
13749/* 250 */
vendor: 5,734 bytes, lines 13750-13960
13750/***/ (function(module, exports) {
13751
13752/**
13753 * Checks `value` to determine whether a default value should be returned in
13754 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
13755 * or `undefined`.
13756 *
13757 * @static
13758 * @memberOf _
13759 * @since 4.14.0
13760 * @category Util
13761 * @param {*} value The value to check.
13762 * @param {*} defaultValue The default value.
13763 * @returns {*} Returns the resolved value.
13764 * @example
13765 *
13766 * _.defaultTo(1, 10);
13767 * // => 1
13768 *
13769 * _.defaultTo(undefined, 10);
13770 * // => 10
13771 */
13772function defaultTo(value, defaultValue) {
13773  return (value == null || value !== value) ? defaultValue : value;
13774}
13775
13776module.exports = defaultTo;
13777
13778
13779/***/ }),
13780/* 251 */
13781/***/ (function(module, exports, __webpack_require__) {
13782
13783var arrayReduce = __webpack_require__(252),
13784    baseEach = __webpack_require__(111),
13785    baseIteratee = __webpack_require__(7),
13786    baseReduce = __webpack_require__(256),
13787    isArray = __webpack_require__(1);
13788
13789/**
13790 * Reduces `collection` to a value which is the accumulated result of running
13791 * each element in `collection` thru `iteratee`, where each successive
13792 * invocation is supplied the return value of the previous. If `accumulator`
13793 * is not given, the first element of `collection` is used as the initial
13794 * value. The iteratee is invoked with four arguments:
13795 * (accumulator, value, index|key, collection).
13796 *
13797 * Many lodash methods are guarded to work as iteratees for methods like
13798 * `_.reduce`, `_.reduceRight`, and `_.transform`.
13799 *
13800 * The guarded methods are:
13801 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
13802 * and `sortBy`
13803 *
13804 * @static
13805 * @memberOf _
13806 * @since 0.1.0
13807 * @category Collection
13808 * @param {Array|Object} collection The collection to iterate over.
13809 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
13810 * @param {*} [accumulator] The initial value.
13811 * @returns {*} Returns the accumulated value.
13812 * @see _.reduceRight
13813 * @example
13814 *
13815 * _.reduce([1, 2], function(sum, n) {
13816 *   return sum + n;
13817 * }, 0);
13818 * // => 3
13819 *
13820 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
13821 *   (result[value] || (result[value] = [])).push(key);
13822 *   return result;
13823 * }, {});
13824 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
13825 */
13826function reduce(collection, iteratee, accumulator) {
13827  var func = isArray(collection) ? arrayReduce : baseReduce,
13828      initAccum = arguments.length < 3;
13829
13830  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
13831}
13832
13833module.exports = reduce;
13834
13835
13836/***/ }),
13837/* 252 */
13838/***/ (function(module, exports) {
13839
13840/**
13841 * A specialized version of `_.reduce` for arrays without support for
13842 * iteratee shorthands.
13843 *
13844 * @private
13845 * @param {Array} [array] The array to iterate over.
13846 * @param {Function} iteratee The function invoked per iteration.
13847 * @param {*} [accumulator] The initial value.
13848 * @param {boolean} [initAccum] Specify using the first element of `array` as
13849 *  the initial value.
13850 * @returns {*} Returns the accumulated value.
13851 */
13852function arrayReduce(array, iteratee, accumulator, initAccum) {
13853  var index = -1,
13854      length = array == null ? 0 : array.length;
13855
13856  if (initAccum && length) {
13857    accumulator = array[++index];
13858  }
13859  while (++index < length) {
13860    accumulator = iteratee(accumulator, array[index], index, array);
13861  }
13862  return accumulator;
13863}
13864
13865module.exports = arrayReduce;
13866
13867
13868/***/ }),
13869/* 253 */
13870/***/ (function(module, exports, __webpack_require__) {
13871
13872var createBaseFor = __webpack_require__(254);
13873
13874/**
13875 * The base implementation of `baseForOwn` which iterates over `object`
13876 * properties returned by `keysFunc` and invokes `iteratee` for each property.
13877 * Iteratee functions may exit iteration early by explicitly returning `false`.
13878 *
13879 * @private
13880 * @param {Object} object The object to iterate over.
13881 * @param {Function} iteratee The function invoked per iteration.
13882 * @param {Function} keysFunc The function to get the keys of `object`.
13883 * @returns {Object} Returns `object`.
13884 */
13885var baseFor = createBaseFor();
13886
13887module.exports = baseFor;
13888
13889
13890/***/ }),
13891/* 254 */
13892/***/ (function(module, exports) {
13893
13894/**
13895 * Creates a base function for methods like `_.forIn` and `_.forOwn`.
13896 *
13897 * @private
13898 * @param {boolean} [fromRight] Specify iterating from right to left.
13899 * @returns {Function} Returns the new base function.
13900 */
13901function createBaseFor(fromRight) {
13902  return function(object, iteratee, keysFunc) {
13903    var index = -1,
13904        iterable = Object(object),
13905        props = keysFunc(object),
13906        length = props.length;
13907
13908    while (length--) {
13909      var key = props[fromRight ? length : ++index];
13910      if (iteratee(iterable[key], key, iterable) === false) {
13911        break;
13912      }
13913    }
13914    return object;
13915  };
13916}
13917
13918module.exports = createBaseFor;
13919
13920
13921/***/ }),
13922/* 255 */
13923/***/ (function(module, exports, __webpack_require__) {
13924
13925var isArrayLike = __webpack_require__(12);
13926
13927/**
13928 * Creates a `baseEach` or `baseEachRight` function.
13929 *
13930 * @private
13931 * @param {Function} eachFunc The function to iterate over a collection.
13932 * @param {boolean} [fromRight] Specify iterating from right to left.
13933 * @returns {Function} Returns the new base function.
13934 */
13935function createBaseEach(eachFunc, fromRight) {
13936  return function(collection, iteratee) {
13937    if (collection == null) {
13938      return collection;
13939    }
13940    if (!isArrayLike(collection)) {
13941      return eachFunc(collection, iteratee);
13942    }
13943    var length = collection.length,
13944        index = fromRight ? length : -1,
13945        iterable = Object(collection);
13946
13947    while ((fromRight ? index-- : ++index < length)) {
13948      if (iteratee(iterable[index], index, iterable) === false) {
13949        break;
13950      }
13951    }
13952    return collection;
13953  };
13954}
13955
13956module.exports = createBaseEach;
13957
13958
13959/***/ }),
13960/* 256 */
13961/***/ (function(module, exports) {
13962
13963/**
13964 * The base implementation of `_.reduce` and `_.reduceRight`, without support
13965 * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
13966 *
13967 * @private
13968 * @param {Array|Object} collection The collection to iterate over.
13969 * @param {Function} iteratee The function invoked per iteration.
13970 * @param {*} accumulator The initial value.
13971 * @param {boolean} initAccum Specify using the first or last element of
13972 *  `collection` as the initial value.
13973 * @param {Function} eachFunc The function to iterate over `collection`.
13974 * @returns {*} Returns the accumulated value.
13975 */
13976function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
13977  eachFunc(collection, function(value, index, collection) {
13978    accumulator = initAccum
13979      ? (initAccum = false, value)
13980      : iteratee(accumulator, value, index, collection);
13981  });
13982  return accumulator;
13983}
13984
13985module.exports = baseReduce;
13986
13987
13988/***/ }),
13989/* 257 */
13990/***/ (function(module, exports, __webpack_require__) {
13991
13992var createFind = __webpack_require__(86),
13993    findLastIndex = __webpack_require__(258);
13994
13995/**
13996 * This method is like `_.find` except that it iterates over elements of
13997 * `collection` from right to left.
13998 *
13999 * @static
14000 * @memberOf _
14001 * @since 2.0.0
14002 * @category Collection
14003 * @param {Array|Object} collection The collection to inspect.
14004 * @param {Function} [predicate=_.identity] The function invoked per iteration.
14005 * @param {number} [fromIndex=collection.length-1] The index to search from.
14006 * @returns {*} Returns the matched element, else `undefined`.
14007 * @example
14008 *
14009 * _.findLast([1, 2, 3, 4], function(n) {
14010 *   return n % 2 == 1;
14011 * });
14012 * // => 3
14013 */
14014var findLast = createFind(findLastIndex);
14015
14016module.exports = findLast;
14017
14018
14019/***/ }),
14020/* 258 */
14021/***/ (function(module, exports, __webpack_require__) {
14022
14023var baseFindIndex = __webpack_require__(104),
14024    baseIteratee = __webpack_require__(7),
14025    toInteger = __webpack_require__(105);
14026
14027/* Built-in method references for those with the same name as other `lodash` methods. */
14028var nativeMax = Math.max,
14029    nativeMin = Math.min;
14030
14031/**
14032 * This method is like `_.findIndex` except that it iterates over elements
14033 * of `collection` from right to left.
14034 *
14035 * @static
14036 * @memberOf _
14037 * @since 2.0.0
14038 * @category Array
14039 * @param {Array} array The array to inspect.
14040 * @param {Function} [predicate=_.identity] The function invoked per iteration.
14041 * @param {number} [fromIndex=array.length-1] The index to search from.
14042 * @returns {number} Returns the index of the found element, else `-1`.
14043 * @example
14044 *
14045 * var users = [
14046 *   { 'user': 'barney',  'active': true },
14047 *   { 'user': 'fred',    'active': false },
14048 *   { 'user': 'pebbles', 'active': false }
14049 * ];
14050 *
14051 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
14052 * // => 2
14053 *
14054 * // The `_.matches` iteratee shorthand.
14055 * _.findLastIndex(users, { 'user': 'barney', 'active': true });
14056 * // => 0
14057 *
14058 * // The `_.matchesProperty` iteratee shorthand.
14059 * _.findLastIndex(users, ['active', false]);
14060 * // => 2
14061 *
14062 * // The `_.property` iteratee shorthand.
14063 * _.findLastIndex(users, 'active');
14064 * // => 0
14065 */
14066function findLastIndex(array, predicate, fromIndex) {
14067  var length = array == null ? 0 : array.length;
14068  if (!length) {
14069    return -1;
14070  }
14071  var index = length - 1;
14072  if (fromIndex !== undefined) {
14073    index = toInteger(fromIndex);
14074    index = fromIndex < 0
14075      ? nativeMax(length + index, 0)
14076      : nativeMin(index, length - 1);
14077  }
14078  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
14079}
14080
14081module.exports = findLastIndex;
14082
14083
14084/***/ }),
14085/* 259 */
14086/***/ (function(module, exports) {
14087
14088function _interopRequireDefault(obj) {
14089  return obj && obj.__esModule ? obj : {
14090    default: obj
14091  };
14092}
14093
14094module.exports = _interopRequireDefault;
14095
14096/***/ }),
14097/* 260 */
14098/***/ (function(module, exports, __webpack_require__) {
14099
14100"use strict";
14101/**
14102 * Copyright (c) 2013-present, Facebook, Inc.
14103 *
14104 * This source code is licensed under the MIT license found in the
14105 * LICENSE file in the root directory of this source tree.
14106 *
14107 * @typechecks
14108 * 
14109 */
14110
14111/*eslint-disable no-self-compare */
14112
14113
14114
14115var hasOwnProperty = Object.prototype.hasOwnProperty;
14116
14117/**
14118 * inlined Object.is polyfill to avoid requiring consumers ship their own
14119 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
14120 */
14121function is(x, y) {
14122  // SameValue algorithm
14123  if (x === y) {
14124    // Steps 1-5, 7-10
14125    // Steps 6.b-6.e: +0 != -0
14126    // Added the nonzero y check to make Flow happy, but it is redundant
14127    return x !== 0 || y !== 0 || 1 / x === 1 / y;
14128  } else {
14129    // Step 6.a: NaN == NaN
14130    return x !== x && y !== y;
14131  }
14132}
14133
14134/**
14135 * Performs equality by iterating through keys on an object and returning false
14136 * when any key has values which are not strictly equal between the arguments.
14137 * Returns true when the values of all keys are strictly equal.
14138 */
14139function shallowEqual(objA, objB) {
14140  if (is(objA, objB)) {
14141    return true;
14142  }
14143
14144  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
14145    return false;
14146  }
14147
14148  var keysA = Object.keys(objA);
14149  var keysB = Object.keys(objB);
14150
14151  if (keysA.length !== keysB.length) {
14152    return false;
14153  }
14154
14155  // Test for A's keys different from B.
14156  for (var i = 0; i < keysA.length; i++) {
14157    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
14158      return false;
14159    }
14160  }
14161
14162  return true;
14163}
14164
14165module.exports = shallowEqual;
14166
14167/***/ }),
14168/* 261 */
14169/***/ (function(module, exports, __webpack_require__) {
14170
14171"use strict";
14172
14173
14174Object.defineProperty(exports, "__esModule", {
14175  value: true
14176});
14177exports.ixInstances = void 0;
14178
14179var _constants = __webpack_require__(2);
14180
14181var _shared = __webpack_require__(10);
14182
14183var _timm = __webpack_require__(19);
14184/* eslint-env browser */
14185
14186
14187var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
14188    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
14189    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
14190    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
14191    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
14192    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
14193    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED;
14194var _shared$IX2EasingUtil = _shared.IX2EasingUtils,
14195    optimizeFloat = _shared$IX2EasingUtil.optimizeFloat,
14196    applyEasing = _shared$IX2EasingUtil.applyEasing,
14197    createBezierEasing = _shared$IX2EasingUtil.createBezierEasing;
14198var RENDER_GENERAL = _constants.IX2EngineConstants.RENDER_GENERAL;
14199var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
14200    getItemConfigByKey = _shared$IX2VanillaUti.getItemConfigByKey,
14201    getRenderType = _shared$IX2VanillaUti.getRenderType,
14202    getStyleProp = _shared$IX2VanillaUti.getStyleProp;
14203
14204var continuousInstance = function continuousInstance(state, action) {
14205  var lastPosition = state.position,
14206      parameterId = state.parameterId,
14207      actionGroups = state.actionGroups,
14208      destinationKeys = state.destinationKeys,
14209      smoothing = state.smoothing,
14210      restingValue = state.restingValue,
14211      actionTypeId = state.actionTypeId,
14212      customEasingFn = state.customEasingFn;
14213  var parameters = action.payload.parameters;
14214  var velocity = Math.max(1 - smoothing, 0.01);
14215  var paramValue = parameters[parameterId];
14216
14217  if (paramValue == null) {
14218    velocity = 1;
14219    paramValue = restingValue;
14220  }
14221
14222  var nextPosition = Math.max(paramValue, 0) || 0;
14223  var positionDiff = optimizeFloat(nextPosition - lastPosition);
14224  var position = optimizeFloat(lastPosition + positionDiff * velocity);
14225  var keyframePosition = position * 100;
14226
14227  if (position === lastPosition && state.current) {
14228    return state;
14229  }
14230
14231  var fromActionItem;
14232  var toActionItem;
14233  var positionOffset;
14234  var positionRange;
14235
14236  for (var i = 0, length = actionGroups.length; i < length; i++) {
14237    var _actionGroups$i = actionGroups[i],
14238        keyframe = _actionGroups$i.keyframe,
14239        actionItems = _actionGroups$i.actionItems;
14240
14241    if (i === 0) {
14242      fromActionItem = actionItems[0];
14243    }
14244
14245    if (keyframePosition >= keyframe) {
14246      fromActionItem = actionItems[0];
14247      var nextGroup = actionGroups[i + 1];
14248      var hasNextItem = nextGroup && keyframePosition !== keyframe;
14249      toActionItem = hasNextItem ? nextGroup.actionItems[0] : null;
14250
14251      if (hasNextItem) {
14252        positionOffset = keyframe / 100;
14253        positionRange = (nextGroup.keyframe - keyframe) / 100;
14254      }
14255    }
14256  }
14257
14258  var current = {};
14259
14260  if (fromActionItem && !toActionItem) {
14261    for (var _i = 0, _length = destinationKeys.length; _i < _length; _i++) {
14262      var key = destinationKeys[_i];
14263      current[key] = getItemConfigByKey(actionTypeId, key, fromActionItem.config);
14264    }
14265  } else if (fromActionItem && toActionItem && positionOffset !== undefined && positionRange !== undefined) {
14266    var localPosition = (position - positionOffset) / positionRange;
14267    var easing = fromActionItem.config.easing;
14268    var eased = applyEasing(easing, localPosition, customEasingFn);
14269
14270    for (var _i2 = 0, _length2 = destinationKeys.length; _i2 < _length2; _i2++) {
14271      var _key = destinationKeys[_i2];
14272      var fromVal = getItemConfigByKey(actionTypeId, _key, fromActionItem.config);
14273      var toVal = getItemConfigByKey(actionTypeId, _key, toActionItem.config); // $FlowFixMe — toVal and fromVal could potentially be null, need to update type higher to determine number
14274
14275      var diff = toVal - fromVal; // $FlowFixMe
14276
14277      var value = diff * eased + fromVal;
14278      current[_key] = value;
14279    }
14280  }
14281
14282  return (0, _timm.merge)(state, {
14283    position: position,
14284    current: current
14285  });
14286};
14287
14288var timedInstance = function timedInstance(state, action) {
14289  var _state = state,
14290      active = _state.active,
14291      origin = _state.origin,
14292      start = _state.start,
14293      immediate = _state.immediate,
14294      renderType = _state.renderType,
14295      verbose = _state.verbose,
14296      actionItem = _state.actionItem,
14297      destination = _state.destination,
14298      destinationKeys = _state.destinationKeys,
14299      pluginDuration = _state.pluginDuration,
14300      instanceDelay = _state.instanceDelay,
14301      customEasingFn = _state.customEasingFn;
14302  var easing = actionItem.config.easing;
14303  var _actionItem$config = actionItem.config,
14304      duration = _actionItem$config.duration,
14305      delay = _actionItem$config.delay;
14306
14307  if (pluginDuration != null) {
14308    duration = pluginDuration;
14309  }
14310
14311  delay = instanceDelay != null ? instanceDelay : delay;
14312
14313  if (renderType === RENDER_GENERAL) {
14314    duration = 0;
14315  } else if (immediate) {
14316    duration = delay = 0;
14317  }
14318
14319  var now = action.payload.now;
14320
14321  if (active && origin) {
14322    var delta = now - (start + delay);
14323
14324    if (verbose) {
14325      var verboseDelta = now - start;
14326      var verboseDuration = duration + delay;
14327      var verbosePosition = optimizeFloat(Math.min(Math.max(0, verboseDelta / verboseDuration), 1));
14328      state = (0, _timm.set)(state, 'verboseTimeElapsed', verboseDuration * verbosePosition);
14329    }
14330
14331    if (delta < 0) {
14332      return state;
14333    }
14334
14335    var position = optimizeFloat(Math.min(Math.max(0, delta / duration), 1));
14336    var eased = applyEasing(easing, position, customEasingFn);
14337    var newProps = {};
14338    var current = null;
14339
14340    if (destinationKeys.length) {
14341      current = destinationKeys.reduce(function (result, key) {
14342        var destValue = destination[key];
14343        var originVal = parseFloat(origin[key]) || 0;
14344        var diff = parseFloat(destValue) - originVal;
14345        var value = diff * eased + originVal;
14346        result[key] = value;
14347        return result;
14348      }, {});
14349    }
14350
14351    newProps.current = current;
14352    newProps.position = position;
14353
14354    if (position === 1) {
14355      newProps.active = false;
14356      newProps.complete = true;
14357    }
14358
14359    return (0, _timm.merge)(state, newProps);
14360  }
14361
14362  return state;
14363};
14364
14365var ixInstances = function ixInstances() {
14366  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
14367  var action = arguments.length > 1 ? arguments[1] : undefined;
14368
14369  switch (action.type) {
14370    case IX2_RAW_DATA_IMPORTED:
14371      {
14372        return action.payload.ixInstances || Object.freeze({});
14373      }
14374
14375    case IX2_SESSION_STOPPED:
14376      {
14377        return Object.freeze({});
14378      }
14379
14380    case IX2_INSTANCE_ADDED:
14381      {
14382        var _action$payload = action.payload,
14383            instanceId = _action$payload.instanceId,
14384            elementId = _action$payload.elementId,
14385            actionItem = _action$payload.actionItem,
14386            eventId = _action$payload.eventId,
14387            eventTarget = _action$payload.eventTarget,
14388            eventStateKey = _action$payload.eventStateKey,
14389            actionListId = _action$payload.actionListId,
14390            groupIndex = _action$payload.groupIndex,
14391            isCarrier = _action$payload.isCarrier,
14392            origin = _action$payload.origin,
14393            destination = _action$payload.destination,
14394            immediate = _action$payload.immediate,
14395            verbose = _action$payload.verbose,
14396            continuous = _action$payload.continuous,
14397            parameterId = _action$payload.parameterId,
14398            actionGroups = _action$payload.actionGroups,
14399            smoothing = _action$payload.smoothing,
14400            restingValue = _action$payload.restingValue,
14401            pluginInstance = _action$payload.pluginInstance,
14402            pluginDuration = _action$payload.pluginDuration,
14403            instanceDelay = _action$payload.instanceDelay;
14404        var actionTypeId = actionItem.actionTypeId;
14405        var renderType = getRenderType(actionTypeId);
14406        var styleProp = getStyleProp(renderType, actionTypeId);
14407        var destinationKeys = Object.keys(destination).filter(function (key) {
14408          return destination[key] != null;
14409        });
14410        var easing = actionItem.config.easing;
14411        return (0, _timm.set)(state, instanceId, {
14412          id: instanceId,
14413          elementId: elementId,
14414          active: false,
14415          position: 0,
14416          start: 0,
14417          origin: origin,
14418          destination: destination,
14419          destinationKeys: destinationKeys,
14420          immediate: immediate,
14421          verbose: verbose,
14422          current: null,
14423          actionItem: actionItem,
14424          actionTypeId: actionTypeId,
14425          eventId: eventId,
14426          eventTarget: eventTarget,
14427          eventStateKey: eventStateKey,
14428          actionListId: actionListId,
14429          groupIndex: groupIndex,
14430          renderType: renderType,
14431          isCarrier: isCarrier,
14432          styleProp: styleProp,
14433          continuous: continuous,
14434          parameterId: parameterId,
14435          actionGroups: actionGroups,
14436          smoothing: smoothing,
14437          restingValue: restingValue,
14438          pluginInstance: pluginInstance,
14439          pluginDuration: pluginDuration,
14440          instanceDelay: instanceDelay,
14441          customEasingFn: Array.isArray(easing) && easing.length === 4 ? createBezierEasing(easing) : undefined
14442        });
14443      }
14444
14445    case IX2_INSTANCE_STARTED:
14446      {
14447        var _action$payload2 = action.payload,
14448            _instanceId = _action$payload2.instanceId,
14449            time = _action$payload2.time;
14450        return (0, _timm.mergeIn)(state, [_instanceId], {
14451          active: true,
14452          complete: false,
14453          start: time
14454        });
14455      }
14456
14457    case IX2_INSTANCE_REMOVED:
14458      {
14459        var _instanceId2 = action.payload.instanceId;
14460
14461        if (!state[_instanceId2]) {
14462          return state;
14463        }
14464
14465        var newState = {};
14466        var keys = Object.keys(state);
14467        var length = keys.length;
14468
14469        for (var i = 0; i < length; i++) {
14470          var key = keys[i];
14471
14472          if (key !== _instanceId2) {
14473            newState[key] = state[key];
14474          }
14475        }
14476
14477        return newState;
14478      }
14479
14480    case IX2_ANIMATION_FRAME_CHANGED:
14481      {
14482        var _newState = state;
14483
14484        var _keys = Object.keys(state);
14485
14486        var _length3 = _keys.length;
14487
14488        for (var _i3 = 0; _i3 < _length3; _i3++) {
14489          var _key2 = _keys[_i3];
14490          var instance = state[_key2];
14491          var reducer = instance.continuous ? continuousInstance : timedInstance;
14492          _newState = (0, _timm.set)(_newState, _key2, reducer(instance, action));
14493        }
14494
14495        return _newState;
14496      }
14497
14498    default:
14499      {
14500        return state;
14501      }
14502  }
14503};
14504
14505exports.ixInstances = ixInstances;
14506
14507/***/ }),
14508/* 262 */
14509/***/ (function(module, exports, __webpack_require__) {
14510
14511"use strict";
14512
14513
14514Object.defineProperty(exports, "__esModule", {
14515  value: true
14516});
14517exports.ixParameters = void 0;
14518
14519var _constants = __webpack_require__(2);
14520
14521var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
14522    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
14523    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
14524    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED; // prettier-ignore
14525
14526var ixParameters = function ixParameters() {
14527  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
14528    /*mutable flat state*/
14529  };
14530  var action = arguments.length > 1 ? arguments[1] : undefined;
14531
14532  switch (action.type) {
14533    case IX2_RAW_DATA_IMPORTED:
14534      {
14535        return action.payload.ixParameters || {
14536          /*mutable flat state*/
14537        };
14538      }
14539
14540    case IX2_SESSION_STOPPED:
14541      {
14542        return {
14543          /*mutable flat state*/
14544        };
14545      }
14546
14547    case IX2_PARAMETER_CHANGED:
14548      {
14549        var _action$payload = action.payload,
14550            key = _action$payload.key,
14551            value = _action$payload.value;
14552        state[key] = value;
14553        return state;
14554      }
14555
14556    default:
14557      {
14558        return state;
14559      }
14560  }
14561};
14562
14563exports.ixParameters = ixParameters;
14564
14565/***/ }),
14566/* 263 */
14567/***/ (function(module, exports) {
14568
14569function _objectWithoutPropertiesLoose(source, excluded) {
14570  if (source == null) return {};
14571  var target = {};
14572  var sourceKeys = Object.keys(source);
14573  var key, i;
14574
14575  for (i = 0; i < sourceKeys.length; i++) {
14576    key = sourceKeys[i];
14577    if (excluded.indexOf(key) >= 0) continue;
14578    target[key] = source[key];
14579  }
14580
14581  return target;
14582}
14583
14584module.exports = _objectWithoutPropertiesLoose;
14585
14586/***/ }),
14587/* 264 */
14588/***/ (function(module, exports, __webpack_require__) {
14589
14590var baseKeys = __webpack_require__(52),
14591    getTag = __webpack_require__(54),
14592    isArrayLike = __webpack_require__(12),
14593    isString = __webpack_require__(265),
14594    stringSize = __webpack_require__(266);
14595
14596/** `Object#toString` result references. */
14597var mapTag = '[object Map]',
14598    setTag = '[object Set]';
14599
14600/**
14601 * Gets the size of `collection` by returning its length for array-like
14602 * values or the number of own enumerable string keyed properties for objects.
14603 *
14604 * @static
14605 * @memberOf _
14606 * @since 0.1.0
14607 * @category Collection
14608 * @param {Array|Object|string} collection The collection to inspect.
14609 * @returns {number} Returns the collection size.
14610 * @example
14611 *
14612 * _.size([1, 2, 3]);
14613 * // => 3
14614 *
14615 * _.size({ 'a': 1, 'b': 2 });
14616 * // => 2
14617 *
14618 * _.size('pebbles');
14619 * // => 7
14620 */
14621function size(collection) {
14622  if (collection == null) {
14623    return 0;
14624  }
14625  if (isArrayLike(collection)) {
14626    return isString(collection) ? stringSize(collection) : collection.length;
14627  }
14628  var tag = getTag(collection);
14629  if (tag == mapTag || tag == setTag) {
14630    return collection.size;
14631  }
14632  return baseKeys(collection).length;
14633}
14634
14635module.exports = size;
14636
14637
14638/***/ }),
14639/* 265 */
14640/***/ (function(module, exports, __webpack_require__) {
14641
14642var baseGetTag = __webpack_require__(11),
14643    isArray = __webpack_require__(1),
14644    isObjectLike = __webpack_require__(9);
14645
14646/** `Object#toString` result references. */
14647var stringTag = '[object String]';
14648
14649/**
14650 * Checks if `value` is classified as a `String` primitive or object.
14651 *
14652 * @static
14653 * @since 0.1.0
14654 * @memberOf _
14655 * @category Lang
14656 * @param {*} value The value to check.
14657 * @returns {boolean} Returns `true` if `value` is a string, else `false`.
14658 * @example
14659 *
14660 * _.isString('abc');
14661 * // => true
14662 *
14663 * _.isString(1);
14664 * // => false
14665 */
14666function isString(value) {
14667  return typeof value == 'string' ||
14668    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
14669}
14670
14671module.exports = isString;
14672
14673
14674/***/ }),
14675/* 266 */
14676/***/ (function(module, exports, __webpack_require__) {
14677
14678var asciiSize = __webpack_require__(267),
14679    hasUnicode = __webpack_require__(268),
14680    unicodeSize = __webpack_require__(269);
14681
14682/**
14683 * Gets the number of symbols in `string`.
14684 *
14685 * @private
14686 * @param {string} string The string to inspect.
14687 * @returns {number} Returns the string size.
14688 */
14689function stringSize(string) {
14690  return hasUnicode(string)
14691    ? unicodeSize(string)
14692    : asciiSize(string);
14693}
14694
14695module.exports = stringSize;
14696
14697
14698/***/ }),
14699/* 267 */
14700/***/ (function(module, exports, __webpack_require__) {
14701
14702var baseProperty = __webpack_require__(103);
14703
14704/**
14705 * Gets the size of an ASCII `string`.
14706 *
14707 * @private
14708 * @param {string} string The string inspect.
14709 * @returns {number} Returns the string size.
14710 */
14711var asciiSize = baseProperty('length');
14712
14713module.exports = asciiSize;
14714
14715
14716/***/ }),
14717/* 268 */
vendor: 2,920 bytes, lines 14718-14807
14718/***/ (function(module, exports) {
14719
14720/** Used to compose unicode character classes. */
14721var rsAstralRange = '\\ud800-\\udfff',
14722    rsComboMarksRange = '\\u0300-\\u036f',
14723    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
14724    rsComboSymbolsRange = '\\u20d0-\\u20ff',
14725    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
14726    rsVarRange = '\\ufe0e\\ufe0f';
14727
14728/** Used to compose unicode capture groups. */
14729var rsZWJ = '\\u200d';
14730
14731/** 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/). */
14732var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
14733
14734/**
14735 * Checks if `string` contains Unicode symbols.
14736 *
14737 * @private
14738 * @param {string} string The string to inspect.
14739 * @returns {boolean} Returns `true` if a symbol is found, else `false`.
14740 */
14741function hasUnicode(string) {
14742  return reHasUnicode.test(string);
14743}
14744
14745module.exports = hasUnicode;
14746
14747
14748/***/ }),
14749/* 269 */
14750/***/ (function(module, exports) {
14751
14752/** Used to compose unicode character classes. */
14753var rsAstralRange = '\\ud800-\\udfff',
14754    rsComboMarksRange = '\\u0300-\\u036f',
14755    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
14756    rsComboSymbolsRange = '\\u20d0-\\u20ff',
14757    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
14758    rsVarRange = '\\ufe0e\\ufe0f';
14759
14760/** Used to compose unicode capture groups. */
14761var rsAstral = '[' + rsAstralRange + ']',
14762    rsCombo = '[' + rsComboRange + ']',
14763    rsFitz = '\\ud83c[\\udffb-\\udfff]',
14764    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
14765    rsNonAstral = '[^' + rsAstralRange + ']',
14766    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
14767    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
14768    rsZWJ = '\\u200d';
14769
14770/** Used to compose unicode regexes. */
14771var reOptMod = rsModifier + '?',
14772    rsOptVar = '[' + rsVarRange + ']?',
14773    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
14774    rsSeq = rsOptVar + reOptMod + rsOptJoin,
14775    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
14776
14777/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
14778var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
14779
14780/**
14781 * Gets the size of a Unicode `string`.
14782 *
14783 * @private
14784 * @param {string} string The string inspect.
14785 * @returns {number} Returns the string size.
14786 */
14787function unicodeSize(string) {
14788  var result = reUnicode.lastIndex = 0;
14789  while (reUnicode.test(string)) {
14790    ++result;
14791  }
14792  return result;
14793}
14794
14795module.exports = unicodeSize;
14796
14797
14798/***/ }),
14799/* 270 */
14800/***/ (function(module, exports, __webpack_require__) {
14801
14802var baseIteratee = __webpack_require__(7),
14803    negate = __webpack_require__(271),
14804    pickBy = __webpack_require__(272);
14805
14806/**
14807 * The opposite of `_.pickBy`;
14807 this method creates an object composed of
14808 * the own and inherited enumerable string keyed properties of `object` that
14809 * `predicate` doesn't return truthy for. The predicate is invoked with two
14810 * arguments: (value, key).
14811 *
14812 * @static
14813 * @memberOf _
14814 * @since 4.0.0
14815 * @category Object
14816 * @param {Object} object The source object.
14817 * @param {Function} [predicate=_.identity] The function invoked per property.
14818 * @returns {Object} Returns the new object.
14819 * @example
14820 *
14821 * var object = { 'a': 1, 'b': '2', 'c': 3 };
14822 *
14823 * _.omitBy(object, _.isNumber);
14824 * // => { 'b': '2' }
14825 */
14826function omitBy(object, predicate) {
14827  return pickBy(object, negate(baseIteratee(predicate)));
14828}
14829
14830module.exports = omitBy;
14831
14832
14833/***/ }),
14834/* 271 */
14835/***/ (function(module, exports) {
14836
14837/** Error message constants. */
14838var FUNC_ERROR_TEXT = 'Expected a function';
14839
14840/**
14841 * Creates a function that negates the result of the predicate `func`. The
14842 * `func` predicate is invoked with the `this` binding and arguments of the
14843 * created function.
14844 *
14845 * @static
14846 * @memberOf _
14847 * @since 3.0.0
14848 * @category Function
14849 * @param {Function} predicate The predicate to negate.
14850 * @returns {Function} Returns the new negated function.
14851 * @example
14852 *
14853 * function isEven(n) {
14854 *   return n % 2 == 0;
14855 * }
14856 *
14857 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
14858 * // => [1, 3, 5]
14859 */
14860function negate(predicate) {
14861  if (typeof predicate != 'function') {
14862    throw new TypeError(FUNC_ERROR_TEXT);
14863  }
14864  return function() {
14865    var args = arguments;
14866    switch (args.length) {
14867      case 0: return !predicate.call(this);
14868      case 1: return !predicate.call(this, args[0]);
14869      case 2: return !predicate.call(this, args[0], args[1]);
14870      case 3: return !predicate.call(this, args[0], args[1], args[2]);
14871    }
14872    return !predicate.apply(this, args);
14873  };
14874}
14875
14876module.exports = negate;
14877
14878
14879/***/ }),
14880/* 272 */
14881/***/ (function(module, exports, __webpack_require__) {
14882
14883var arrayMap = __webpack_require__(102),
14884    baseIteratee = __webpack_require__(7),
14885    basePickBy = __webpack_require__(273),
14886    getAllKeysIn = __webpack_require__(276);
14887
14888/**
14889 * Creates an object composed of the `object` properties `predicate` returns
14890 * truthy for. The predicate is invoked with two arguments: (value, key).
14891 *
14892 * @static
14893 * @memberOf _
14894 * @since 4.0.0
14895 * @category Object
14896 * @param {Object} object The source object.
14897 * @param {Function} [predicate=_.identity] The function invoked per property.
14898 * @returns {Object} Returns the new object.
14899 * @example
14900 *
14901 * var object = { 'a': 1, 'b': '2', 'c': 3 };
14902 *
14903 * _.pickBy(object, _.isNumber);
14904 * // => { 'a': 1, 'c': 3 }
14905 */
14906function pickBy(object, predicate) {
14907  if (object == null) {
14908    return {};
14909  }
14910  var props = arrayMap(getAllKeysIn(object), function(prop) {
14911    return [prop];
14912  });
14913  predicate = baseIteratee(predicate);
14914  return basePickBy(object, props, function(value, path) {
14915    return predicate(value, path[0]);
14916  });
14917}
14918
14919module.exports = pickBy;
14920
14921
14922/***/ }),
14923/* 273 */
14924/***/ (function(module, exports, __webpack_require__) {
14925
14926var baseGet = __webpack_require__(56),
14927    baseSet = __webpack_require__(274),
14928    castPath = __webpack_require__(34);
14929
14930/**
14931 * The base implementation of  `_.pickBy` without support for iteratee shorthands.
14932 *
14933 * @private
14934 * @param {Object} object The source object.
14935 * @param {string[]} paths The property paths to pick.
14936 * @param {Function} predicate The function invoked per property.
14937 * @returns {Object} Returns the new object.
14938 */
14939function basePickBy(object, paths, predicate) {
14940  var index = -1,
14941      length = paths.length,
14942      result = {};
14943
14944  while (++index < length) {
14945    var path = paths[index],
14946        value = baseGet(object, path);
14947
14948    if (predicate(value, path)) {
14949      baseSet(result, castPath(path, object), value);
14950    }
14951  }
14952  return result;
14953}
14954
14955module.exports = basePickBy;
14956
14957
14958/***/ }),
14959/* 274 */
14960/***/ (function(module, exports, __webpack_require__) {
14961
14962var assignValue = __webpack_require__(275),
14963    castPath = __webpack_require__(34),
14964    isIndex = __webpack_require__(49),
14965    isObject = __webpack_require__(5),
14966    toKey = __webpack_require__(21);
14967
14968/**
14969 * The base implementation of `_.set`.
14970 *
14971 * @private
14972 * @param {Object} object The object to modify.
14973 * @param {Array|string} path The path of the property to set.
14974 * @param {*} value The value to set.
14975 * @param {Function} [customizer] The function to customize path creation.
14976 * @returns {Object} Returns `object`.
14977 */
14978function baseSet(object, path, value, customizer) {
14979  if (!isObject(object)) {
14980    return object;
14981  }
14982  path = castPath(path, object);
14983
14984  var index = -1,
14985      length = path.length,
14986      lastIndex = length - 1,
14987      nested = object;
14988
14989  while (nested != null && ++index < length) {
14990    var key = toKey(path[index]),
14991        newValue = value;
14992
14993    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
14994      return object;
14995    }
14996
14997    if (index != lastIndex) {
14998      var objValue = nested[key];
14999      newValue = customizer ? customizer(objValue, key, nested) : undefined;
15000      if (newValue === undefined) {
15001        newValue = isObject(objValue)
15002          ? objValue
15003          : (isIndex(path[index + 1]) ? [] : {});
15004      }
15005    }
15006    assignValue(nested, key, newValue);
15007    nested = nested[key];
15008  }
15009  return object;
15010}
15011
15012module.exports = baseSet;
15013
15014
15015/***/ }),
15016/* 275 */
15017/***/ (function(module, exports, __webpack_require__) {
15018
15019var baseAssignValue = __webpack_require__(115),
15020    eq = __webpack_require__(44);
15021
15022/** Used for built-in method references. */
15023var objectProto = Object.prototype;
15024
15025/** Used to check objects for own properties. */
15026var hasOwnProperty = objectProto.hasOwnProperty;
15027
15028/**
15029 * Assigns `value` to `key` of `object` if the existing value is not equivalent
15030 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
15031 * for equality comparisons.
15032 *
15033 * @private
15034 * @param {Object} object The object to modify.
15035 * @param {string} key The key of the property to assign.
15036 * @param {*} value The value to assign.
15037 */
15038function assignValue(object, key, value) {
15039  var objValue = object[key];
15040  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
15041      (value === undefined && !(key in object))) {
15042    baseAssignValue(object, key, value);
15043  }
15044}
15045
15046module.exports = assignValue;
15047
15048
15049/***/ }),
15050/* 276 */
15051/***/ (function(module, exports, __webpack_require__) {
15052
15053var baseGetAllKeys = __webpack_require__(93),
15054    getSymbolsIn = __webpack_require__(277),
15055    keysIn = __webpack_require__(279);
15056
15057/**
15058 * Creates an array of own and inherited enumerable property names and
15059 * symbols of `object`.
15060 *
15061 * @private
15062 * @param {Object} object The object to query.
15063 * @returns {Array} Returns the array of property names and symbols.
15064 */
15065function getAllKeysIn(object) {
15066  return baseGetAllKeys(object, keysIn, getSymbolsIn);
15067}
15068
15069module.exports = getAllKeysIn;
15070
15071
15072/***/ }),
15073/* 277 */
15074/***/ (function(module, exports, __webpack_require__) {
15075
15076var arrayPush = __webpack_require__(47),
15077    getPrototype = __webpack_require__(278),
15078    getSymbols = __webpack_require__(94),
15079    stubArray = __webpack_require__(95);
15080
15081/* Built-in method references for those with the same name as other `lodash` methods. */
15082var nativeGetSymbols = Object.getOwnPropertySymbols;
15083
15084/**
15085 * Creates an array of the own and inherited enumerable symbols of `object`.
15086 *
15087 * @private
15088 * @param {Object} object The object to query.
15089 * @returns {Array} Returns the array of symbols.
15090 */
15091var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
15092  var result = [];
15093  while (object) {
vendor: 8,844 bytes, lines 15094-15452
15094    arrayPush(result, getSymbols(object));
15095    object = getPrototype(object);
15096  }
15097  return result;
15098};
15099
15100module.exports = getSymbolsIn;
15101
15102
15103/***/ }),
15104/* 278 */
15105/***/ (function(module, exports, __webpack_require__) {
15106
15107var overArg = __webpack_require__(98);
15108
15109/** Built-in value references. */
15110var getPrototype = overArg(Object.getPrototypeOf, Object);
15111
15112module.exports = getPrototype;
15113
15114
15115/***/ }),
15116/* 279 */
15117/***/ (function(module, exports, __webpack_require__) {
15118
15119var arrayLikeKeys = __webpack_require__(96),
15120    baseKeysIn = __webpack_require__(280),
15121    isArrayLike = __webpack_require__(12);
15122
15123/**
15124 * Creates an array of the own and inherited enumerable property names of `object`.
15125 *
15126 * **Note:** Non-object values are coerced to objects.
15127 *
15128 * @static
15129 * @memberOf _
15130 * @since 3.0.0
15131 * @category Object
15132 * @param {Object} object The object to query.
15133 * @returns {Array} Returns the array of property names.
15134 * @example
15135 *
15136 * function Foo() {
15137 *   this.a = 1;
15138 *   this.b = 2;
15139 * }
15140 *
15141 * Foo.prototype.c = 3;
15142 *
15143 * _.keysIn(new Foo);
15144 * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
15145 */
15146function keysIn(object) {
15147  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
15148}
15149
15150module.exports = keysIn;
15151
15152
15153/***/ }),
15154/* 280 */
15155/***/ (function(module, exports, __webpack_require__) {
15156
15157var isObject = __webpack_require__(5),
15158    isPrototype = __webpack_require__(53),
15159    nativeKeysIn = __webpack_require__(281);
15160
15161/** Used for built-in method references. */
15162var objectProto = Object.prototype;
15163
15164/** Used to check objects for own properties. */
15165var hasOwnProperty = objectProto.hasOwnProperty;
15166
15167/**
15168 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
15169 *
15170 * @private
15171 * @param {Object} object The object to query.
15172 * @returns {Array} Returns the array of property names.
15173 */
15174function baseKeysIn(object) {
15175  if (!isObject(object)) {
15176    return nativeKeysIn(object);
15177  }
15178  var isProto = isPrototype(object),
15179      result = [];
15180
15181  for (var key in object) {
15182    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
15183      result.push(key);
15184    }
15185  }
15186  return result;
15187}
15188
15189module.exports = baseKeysIn;
15190
15191
15192/***/ }),
15193/* 281 */
15194/***/ (function(module, exports) {
15195
15196/**
15197 * This function is like
15198 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
15199 * except that it includes inherited enumerable properties.
15200 *
15201 * @private
15202 * @param {Object} object The object to query.
15203 * @returns {Array} Returns the array of property names.
15204 */
15205function nativeKeysIn(object) {
15206  var result = [];
15207  if (object != null) {
15208    for (var key in Object(object)) {
15209      result.push(key);
15210    }
15211  }
15212  return result;
15213}
15214
15215module.exports = nativeKeysIn;
15216
15217
15218/***/ }),
15219/* 282 */
15220/***/ (function(module, exports, __webpack_require__) {
15221
15222var baseKeys = __webpack_require__(52),
15223    getTag = __webpack_require__(54),
15224    isArguments = __webpack_require__(33),
15225    isArray = __webpack_require__(1),
15226    isArrayLike = __webpack_require__(12),
15227    isBuffer = __webpack_require__(48),
15228    isPrototype = __webpack_require__(53),
15229    isTypedArray = __webpack_require__(50);
15230
15231/** `Object#toString` result references. */
15232var mapTag = '[object Map]',
15233    setTag = '[object Set]';
15234
15235/** Used for built-in method references. */
15236var objectProto = Object.prototype;
15237
15238/** Used to check objects for own properties. */
15239var hasOwnProperty = objectProto.hasOwnProperty;
15240
15241/**
15242 * Checks if `value` is an empty object, collection, map, or set.
15243 *
15244 * Objects are considered empty if they have no own enumerable string keyed
15245 * properties.
15246 *
15247 * Array-like values such as `arguments` objects, arrays, buffers, strings, or
15248 * jQuery-like collections are considered empty if they have a `length` of `0`.
15249 * Similarly, maps and sets are considered empty if they have a `size` of `0`.
15250 *
15251 * @static
15252 * @memberOf _
15253 * @since 0.1.0
15254 * @category Lang
15255 * @param {*} value The value to check.
15256 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
15257 * @example
15258 *
15259 * _.isEmpty(null);
15260 * // => true
15261 *
15262 * _.isEmpty(true);
15263 * // => true
15264 *
15265 * _.isEmpty(1);
15266 * // => true
15267 *
15268 * _.isEmpty([1, 2, 3]);
15269 * // => false
15270 *
15271 * _.isEmpty({ 'a': 1 });
15272 * // => false
15273 */
15274function isEmpty(value) {
15275  if (value == null) {
15276    return true;
15277  }
15278  if (isArrayLike(value) &&
15279      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
15280        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
15281    return !value.length;
15282  }
15283  var tag = getTag(value);
15284  if (tag == mapTag || tag == setTag) {
15285    return !value.size;
15286  }
15287  if (isPrototype(value)) {
15288    return !baseKeys(value).length;
15289  }
15290  for (var key in value) {
15291    if (hasOwnProperty.call(value, key)) {
15292      return false;
15293    }
15294  }
15295  return true;
15296}
15297
15298module.exports = isEmpty;
15299
15300
15301/***/ }),
15302/* 283 */
15303/***/ (function(module, exports, __webpack_require__) {
15304
15305var baseAssignValue = __webpack_require__(115),
15306    baseForOwn = __webpack_require__(112),
15307    baseIteratee = __webpack_require__(7);
15308
15309/**
15310 * Creates an object with the same keys as `object` and values generated
15311 * by running each own enumerable string keyed property of `object` thru
15312 * `iteratee`. The iteratee is invoked with three arguments:
15313 * (value, key, object).
15314 *
15315 * @static
15316 * @memberOf _
15317 * @since 2.4.0
15318 * @category Object
15319 * @param {Object} object The object to iterate over.
15320 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15321 * @returns {Object} Returns the new mapped object.
15322 * @see _.mapKeys
15323 * @example
15324 *
15325 * var users = {
15326 *   'fred':    { 'user': 'fred',    'age': 40 },
15327 *   'pebbles': { 'user': 'pebbles', 'age': 1 }
15328 * };
15329 *
15330 * _.mapValues(users, function(o) { return o.age; });
15331 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
15332 *
15333 * // The `_.property` iteratee shorthand.
15334 * _.mapValues(users, 'age');
15335 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
15336 */
15337function mapValues(object, iteratee) {
15338  var result = {};
15339  iteratee = baseIteratee(iteratee, 3);
15340
15341  baseForOwn(object, function(value, key, object) {
15342    baseAssignValue(result, key, iteratee(value, key, object));
15343  });
15344  return result;
15345}
15346
15347module.exports = mapValues;
15348
15349
15350/***/ }),
15351/* 284 */
15352/***/ (function(module, exports, __webpack_require__) {
15353
15354var arrayEach = __webpack_require__(285),
15355    baseEach = __webpack_require__(111),
15356    castFunction = __webpack_require__(286),
15357    isArray = __webpack_require__(1);
15358
15359/**
15360 * Iterates over elements of `collection` and invokes `iteratee` for each element.
15361 * The iteratee is invoked with three arguments: (value, index|key, collection).
15362 * Iteratee functions may exit iteration early by explicitly returning `false`.
15363 *
15364 * **Note:** As with other "Collections" methods, objects with a "length"
15365 * property are iterated like arrays. To avoid this behavior use `_.forIn`
15366 * or `_.forOwn` for object iteration.
15367 *
15368 * @static
15369 * @memberOf _
15370 * @since 0.1.0
15371 * @alias each
15372 * @category Collection
15373 * @param {Array|Object} collection The collection to iterate over.
15374 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15375 * @returns {Array|Object} Returns `collection`.
15376 * @see _.forEachRight
15377 * @example
15378 *
15379 * _.forEach([1, 2], function(value) {
15380 *   console.log(value);
15381 * });
15382 * // => Logs `1` then `2`.
15383 *
15384 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
15385 *   console.log(key);
15386 * });
15387 * // => Logs 'a' then 'b' (iteration order is not guaranteed).
15388 */
15389function forEach(collection, iteratee) {
15390  var func = isArray(collection) ? arrayEach : baseEach;
15391  return func(collection, castFunction(iteratee));
15392}
15393
15394module.exports = forEach;
15395
15396
15397/***/ }),
15398/* 285 */
15399/***/ (function(module, exports) {
15400
15401/**
15402 * A specialized version of `_.forEach` for arrays without support for
15403 * iteratee shorthands.
15404 *
15405 * @private
15406 * @param {Array} [array] The array to iterate over.
15407 * @param {Function} iteratee The function invoked per iteration.
15408 * @returns {Array} Returns `array`.
15409 */
15410function arrayEach(array, iteratee) {
15411  var index = -1,
15412      length = array == null ? 0 : array.length;
15413
15414  while (++index < length) {
15415    if (iteratee(array[index], index, array) === false) {
15416      break;
15417    }
15418  }
15419  return array;
15420}
15421
15422module.exports = arrayEach;
15423
15424
15425/***/ }),
15426/* 286 */
15427/***/ (function(module, exports, __webpack_require__) {
15428
15429var identity = __webpack_require__(58);
15430
15431/**
15432 * Casts `value` to `identity` if it's not a function.
15433 *
15434 * @private
15435 * @param {*} value The value to inspect.
15436 * @returns {Function} Returns cast function.
15437 */
15438function castFunction(value) {
15439  return typeof value == 'function' ? value : identity;
15440}
15441
15442module.exports = castFunction;
15443
15444
15445/***/ }),
15446/* 287 */
15447/***/ (function(module, exports, __webpack_require__) {
15448
15449var debounce = __webpack_require__(288),
15450    isObject = __webpack_require__(5);
15451
15452/** Error message constants. */
vendor: 9,976 bytes, lines 15453-15767
15453var FUNC_ERROR_TEXT = 'Expected a function';
15454
15455/**
15456 * Creates a throttled function that only invokes `func` at most once per
15457 * every `wait` milliseconds. The throttled function comes with a `cancel`
15458 * method to cancel delayed `func` invocations and a `flush` method to
15459 * immediately invoke them. Provide `options` to indicate whether `func`
15460 * should be invoked on the leading and/or trailing edge of the `wait`
15461 * timeout. The `func` is invoked with the last arguments provided to the
15462 * throttled function. Subsequent calls to the throttled function return the
15463 * result of the last `func` invocation.
15464 *
15465 * **Note:** If `leading` and `trailing` options are `true`, `func` is
15466 * invoked on the trailing edge of the timeout only if the throttled function
15467 * is invoked more than once during the `wait` timeout.
15468 *
15469 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
15470 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
15471 *
15472 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
15473 * for details over the differences between `_.throttle` and `_.debounce`.
15474 *
15475 * @static
15476 * @memberOf _
15477 * @since 0.1.0
15478 * @category Function
15479 * @param {Function} func The function to throttle.
15480 * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
15481 * @param {Object} [options={}] The options object.
15482 * @param {boolean} [options.leading=true]
15483 *  Specify invoking on the leading edge of the timeout.
15484 * @param {boolean} [options.trailing=true]
15485 *  Specify invoking on the trailing edge of the timeout.
15486 * @returns {Function} Returns the new throttled function.
15487 * @example
15488 *
15489 * // Avoid excessively updating the position while scrolling.
15490 * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
15491 *
15492 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
15493 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
15494 * jQuery(element).on('click', throttled);
15495 *
15496 * // Cancel the trailing throttled invocation.
15497 * jQuery(window).on('popstate', throttled.cancel);
15498 */
15499function throttle(func, wait, options) {
15500  var leading = true,
15501      trailing = true;
15502
15503  if (typeof func != 'function') {
15504    throw new TypeError(FUNC_ERROR_TEXT);
15505  }
15506  if (isObject(options)) {
15507    leading = 'leading' in options ? !!options.leading : leading;
15508    trailing = 'trailing' in options ? !!options.trailing : trailing;
15509  }
15510  return debounce(func, wait, {
15511    'leading': leading,
15512    'maxWait': wait,
15513    'trailing': trailing
15514  });
15515}
15516
15517module.exports = throttle;
15518
15519
15520/***/ }),
15521/* 288 */
15522/***/ (function(module, exports, __webpack_require__) {
15523
15524var isObject = __webpack_require__(5),
15525    now = __webpack_require__(289),
15526    toNumber = __webpack_require__(59);
15527
15528/** Error message constants. */
15529var FUNC_ERROR_TEXT = 'Expected a function';
15530
15531/* Built-in method references for those with the same name as other `lodash` methods. */
15532var nativeMax = Math.max,
15533    nativeMin = Math.min;
15534
15535/**
15536 * Creates a debounced function that delays invoking `func` until after `wait`
15537 * milliseconds have elapsed since the last time the debounced function was
15538 * invoked. The debounced function comes with a `cancel` method to cancel
15539 * delayed `func` invocations and a `flush` method to immediately invoke them.
15540 * Provide `options` to indicate whether `func` should be invoked on the
15541 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
15542 * with the last arguments provided to the debounced function. Subsequent
15543 * calls to the debounced function return the result of the last `func`
15544 * invocation.
15545 *
15546 * **Note:** If `leading` and `trailing` options are `true`, `func` is
15547 * invoked on the trailing edge of the timeout only if the debounced function
15548 * is invoked more than once during the `wait` timeout.
15549 *
15550 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
15551 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
15552 *
15553 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
15554 * for details over the differences between `_.debounce` and `_.throttle`.
15555 *
15556 * @static
15557 * @memberOf _
15558 * @since 0.1.0
15559 * @category Function
15560 * @param {Function} func The function to debounce.
15561 * @param {number} [wait=0] The number of milliseconds to delay.
15562 * @param {Object} [options={}] The options object.
15563 * @param {boolean} [options.leading=false]
15564 *  Specify invoking on the leading edge of the timeout.
15565 * @param {number} [options.maxWait]
15566 *  The maximum time `func` is allowed to be delayed before it's invoked.
15567 * @param {boolean} [options.trailing=true]
15568 *  Specify invoking on the trailing edge of the timeout.
15569 * @returns {Function} Returns the new debounced function.
15570 * @example
15571 *
15572 * // Avoid costly calculations while the window size is in flux.
15573 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
15574 *
15575 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
15576 * jQuery(element).on('click', _.debounce(sendMail, 300, {
15577 *   'leading': true,
15578 *   'trailing': false
15579 * }));
15580 *
15581 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
15582 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
15583 * var source = new EventSource('/stream');
15584 * jQuery(source).on('message', debounced);
15585 *
15586 * // Cancel the trailing debounced invocation.
15587 * jQuery(window).on('popstate', debounced.cancel);
15588 */
15589function debounce(func, wait, options) {
15590  var lastArgs,
15591      lastThis,
15592      maxWait,
15593      result,
15594      timerId,
15595      lastCallTime,
15596      lastInvokeTime = 0,
15597      leading = false,
15598      maxing = false,
15599      trailing = true;
15600
15601  if (typeof func != 'function') {
15602    throw new TypeError(FUNC_ERROR_TEXT);
15603  }
15604  wait = toNumber(wait) || 0;
15605  if (isObject(options)) {
15606    leading = !!options.leading;
15607    maxing = 'maxWait' in options;
15608    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
15609    trailing = 'trailing' in options ? !!options.trailing : trailing;
15610  }
15611
15612  function invokeFunc(time) {
15613    var args = lastArgs,
15614        thisArg = lastThis;
15615
15616    lastArgs = lastThis = undefined;
15617    lastInvokeTime = time;
15618    result = func.apply(thisArg, args);
15619    return result;
15620  }
15621
15622  function leadingEdge(time) {
15623    // Reset any `maxWait` timer.
15624    lastInvokeTime = time;
15625    // Start the timer for the trailing edge.
15626    timerId = setTimeout(timerExpired, wait);
15627    // Invoke the leading edge.
15628    return leading ? invokeFunc(time) : result;
15629  }
15630
15631  function remainingWait(time) {
15632    var timeSinceLastCall = time - lastCallTime,
15633        timeSinceLastInvoke = time - lastInvokeTime,
15634        timeWaiting = wait - timeSinceLastCall;
15635
15636    return maxing
15637      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
15638      : timeWaiting;
15639  }
15640
15641  function shouldInvoke(time) {
15642    var timeSinceLastCall = time - lastCallTime,
15643        timeSinceLastInvoke = time - lastInvokeTime;
15644
15645    // Either this is the first call, activity has stopped and we're at the
15646    // trailing edge, the system time has gone backwards and we're treating
15647    // it as the trailing edge, or we've hit the `maxWait` limit.
15648    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
15649      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
15650  }
15651
15652  function timerExpired() {
15653    var time = now();
15654    if (shouldInvoke(time)) {
15655      return trailingEdge(time);
15656    }
15657    // Restart the timer.
15658    timerId = setTimeout(timerExpired, remainingWait(time));
15659  }
15660
15661  function trailingEdge(time) {
15662    timerId = undefined;
15663
15664    // Only invoke if we have `lastArgs` which means `func` has been
15665    // debounced at least once.
15666    if (trailing && lastArgs) {
15667      return invokeFunc(time);
15668    }
15669    lastArgs = lastThis = undefined;
15670    return result;
15671  }
15672
15673  function cancel() {
15674    if (timerId !== undefined) {
15675      clearTimeout(timerId);
15676    }
15677    lastInvokeTime = 0;
15678    lastArgs = lastCallTime = lastThis = timerId = undefined;
15679  }
15680
15681  function flush() {
15682    return timerId === undefined ? result : trailingEdge(now());
15683  }
15684
15685  function debounced() {
15686    var time = now(),
15687        isInvoking = shouldInvoke(time);
15688
15689    lastArgs = arguments;
15690    lastThis = this;
15691    lastCallTime = time;
15692
15693    if (isInvoking) {
15694      if (timerId === undefined) {
15695        return leadingEdge(lastCallTime);
15696      }
15697      if (maxing) {
15698        // Handle invocations in a tight loop.
15699        clearTimeout(timerId);
15700        timerId = setTimeout(timerExpired, wait);
15701        return invokeFunc(lastCallTime);
15702      }
15703    }
15704    if (timerId === undefined) {
15705      timerId = setTimeout(timerExpired, wait);
15706    }
15707    return result;
15708  }
15709  debounced.cancel = cancel;
15710  debounced.flush = flush;
15711  return debounced;
15712}
15713
15714module.exports = debounce;
15715
15716
15717/***/ }),
15718/* 289 */
15719/***/ (function(module, exports, __webpack_require__) {
15720
15721var root = __webpack_require__(4);
15722
15723/**
15724 * Gets the timestamp of the number of milliseconds that have elapsed since
15725 * the Unix epoch (1 January 1970 00:00:00 UTC).
15726 *
15727 * @static
15728 * @memberOf _
15729 * @since 2.4.0
15730 * @category Date
15731 * @returns {number} Returns the timestamp.
15732 * @example
15733 *
15734 * _.defer(function(stamp) {
15735 *   console.log(_.now() - stamp);
15736 * }, _.now());
15737 * // => Logs the number of milliseconds it took for the deferred invocation.
15738 */
15739var now = function() {
15740  return root.Date.now();
15741};
15742
15743module.exports = now;
15744
15745
15746/***/ }),
15747/* 290 */
15748/***/ (function(module, exports, __webpack_require__) {
15749
15750"use strict";
15751
15752
15753var _interopRequireDefault = __webpack_require__(0);
15754
15755var _typeof2 = _interopRequireDefault(__webpack_require__(13));
15756
15757Object.defineProperty(exports, "__esModule", {
15758  value: true
15759});
15760exports.setStyle = setStyle;
15761exports.getStyle = getStyle;
15762exports.getProperty = getProperty;
15763exports.matchSelector = matchSelector;
15764exports.getQuerySelector = getQuerySelector;
15765exports.getValidDocument = getValidDocument;
15766exports.queryDocument = queryDocument;
15767exports.elementContains = elementContains;
15768exports.isSiblingNode = isSiblingNode;
15769exports.getChildElements = getChildElements;
15770exports.getSiblingElements = getSiblingElements;
15771exports.getRefType = getRefType;
15772exports.getClosestElement = void 0;
15773
15774var _shared = __webpack_require__(10);
15775
15776var _constants = __webpack_require__(2);
15777/* eslint-env browser */
15778
15779
15780var ELEMENT_MATCHES = _shared.IX2BrowserSupport.ELEMENT_MATCHES;
15781var _constants$IX2EngineC = _constants.IX2EngineConstants,
15782    IX2_ID_DELIMITER = _constants$IX2EngineC.IX2_ID_DELIMITER,
15783    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
15784    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
15785    WF_PAGE = _constants$IX2EngineC.WF_PAGE;
15786
15787function setStyle(element, prop, value) {
15788  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
15789  element.style[prop] = value;
15790}
15791
15792function getStyle(element, prop) {
15793  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
15794  return element.style[prop];
15795}
15796
15797function getProperty(element, prop) {
15798  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
15799  return element[prop];
15800}
15801
15802function matchSelector(selector) {
15803  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
15804  return function (element) {
15805    return element[ELEMENT_MATCHES](selector);
15806  };
15807}
15808
15809function getQuerySelector(_ref) {
15810  var id = _ref.id,
15811      selector = _ref.selector;
15812
15813  if (id) {
15814    var nodeId = id;
15815
15816    if (id.indexOf(IX2_ID_DELIMITER) !== -1) {
15817      var pair = id.split(IX2_ID_DELIMITER);
15818      var pageId = pair[0];
15819      nodeId = pair[1]; // Short circuit query if we're on the wrong page
15820      // $FlowIgnore — if documentElement is null crash
15821
15822      if (pageId !== document.documentElement.getAttribute(WF_PAGE)) {
15823        return null;
15824      }
15825    }
15826
15827    return "[data-w-id^=\"".concat(nodeId, "\"]");
15828  }
15829
15830  return selector;
15831}
15832
15833function getValidDocument(pageId) {
15834  if (pageId == null || // $FlowIgnore — if documentElement is null crash
15835  pageId === document.documentElement.getAttribute(WF_PAGE)) {
15836    return document;
15837  }
15838
15839  return null;
15840}
15841
15842function queryDocument(baseSelector, descendantSelector) {
15843  return Array.prototype.slice.call(document.querySelectorAll(descendantSelector ? baseSelector + ' ' + descendantSelector : baseSelector));
15844}
15845
15846function elementContains(parent, child) {
15847  return parent.contains(child);
15848}
15849
15850function isSiblingNode(a, b) {
15851  return a !== b && a.parentNode === b.parentNode;
15852}
15853
15854function getChildElements(sourceElements) {
15855  var childElements = [];
15856
15857  for (var i = 0, _ref2 = sourceElements || [], length = _ref2.length; i < length; i++) {
15858    var children = sourceElements[i].children;
15859    var childCount = children.length;
15860
15861    if (!childCount) {
15862      continue;
15863    }
15864
15865    for (var j = 0; j < childCount; j++) {
15866      childElements.push(children[j]);
15867    }
15868  }
15869
15870  return childElements;
15871} // $FlowFixMe
15872
15873
15874function getSiblingElements() {
15875  var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
15876  var elements = [];
15877  var parentCache = [];
15878
15879  for (var i = 0, length = sourceElements.length; i < length; i++) {
15880    var parentNode = sourceElements[i].parentNode;
15881
15882    if (!parentNode || !parentNode.children || !parentNode.children.length) {
15883      continue;
15884    }
15885
15886    if (parentCache.indexOf(parentNode) !== -1) {
15887      continue;
15888    }
15889
15890    parentCache.push(parentNode);
15891    var el = parentNode.firstElementChild;
15892
15893    while (el != null) {
15894      if (sourceElements.indexOf(el) === -1) {
15895        elements.push(el);
15896      }
15897
15898      el = el.nextElementSibling;
15899    }
15900  }
15901
15902  return elements;
15903}
15904
15905var getClosestElement = Element.prototype.closest ? function (element, selector) {
15906  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
15907  if (!document.documentElement.contains(element)) {
15908    return null;
15909  }
15910
15911  return element.closest(selector);
15912} : function (element, selector) {
15913  // $FlowIgnore — if documentElement is null crash
15914  if (!document.documentElement.contains(element)) {
15915    return null;
15916  }
15917
15918  var el = element;
15919
15920  do {
15921    // $FlowIgnore — if documentElement is null crash
15922    if (el[ELEMENT_MATCHES] && el[ELEMENT_MATCHES](selector)) {
15923      return el;
15924    }
15925
15926    el = el.parentNode;
15927  } while (el != null);
15928
15929  return null;
15930};
15931exports.getClosestElement = getClosestElement;
15932
15933function getRefType(ref) {
15934  if (ref != null && (0, _typeof2["default"])(ref) == 'object') {
15935    return ref instanceof Element ? HTML_ELEMENT : PLAIN_OBJECT;
15936  }
15937
15938  return null;
15939}
15940
15941/***/ }),
15942/* 291 */
15943/***/ (function(module, exports, __webpack_require__) {
15944
15945"use strict";
15946
15947
15948var _interopRequireDefault2 = __webpack_require__(0);
15949
15950var _defineProperty2 = _interopRequireDefault2(__webpack_require__(26));
15951
15952var _typeof2 = _interopRequireDefault2(__webpack_require__(13));
15953
15954var _default2;
15955
15956var _interopRequireDefault = __webpack_require__(0);
15957
15958Object.defineProperty(exports, "__esModule", {
15959  value: true
15960});
15961exports["default"] = void 0;
15962
15963var _extends2 = _interopRequireDefault(__webpack_require__(27));
15964
15965var _flow = _interopRequireDefault(__webpack_require__(292));
15966
15967var _get = _interopRequireDefault(__webpack_require__(55));
15968
15969var _clamp = _interopRequireDefault(__webpack_require__(311));
15970
15971var _constants = __webpack_require__(2);
15972
15973var _IX2VanillaEngine = __webpack_require__(114);
15974
15975var _IX2EngineActions = __webpack_require__(60);
15976
15977var _shared = __webpack_require__(10);
15978/* eslint-env browser */
15979
15980
15981var _constants$EventTypeC = _constants.EventTypeConsts,
15982    MOUSE_CLICK = _constants$EventTypeC.MOUSE_CLICK,
15983    MOUSE_SECOND_CLICK = _constants$EventTypeC.MOUSE_SECOND_CLICK,
15984    MOUSE_DOWN = _constants$EventTypeC.MOUSE_DOWN,
15985    MOUSE_UP = _constants$EventTypeC.MOUSE_UP,
15986    MOUSE_OVER = _constants$EventTypeC.MOUSE_OVER,
15987    MOUSE_OUT = _constants$EventTypeC.MOUSE_OUT,
15988    DROPDOWN_CLOSE = _constants$EventTypeC.DROPDOWN_CLOSE,
15989    DROPDOWN_OPEN = _constants$EventTypeC.DROPDOWN_OPEN,
15990    SLIDER_ACTIVE = _constants$EventTypeC.SLIDER_ACTIVE,
15991    SLIDER_INACTIVE = _constants$EventTypeC.SLIDER_INACTIVE,
15992    TAB_ACTIVE = _constants$EventTypeC.TAB_ACTIVE,
15993    TAB_INACTIVE = _constants$EventTypeC.TAB_INACTIVE,
15994    NAVBAR_CLOSE = _constants$EventTypeC.NAVBAR_CLOSE,
15995    NAVBAR_OPEN = _constants$EventTypeC.NAVBAR_OPEN,
15996    MOUSE_MOVE = _constants$EventTypeC.MOUSE_MOVE,
15997    PAGE_SCROLL_DOWN = _constants$EventTypeC.PAGE_SCROLL_DOWN,
15998    SCROLL_INTO_VIEW = _constants$EventTypeC.SCROLL_INTO_VIEW,
15999    SCROLL_OUT_OF_VIEW = _constants$EventTypeC.SCROLL_OUT_OF_VIEW,
16000    PAGE_SCROLL_UP = _constants$EventTypeC.PAGE_SCROLL_UP,
16001    SCROLLING_IN_VIEW = _constants$EventTypeC.SCROLLING_IN_VIEW,
16002    PAGE_FINISH = _constants$EventTypeC.PAGE_FINISH,
16003    ECOMMERCE_CART_CLOSE = _constants$EventTypeC.ECOMMERCE_CART_CLOSE,
16004    ECOMMERCE_CART_OPEN = _constants$EventTypeC.ECOMMERCE_CART_OPEN,
16005    PAGE_START = _constants$EventTypeC.PAGE_START,
16006    PAGE_SCROLL = _constants$EventTypeC.PAGE_SCROLL;
16007var COMPONENT_ACTIVE = 'COMPONENT_ACTIVE';
16008var COMPONENT_INACTIVE = 'COMPONENT_INACTIVE';
16009var COLON_DELIMITER = _constants.IX2EngineConstants.COLON_DELIMITER;
16010var getNamespacedParameterId = _shared.IX2VanillaUtils.getNamespacedParameterId;
16011
16012var composableFilter = function composableFilter(predicate) {
16013  return function (options) {
16014    if ((0, _typeof2["default"])(options) === 'object' && predicate(options)) {
16015      return true;
16016    }
16017
16018    return options;
16019  };
16020};
16021
16022var isElement = composableFilter(function (_ref) {
16023  var element = _ref.element,
16024      nativeEvent = _ref.nativeEvent;
16025  return element === nativeEvent.target;
16026});
16027var containsElement = composableFilter(function (_ref2) {
16028  var element = _ref2.element,
16029      nativeEvent = _ref2.nativeEvent;
16030  return element.contains(nativeEvent.target);
16031});
16032var isOrContainsElement = (0, _flow["default"])([isElement, containsElement]);
16033
16034var getAutoStopEvent = function getAutoStopEvent(store, autoStopEventId) {
16035  if (autoStopEventId) {
16036    var _store$getState = store.getState(),
16037        ixData = _store$getState.ixData;
16038
16039    var events = ixData.events;
16040    var eventToStop = events[autoStopEventId];
16041
16042    if (eventToStop && !AUTO_STOP_DISABLED_EVENTS[eventToStop.eventTypeId]) {
16043      return eventToStop;
16044    }
16045  }
16046
16047  return null;
16048};
16049
16050var hasAutoStopEvent = function hasAutoStopEvent(_ref3) {
16051  var store = _ref3.store,
16052      event = _ref3.event;
16053  var eventAction = event.action;
16054  var autoStopEventId = eventAction.config.autoStopEventId;
16055  return Boolean(getAutoStopEvent(store, autoStopEventId));
16056};
16057
16058var actionGroupCreator = function actionGroupCreator(_ref4, state) {
16059  var store = _ref4.store,
16060      event = _ref4.event,
16061      element = _ref4.element,
16062      eventStateKey = _ref4.eventStateKey;
16063  var eventAction = event.action,
16064      eventId = event.id;
16065  var _eventAction$config = eventAction.config,
16066      actionListId = _eventAction$config.actionListId,
16067      autoStopEventId = _eventAction$config.autoStopEventId;
16068  var eventToStop = getAutoStopEvent(store, autoStopEventId);
16069
16070  if (eventToStop) {
16071    (0, _IX2VanillaEngine.stopActionGroup)({
16072      store: store,
16073      eventId: autoStopEventId,
16074      eventTarget: element,
16075      eventStateKey: autoStopEventId + COLON_DELIMITER + eventStateKey.split(COLON_DELIMITER)[1],
16076      actionListId: (0, _get["default"])(eventToStop, 'action.config.actionListId')
16077    });
16078  }
16079
16080  (0, _IX2VanillaEngine.stopActionGroup)({
16081    store: store,
16082    eventId: eventId,
16083    eventTarget: element,
16084    eventStateKey: eventStateKey,
16085    actionListId: actionListId
16086  });
16087  (0, _IX2VanillaEngine.startActionGroup)({
16088    store: store,
16089    eventId: eventId,
16090    eventTarget: element,
16091    eventStateKey: eventStateKey,
16092    actionListId: actionListId
16093  });
16094  return state;
16095}; // $FlowFixMe
16096
16097
16098var withFilter = function withFilter(filter, handler) {
16099  return function (options, state) {
16100    return (// $FlowFixMe
16101      filter(options, state) === true ? handler(options, state) : state
16102    );
16103  };
16104};
16105
16106var baseActionGroupOptions = {
16107  handler: withFilter(isOrContainsElement, actionGroupCreator)
16108};
16109var baseActivityActionGroupOptions = (0, _extends2["default"])({}, baseActionGroupOptions, {
16110  types: [COMPONENT_ACTIVE, COMPONENT_INACTIVE].join(' ')
16111});
16112var SCROLL_EVENT_TYPES = [{
16113  target: window,
16114  types: 'resize orientationchange',
16115  throttle: true
16116}, {
16117  target: document,
16118  types: 'scroll wheel readystatechange IX2_PAGE_UPDATE',
16119  throttle: true
16120}];
16121var MOUSE_OVER_OUT_TYPES = 'mouseover mouseout';
16122var baseScrollActionGroupOptions = {
16123  types: SCROLL_EVENT_TYPES
16124};
16125var AUTO_STOP_DISABLED_EVENTS = {
16126  PAGE_START: PAGE_START,
16127  PAGE_FINISH: PAGE_FINISH
16128};
16129
16130var getDocumentState = function () {
16131  var supportOffset = window.pageXOffset !== undefined;
16132  var isCSS1Compat = document.compatMode === 'CSS1Compat';
16133  var rootElement = isCSS1Compat ? document.documentElement : document.body;
16134  return function () {
16135    return {
16136      // $FlowFixMe
16137      scrollLeft: supportOffset ? window.pageXOffset : rootElement.scrollLeft,
16138      // $FlowFixMe
16139      scrollTop: supportOffset ? window.pageYOffset : rootElement.scrollTop,
16140      // required to remove elasticity in Safari scrolling.
16141      stiffScrollTop: (0, _clamp["default"])( // $FlowFixMe
16142      supportOffset ? window.pageYOffset : rootElement.scrollTop, 0, // $FlowFixMe
16143      rootElement.scrollHeight - window.innerHeight),
16144      // $FlowFixMe
16145      scrollWidth: rootElement.scrollWidth,
16146      // $FlowFixMe
16147      scrollHeight: rootElement.scrollHeight,
16148      // $FlowFixMe
16149      clientWidth: rootElement.clientWidth,
16150      // $FlowFixMe
16151      clientHeight: rootElement.clientHeight,
16152      innerWidth: window.innerWidth,
16153      innerHeight: window.innerHeight
16154    };
16155  };
16156}();
16157
16158var areBoxesIntersecting = function areBoxesIntersecting(a, b) {
16159  return !(a.left > b.right || a.right < b.left || a.top > b.bottom || a.bottom < b.top);
16160};
16161
16162var isElementHovered = function isElementHovered(_ref5) {
16163  var element = _ref5.element,
16164      nativeEvent = _ref5.nativeEvent;
16165  var type = nativeEvent.type,
16166      target = nativeEvent.target,
16167      relatedTarget = nativeEvent.relatedTarget;
16168  var containsTarget = element.contains(target);
16169
16170  if (type === 'mouseover' && containsTarget) {
16171    return true;
16172  }
16173
16174  var containsRelated = element.contains(relatedTarget);
16175
16176  if (type === 'mouseout' && containsTarget && containsRelated) {
16177    return true;
16178  }
16179
16180  return false;
16181};
16182
16183var isElementVisible = function isElementVisible(options) {
16184  var element = options.element,
16185      config = options.event.config;
16186
16187  var _getDocumentState = getDocumentState(),
16188      clientWidth = _getDocumentState.clientWidth,
16189      clientHeight = _getDocumentState.clientHeight;
16190
16191  var scrollOffsetValue = config.scrollOffsetValue;
16192  var scrollOffsetUnit = config.scrollOffsetUnit;
16193  var isPX = scrollOffsetUnit === 'PX';
16194  var offsetPadding = isPX ? scrollOffsetValue : clientHeight * (scrollOffsetValue || 0) / 100;
16195  return areBoxesIntersecting(element.getBoundingClientRect(), {
16196    left: 0,
16197    top: offsetPadding,
16198    right: clientWidth,
16199    bottom: clientHeight - offsetPadding
16200  });
16201};
16202
16203var whenComponentActiveChange = function whenComponentActiveChange(handler) {
16204  return function (options, oldState) {
16205    var type = options.nativeEvent.type; // prettier-ignore
16206
16207    var isActive = [COMPONENT_ACTIVE, COMPONENT_INACTIVE].indexOf(type) !== -1 ? type === COMPONENT_ACTIVE : oldState.isActive;
16208    var newState = (0, _extends2["default"])({}, oldState, {
16209      isActive: isActive
16210    });
16211
16212    if (!oldState || newState.isActive !== oldState.isActive) {
16213      return handler(options, newState) || newState;
16214    }
16215
16216    return newState;
16217  };
16218};
16219
16220var whenElementHoverChange = function whenElementHoverChange(handler) {
16221  return function (options, oldState) {
16222    var newState = {
16223      elementHovered: isElementHovered(options)
16224    };
16225
16226    if (oldState ? newState.elementHovered !== oldState.elementHovered : newState.elementHovered) {
16227      return handler(options, newState) || newState;
16228    }
16229
16230    return newState;
16231  };
16232}; // $FlowFixMe
16233
16234
16235var whenElementVisibiltyChange = function whenElementVisibiltyChange(handler) {
16236  return function (options, oldState) {
16237    var newState = (0, _extends2["default"])({}, oldState, {
16238      elementVisible: isElementVisible(options)
16239    });
16240
16241    if (oldState ? newState.elementVisible !== oldState.elementVisible : newState.elementVisible) {
16242      return handler(options, newState) || newState;
16243    }
16244
16245    return newState;
16246  };
16247}; // $FlowFixMe
16248
16249
16250var whenScrollDirectionChange = function whenScrollDirectionChange(handler) {
16251  return function (options) {
16252    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
16253
16254    var _getDocumentState2 = getDocumentState(),
16255        scrollTop = _getDocumentState2.stiffScrollTop,
16256        scrollHeight = _getDocumentState2.scrollHeight,
16257        innerHeight = _getDocumentState2.innerHeight;
16258
16259    var _options$event = options.event,
16260        config = _options$event.config,
16261        eventTypeId = _options$event.eventTypeId;
16262    var scrollOffsetValue = config.scrollOffsetValue,
16263        scrollOffsetUnit = config.scrollOffsetUnit;
16264    var isPX = scrollOffsetUnit === 'PX';
16265    var scrollHeightBounds = scrollHeight - innerHeight; // percent top since innerHeight may change for mobile devices which also changes the scrollTop value.
16266
16267    var percentTop = Number((scrollTop / scrollHeightBounds).toFixed(2)); // no state change
16268
16269    if (oldState && oldState.percentTop === percentTop) {
16270      return oldState;
16271    }
16272
16273    var scrollTopPadding = (isPX ? scrollOffsetValue : innerHeight * (scrollOffsetValue || 0) / 100) / scrollHeightBounds;
16274    var scrollingDown;
16275    var scrollDirectionChanged;
16276    var anchorTop = 0;
16277
16278    if (oldState) {
16279      scrollingDown = percentTop > oldState.percentTop;
16280      scrollDirectionChanged = oldState.scrollingDown !== scrollingDown;
16281      anchorTop = scrollDirectionChanged ? percentTop : oldState.anchorTop;
16282    }
16283
16284    var inBounds = eventTypeId === PAGE_SCROLL_DOWN ? percentTop >= anchorTop + scrollTopPadding : percentTop <= anchorTop - scrollTopPadding;
16285    var newState = (0, _extends2["default"])({}, oldState, {
16286      percentTop: percentTop,
16287      inBounds: inBounds,
16288      anchorTop: anchorTop,
16289      scrollingDown: scrollingDown
16290    });
16291
16292    if (oldState && inBounds && (scrollDirectionChanged || newState.inBounds !== oldState.inBounds)) {
16293      return handler(options, newState) || newState;
16294    }
16295
16296    return newState;
16297  };
16298};
16299
16300var pointIntersects = function pointIntersects(point, rect) {
16301  return point.left > rect.left && point.left < rect.right && point.top > rect.top && point.top < rect.bottom;
16302};
16303
16304var whenPageLoadFinish = function whenPageLoadFinish(handler) {
16305  return function (options, oldState) {
16306    var newState = {
16307      finished: document.readyState === 'complete'
16308    };
16309
16310    if (newState.finished && !(oldState && oldState.finshed)) {
16311      handler(options);
16312    }
16313
16314    return newState;
16315  };
16316};
16317
16318var whenPageLoadStart = function whenPageLoadStart(handler) {
16319  return function (options, oldState) {
16320    var newState = {
16321      started: true
16322    };
16323
16324    if (!oldState) {
16325      handler(options);
16326    }
16327
16328    return newState;
16329  };
16330};
16331
16332var whenClickCountChange = function whenClickCountChange(handler) {
16333  return function (options) {
16334    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
16335      clickCount: 0
16336    };
16337    var newState = {
16338      clickCount: oldState.clickCount % 2 + 1
16339    };
16340
16341    if (newState.clickCount !== oldState.clickCount) {
16342      return handler(options, newState) || newState;
16343    }
16344
16345    return newState;
16346  };
16347};
16348
16349var getComponentActiveOptions = function getComponentActiveOptions() {
16350  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
16351  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
16352    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
16353      return state.isActive ? baseActionGroupOptions.handler(options, state) : state;
16354    }))
16355  });
16356};
16357
16358var getComponentInactiveOptions = function getComponentInactiveOptions() {
16359  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
16360  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
16361    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
16362      return !state.isActive ? baseActionGroupOptions.handler(options, state) : state;
16363    }))
16364  });
16365};
16366
16367var scrollIntoOutOfViewOptions = (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
16368  handler: whenElementVisibiltyChange(function (options, state) {
16369    var elementVisible = state.elementVisible;
16370    var event = options.event,
16371        store = options.store;
16372
16373    var _store$getState2 = store.getState(),
16374        ixData = _store$getState2.ixData;
16375
16376    var events = ixData.events; // trigger the handler only once if only one of SCROLL_INTO or SCROLL_OUT_OF event types
16377    // are registered.
16378
16379    if (!events[event.action.config.autoStopEventId] && state.triggered) {
16380      return state;
16381    }
16382
16383    if (event.eventTypeId === SCROLL_INTO_VIEW === elementVisible) {
16384      actionGroupCreator(options);
16385      return (0, _extends2["default"])({}, state, {
16386        triggered: true
16387      });
16388    } else {
16389      return state;
16390    }
16391  })
16392});
16393var MOUSE_OUT_ROUND_THRESHOLD = 0.05;
16394
16395var _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, {
16396  types: 'ecommerce-cart-open',
16397  handler: withFilter(isOrContainsElement, actionGroupCreator)
16398}), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_CLOSE, {
16399  types: 'ecommerce-cart-close',
16400  handler: withFilter(isOrContainsElement, actionGroupCreator)
16401}), (0, _defineProperty2["default"])(_default2, MOUSE_CLICK, {
16402  types: 'click',
16403  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref6) {
16404    var clickCount = _ref6.clickCount;
16405
16406    if (hasAutoStopEvent(options)) {
16407      clickCount === 1 && actionGroupCreator(options);
16408    } else {
16409      actionGroupCreator(options);
16410    }
16411  }))
16412}), (0, _defineProperty2["default"])(_default2, MOUSE_SECOND_CLICK, {
16413  types: 'click',
16414  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref7) {
16415    var clickCount = _ref7.clickCount;
16416
16417    if (clickCount === 2) {
16418      actionGroupCreator(options);
16419    }
16420  }))
16421}), (0, _defineProperty2["default"])(_default2, MOUSE_DOWN, (0, _extends2["default"])({}, baseActionGroupOptions, {
16422  types: 'mousedown'
16423})), (0, _defineProperty2["default"])(_default2, MOUSE_UP, (0, _extends2["default"])({}, baseActionGroupOptions, {
16424  types: 'mouseup'
16425})), (0, _defineProperty2["default"])(_default2, MOUSE_OVER, {
16426  types: MOUSE_OVER_OUT_TYPES,
16427  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
16428    if (state.elementHovered) {
16429      actionGroupCreator(options);
16430    }
16431  }))
16432}), (0, _defineProperty2["default"])(_default2, MOUSE_OUT, {
16433  types: MOUSE_OVER_OUT_TYPES,
16434  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
16435    if (!state.elementHovered) {
16436      actionGroupCreator(options);
16437    }
16438  }))
16439}), (0, _defineProperty2["default"])(_default2, MOUSE_MOVE, {
16440  types: 'mousemove mouseout scroll',
16441  handler: function handler( // $FlowFixMe
16442  _ref8) {
16443    var store = _ref8.store,
16444        element = _ref8.element,
16445        eventConfig = _ref8.eventConfig,
16446        nativeEvent = _ref8.nativeEvent,
16447        eventStateKey = _ref8.eventStateKey;
16448    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
16449      clientX: 0,
16450      clientY: 0,
16451      pageX: 0,
16452      pageY: 0
16453    };
16454    var basedOn = eventConfig.basedOn,
16455        selectedAxis = eventConfig.selectedAxis,
16456        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
16457        reverse = eventConfig.reverse,
16458        _eventConfig$restingS = eventConfig.restingState,
16459        restingState = _eventConfig$restingS === void 0 ? 0 : _eventConfig$restingS;
16460    var _nativeEvent$clientX = nativeEvent.clientX,
16461        clientX = _nativeEvent$clientX === void 0 ? state.clientX : _nativeEvent$clientX,
16462        _nativeEvent$clientY = nativeEvent.clientY,
16463        clientY = _nativeEvent$clientY === void 0 ? state.clientY : _nativeEvent$clientY,
16464        _nativeEvent$pageX = nativeEvent.pageX,
16465        pageX = _nativeEvent$pageX === void 0 ? state.pageX : _nativeEvent$pageX,
16466        _nativeEvent$pageY = nativeEvent.pageY,
16467        pageY = _nativeEvent$pageY === void 0 ? state.pageY : _nativeEvent$pageY;
16468    var isXAxis = selectedAxis === 'X_AXIS';
16469    var isMouseOut = nativeEvent.type === 'mouseout';
16470    var value = restingState / 100;
16471    var namespacedParameterId = continuousParameterGroupId;
16472    var elementHovered = false;
16473
16474    switch (basedOn) {
16475      case _constants.EventBasedOn.VIEWPORT:
16476        {
16477          value = isXAxis ? Math.min(clientX, window.innerWidth) / window.innerWidth : Math.min(clientY, window.innerHeight) / window.innerHeight;
16478          break;
16479        }
16480
16481      case _constants.EventBasedOn.PAGE:
16482        {
16483          var _getDocumentState3 = getDocumentState(),
16484              scrollLeft = _getDocumentState3.scrollLeft,
16485              scrollTop = _getDocumentState3.scrollTop,
16486              scrollWidth = _getDocumentState3.scrollWidth,
16487              scrollHeight = _getDocumentState3.scrollHeight;
16488
16489          value = isXAxis ? Math.min(scrollLeft + pageX, scrollWidth) / scrollWidth : Math.min(scrollTop + pageY, scrollHeight) / scrollHeight;
16490          break;
16491        }
16492
16493      case _constants.EventBasedOn.ELEMENT:
16494      default:
16495        {
16496          namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
16497          var isMouseEvent = nativeEvent.type.indexOf('mouse') === 0; // Use isOrContainsElement for mouse events since they are fired from the target
16498
16499          if (isMouseEvent && isOrContainsElement({
16500            element: element,
16501            nativeEvent: nativeEvent
16502          }) !== true) {
16503            break;
16504          }
16505
16506          var rect = element.getBoundingClientRect();
16507          var left = rect.left,
16508              top = rect.top,
16509              width = rect.width,
16510              height = rect.height; // Otherwise we'll need to calculate the mouse position from the previous handler state
16511          // against the target element's rect
16512
16513          if (!isMouseEvent && !pointIntersects({
16514            left: clientX,
16515            top: clientY
16516          }, rect)) {
16517            break;
16518          }
16519
16520          elementHovered = true;
16521          value = isXAxis ? (clientX - left) / width : (clientY - top) / height;
16522          break;
16523        }
16524    } // cover case where the event is a mouse out, but the value is not quite at 100%
16525
16526
16527    if (isMouseOut && (value > 1 - MOUSE_OUT_ROUND_THRESHOLD || value < MOUSE_OUT_ROUND_THRESHOLD)) {
16528      value = Math.round(value);
16529    } // Only update based on element if the mouse is moving over or has just left the element
16530
16531
16532    if (basedOn !== _constants.EventBasedOn.ELEMENT || elementHovered || // $FlowFixMe
16533    elementHovered !== state.elementHovered) {
16534      value = reverse ? 1 - value : value;
16535      store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, value));
16536    }
16537
16538    return {
16539      elementHovered: elementHovered,
16540      clientX: clientX,
16541      clientY: clientY,
16542      pageX: pageX,
16543      pageY: pageY
16544    };
16545  }
16546}), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL, {
16547  types: SCROLL_EVENT_TYPES,
16548  // $FlowFixMe
16549  handler: function handler(_ref9) {
16550    var store = _ref9.store,
16551        eventConfig = _ref9.eventConfig;
16552    var continuousParameterGroupId = eventConfig.continuousParameterGroupId,
16553        reverse = eventConfig.reverse;
16554
16555    var _getDocumentState4 = getDocumentState(),
16556        scrollTop = _getDocumentState4.scrollTop,
16557        scrollHeight = _getDocumentState4.scrollHeight,
16558        clientHeight = _getDocumentState4.clientHeight;
16559
16560    var value = scrollTop / (scrollHeight - clientHeight);
16561    value = reverse ? 1 - value : value;
16562    store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
16563  }
16564}), (0, _defineProperty2["default"])(_default2, SCROLLING_IN_VIEW, {
16565  types: SCROLL_EVENT_TYPES,
16566  handler: function handler( // $FlowFixMe
16567  _ref10) {
16568    var element = _ref10.element,
16569        store = _ref10.store,
16570        eventConfig = _ref10.eventConfig,
16571        eventStateKey = _ref10.eventStateKey;
16572    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
16573      scrollPercent: 0
16574    };
16575
16576    var _getDocumentState5 = getDocumentState(),
16577        scrollLeft = _getDocumentState5.scrollLeft,
16578        scrollTop = _getDocumentState5.scrollTop,
16579        scrollWidth = _getDocumentState5.scrollWidth,
16580        scrollHeight = _getDocumentState5.scrollHeight,
16581        visibleHeight = _getDocumentState5.clientHeight;
16582
16583    var basedOn = eventConfig.basedOn,
16584        selectedAxis = eventConfig.selectedAxis,
16585        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
16586        startsEntering = eventConfig.startsEntering,
16587        startsExiting = eventConfig.startsExiting,
16588        addEndOffset = eventConfig.addEndOffset,
16589        addStartOffset = eventConfig.addStartOffset,
16590        _eventConfig$addOffse = eventConfig.addOffsetValue,
16591        addOffsetValue = _eventConfig$addOffse === void 0 ? 0 : _eventConfig$addOffse,
16592        _eventConfig$endOffse = eventConfig.endOffsetValue,
16593        endOffsetValue = _eventConfig$endOffse === void 0 ? 0 : _eventConfig$endOffse;
16594    var isXAxis = selectedAxis === 'X_AXIS';
16595
16596    if (basedOn === _constants.EventBasedOn.VIEWPORT) {
16597      var value = isXAxis ? scrollLeft / scrollWidth : scrollTop / scrollHeight;
16598
16599      if (value !== state.scrollPercent) {
16600        store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
16601      }
16602
16603      return {
16604        scrollPercent: value
16605      };
16606    } else {
16607      var namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
16608      var elementRect = element.getBoundingClientRect();
16609      var offsetStartPerc = (addStartOffset ? addOffsetValue : 0) / 100;
16610      var offsetEndPerc = (addEndOffset ? endOffsetValue : 0) / 100; // flip the offset percentages depending on start / exit type
16611
16612      offsetStartPerc = startsEntering ? offsetStartPerc : 1 - offsetStartPerc;
16613      offsetEndPerc = startsExiting ? offsetEndPerc : 1 - offsetEndPerc;
16614      var offsetElementTop = elementRect.top + Math.min(elementRect.height * offsetStartPerc, visibleHeight);
16615      var offsetElementBottom = elementRect.top + elementRect.height * offsetEndPerc;
16616      var offsetHeight = offsetElementBottom - offsetElementTop;
16617      var fixedScrollHeight = Math.min(visibleHeight + offsetHeight, scrollHeight);
16618      var fixedScrollTop = Math.min(Math.max(0, visibleHeight - offsetElementTop), fixedScrollHeight);
16619      var fixedScrollPerc = fixedScrollTop / fixedScrollHeight;
16620
16621      if (fixedScrollPerc !== state.scrollPercent) {
16622        store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, fixedScrollPerc));
16623      }
16624
16625      return {
16626        scrollPercent: fixedScrollPerc
16627      };
16628    }
16629  }
16630}), (0, _defineProperty2["default"])(_default2, SCROLL_INTO_VIEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, SCROLL_OUT_OF_V
16630IEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_DOWN, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
16631  handler: whenScrollDirectionChange(function (options, state) {
16632    if (state.scrollingDown) {
16633      actionGroupCreator(options);
16634    }
16635  })
16636})), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_UP, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
16637  handler: whenScrollDirectionChange(function (options, state) {
16638    if (!state.scrollingDown) {
16639      actionGroupCreator(options);
16640    }
16641  })
16642})), (0, _defineProperty2["default"])(_default2, PAGE_FINISH, {
16643  types: 'readystatechange IX2_PAGE_UPDATE',
16644  handler: withFilter(isElement, whenPageLoadFinish(actionGroupCreator))
16645}), (0, _defineProperty2["default"])(_default2, PAGE_START, {
16646  types: 'readystatechange IX2_PAGE_UPDATE',
16647  handler: withFilter(isElement, whenPageLoadStart(actionGroupCreator))
16648}), _default2);
16649
16650exports["default"] = _default;
16651
16652/***/ }),
16653/* 292 */
16654/***/ (function(module, exports, __webpack_require__) {
16655
vendor: 4,744 bytes, lines 16656-16835
16656var createFlow = __webpack_require__(293);
16657
16658/**
16659 * Creates a function that returns the result of invoking the given functions
16660 * with the `this` binding of the created function, where each successive
16661 * invocation is supplied the return value of the previous.
16662 *
16663 * @static
16664 * @memberOf _
16665 * @since 3.0.0
16666 * @category Util
16667 * @param {...(Function|Function[])} [funcs] The functions to invoke.
16668 * @returns {Function} Returns the new composite function.
16669 * @see _.flowRight
16670 * @example
16671 *
16672 * function square(n) {
16673 *   return n * n;
16674 * }
16675 *
16676 * var addSquare = _.flow([_.add, square]);
16677 * addSquare(1, 2);
16678 * // => 9
16679 */
16680var flow = createFlow();
16681
16682module.exports = flow;
16683
16684
16685/***/ }),
16686/* 293 */
16687/***/ (function(module, exports, __webpack_require__) {
16688
16689var LodashWrapper = __webpack_require__(61),
16690    flatRest = __webpack_require__(294),
16691    getData = __webpack_require__(118),
16692    getFuncName = __webpack_require__(119),
16693    isArray = __webpack_require__(1),
16694    isLaziable = __webpack_require__(307);
16695
16696/** Error message constants. */
16697var FUNC_ERROR_TEXT = 'Expected a function';
16698
16699/** Used to compose bitmasks for function metadata. */
16700var WRAP_CURRY_FLAG = 8,
16701    WRAP_PARTIAL_FLAG = 32,
16702    WRAP_ARY_FLAG = 128,
16703    WRAP_REARG_FLAG = 256;
16704
16705/**
16706 * Creates a `_.flow` or `_.flowRight` function.
16707 *
16708 * @private
16709 * @param {boolean} [fromRight] Specify iterating from right to left.
16710 * @returns {Function} Returns the new flow function.
16711 */
16712function createFlow(fromRight) {
16713  return flatRest(function(funcs) {
16714    var length = funcs.length,
16715        index = length,
16716        prereq = LodashWrapper.prototype.thru;
16717
16718    if (fromRight) {
16719      funcs.reverse();
16720    }
16721    while (index--) {
16722      var func = funcs[index];
16723      if (typeof func != 'function') {
16724        throw new TypeError(FUNC_ERROR_TEXT);
16725      }
16726      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
16727        var wrapper = new LodashWrapper([], true);
16728      }
16729    }
16730    index = wrapper ? index : length;
16731    while (++index < length) {
16732      func = funcs[index];
16733
16734      var funcName = getFuncName(func),
16735          data = funcName == 'wrapper' ? getData(func) : undefined;
16736
16737      if (data && isLaziable(data[0]) &&
16738            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
16739            !data[4].length && data[9] == 1
16740          ) {
16741        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
16742      } else {
16743        wrapper = (func.length == 1 && isLaziable(func))
16744          ? wrapper[funcName]()
16745          : wrapper.thru(func);
16746      }
16747    }
16748    return function() {
16749      var args = arguments,
16750          value = args[0];
16751
16752      if (wrapper && args.length == 1 && isArray(value)) {
16753        return wrapper.plant(value).value();
16754      }
16755      var index = 0,
16756          result = length ? funcs[index].apply(this, args) : value;
16757
16758      while (++index < length) {
16759        result = funcs[index].call(this, result);
16760      }
16761      return result;
16762    };
16763  });
16764}
16765
16766module.exports = createFlow;
16767
16768
16769/***/ }),
16770/* 294 */
16771/***/ (function(module, exports, __webpack_require__) {
16772
16773var flatten = __webpack_require__(295),
16774    overRest = __webpack_require__(298),
16775    setToString = __webpack_require__(300);
16776
16777/**
16778 * A specialized version of `baseRest` which flattens the rest array.
16779 *
16780 * @private
16781 * @param {Function} func The function to apply a rest parameter to.
16782 * @returns {Function} Returns the new function.
16783 */
16784function flatRest(func) {
16785  return setToString(overRest(func, undefined, flatten), func + '');
16786}
16787
16788module.exports = flatRest;
16789
16790
16791/***/ }),
16792/* 295 */
16793/***/ (function(module, exports, __webpack_require__) {
16794
16795var baseFlatten = __webpack_require__(296);
16796
16797/**
16798 * Flattens `array` a single level deep.
16799 *
16800 * @static
16801 * @memberOf _
16802 * @since 0.1.0
16803 * @category Array
16804 * @param {Array} array The array to flatten.
16805 * @returns {Array} Returns the new flattened array.
16806 * @example
16807 *
16808 * _.flatten([1, [2, [3, [4]], 5]]);
16809 * // => [1, 2, [3, [4]], 5]
16810 */
16811function flatten(array) {
16812  var length = array == null ? 0 : array.length;
16813  return length ? baseFlatten(array, 1) : [];
16814}
16815
16816module.exports = flatten;
16817
16818
16819/***/ }),
16820/* 296 */
16821/***/ (function(module, exports, __webpack_require__) {
16822
16823var arrayPush = __webpack_require__(47),
16824    isFlattenable = __webpack_require__(297);
16825
16826/**
16827 * The base implementation of `_.flatten` with support for restricting flattening.
16828 *
16829 * @private
16830 * @param {Array} array The array to flatten.
16831 * @param {number} depth The maximum recursion depth.
16832 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
16833 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
16834 * @param {Array} [result=[]] The initial result value.
16835 * @returns {Array} Returns the new flattened array.
vendor: 4,491 bytes, lines 16836-17007
16836 */
16837function baseFlatten(array, depth, predicate, isStrict, result) {
16838  var index = -1,
16839      length = array.length;
16840
16841  predicate || (predicate = isFlattenable);
16842  result || (result = []);
16843
16844  while (++index < length) {
16845    var value = array[index];
16846    if (depth > 0 && predicate(value)) {
16847      if (depth > 1) {
16848        // Recursively flatten arrays (susceptible to call stack limits).
16849        baseFlatten(value, depth - 1, predicate, isStrict, result);
16850      } else {
16851        arrayPush(result, value);
16852      }
16853    } else if (!isStrict) {
16854      result[result.length] = value;
16855    }
16856  }
16857  return result;
16858}
16859
16860module.exports = baseFlatten;
16861
16862
16863/***/ }),
16864/* 297 */
16865/***/ (function(module, exports, __webpack_require__) {
16866
16867var Symbol = __webpack_require__(20),
16868    isArguments = __webpack_require__(33),
16869    isArray = __webpack_require__(1);
16870
16871/** Built-in value references. */
16872var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
16873
16874/**
16875 * Checks if `value` is a flattenable `arguments` object or array.
16876 *
16877 * @private
16878 * @param {*} value The value to check.
16879 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
16880 */
16881function isFlattenable(value) {
16882  return isArray(value) || isArguments(value) ||
16883    !!(spreadableSymbol && value && value[spreadableSymbol]);
16884}
16885
16886module.exports = isFlattenable;
16887
16888
16889/***/ }),
16890/* 298 */
16891/***/ (function(module, exports, __webpack_require__) {
16892
16893var apply = __webpack_require__(299);
16894
16895/* Built-in method references for those with the same name as other `lodash` methods. */
16896var nativeMax = Math.max;
16897
16898/**
16899 * A specialized version of `baseRest` which transforms the rest array.
16900 *
16901 * @private
16902 * @param {Function} func The function to apply a rest parameter to.
16903 * @param {number} [start=func.length-1] The start position of the rest parameter.
16904 * @param {Function} transform The rest array transform.
16905 * @returns {Function} Returns the new function.
16906 */
16907function overRest(func, start, transform) {
16908  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
16909  return function() {
16910    var args = arguments,
16911        index = -1,
16912        length = nativeMax(args.length - start, 0),
16913        array = Array(length);
16914
16915    while (++index < length) {
16916      array[index] = args[start + index];
16917    }
16918    index = -1;
16919    var otherArgs = Array(start + 1);
16920    while (++index < start) {
16921      otherArgs[index] = args[index];
16922    }
16923    otherArgs[start] = transform(array);
16924    return apply(func, this, otherArgs);
16925  };
16926}
16927
16928module.exports = overRest;
16929
16930
16931/***/ }),
16932/* 299 */
16933/***/ (function(module, exports) {
16934
16935/**
16936 * A faster alternative to `Function#apply`, this function invokes `func`
16937 * with the `this` binding of `thisArg` and the arguments of `args`.
16938 *
16939 * @private
16940 * @param {Function} func The function to invoke.
16941 * @param {*} thisArg The `this` binding of `func`.
16942 * @param {Array} args The arguments to invoke `func` with.
16943 * @returns {*} Returns the result of `func`.
16944 */
16945function apply(func, thisArg, args) {
16946  switch (args.length) {
16947    case 0: return func.call(thisArg);
16948    case 1: return func.call(thisArg, args[0]);
16949    case 2: return func.call(thisArg, args[0], args[1]);
16950    case 3: return func.call(thisArg, args[0], args[1], args[2]);
16951  }
16952  return func.apply(thisArg, args);
16953}
16954
16955module.exports = apply;
16956
16957
16958/***/ }),
16959/* 300 */
16960/***/ (function(module, exports, __webpack_require__) {
16961
16962var baseSetToString = __webpack_require__(301),
16963    shortOut = __webpack_require__(303);
16964
16965/**
16966 * Sets the `toString` method of `func` to return `string`.
16967 *
16968 * @private
16969 * @param {Function} func The function to modify.
16970 * @param {Function} string The `toString` result.
16971 * @returns {Function} Returns `func`.
16972 */
16973var setToString = shortOut(baseSetToString);
16974
16975module.exports = setToString;
16976
16977
16978/***/ }),
16979/* 301 */
16980/***/ (function(module, exports, __webpack_require__) {
16981
16982var constant = __webpack_require__(302),
16983    defineProperty = __webpack_require__(116),
16984    identity = __webpack_require__(58);
16985
16986/**
16987 * The base implementation of `setToString` without support for hot loop shorting.
16988 *
16989 * @private
16990 * @param {Function} func The function to modify.
16991 * @param {Function} string The `toString` result.
16992 * @returns {Function} Returns `func`.
16993 */
16994var baseSetToString = !defineProperty ? identity : function(func, string) {
16995  return defineProperty(func, 'toString', {
16996    'configurable': true,
16997    'enumerable': false,
16998    'value': constant(string),
16999    'writable': true
17000  });
17001};
17002
17003module.exports = baseSetToString;
17004
17005
17006/***/ }),
17007/* 302 */
vendor: 7,233 bytes, lines 17008-17241
17008/***/ (function(module, exports) {
17009
17010/**
17011 * Creates a function that returns `value`.
17012 *
17013 * @static
17014 * @memberOf _
17015 * @since 2.4.0
17016 * @category Util
17017 * @param {*} value The value to return from the new function.
17018 * @returns {Function} Returns the new constant function.
17019 * @example
17020 *
17021 * var objects = _.times(2, _.constant({ 'a': 1 }));
17022 *
17023 * console.log(objects);
17024 * // => [{ 'a': 1 }, { 'a': 1 }]
17025 *
17026 * console.log(objects[0] === objects[1]);
17027 * // => true
17028 */
17029function constant(value) {
17030  return function() {
17031    return value;
17032  };
17033}
17034
17035module.exports = constant;
17036
17037
17038/***/ }),
17039/* 303 */
17040/***/ (function(module, exports) {
17041
17042/** Used to detect hot functions by number of calls within a span of milliseconds. */
17043var HOT_COUNT = 800,
17044    HOT_SPAN = 16;
17045
17046/* Built-in method references for those with the same name as other `lodash` methods. */
17047var nativeNow = Date.now;
17048
17049/**
17050 * Creates a function that'll short out and invoke `identity` instead
17051 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
17052 * milliseconds.
17053 *
17054 * @private
17055 * @param {Function} func The function to restrict.
17056 * @returns {Function} Returns the new shortable function.
17057 */
17058function shortOut(func) {
17059  var count = 0,
17060      lastCalled = 0;
17061
17062  return function() {
17063    var stamp = nativeNow(),
17064        remaining = HOT_SPAN - (stamp - lastCalled);
17065
17066    lastCalled = stamp;
17067    if (remaining > 0) {
17068      if (++count >= HOT_COUNT) {
17069        return arguments[0];
17070      }
17071    } else {
17072      count = 0;
17073    }
17074    return func.apply(undefined, arguments);
17075  };
17076}
17077
17078module.exports = shortOut;
17079
17080
17081/***/ }),
17082/* 304 */
17083/***/ (function(module, exports, __webpack_require__) {
17084
17085var WeakMap = __webpack_require__(99);
17086
17087/** Used to store function metadata. */
17088var metaMap = WeakMap && new WeakMap;
17089
17090module.exports = metaMap;
17091
17092
17093/***/ }),
17094/* 305 */
17095/***/ (function(module, exports) {
17096
17097/**
17098 * This method returns `undefined`.
17099 *
17100 * @static
17101 * @memberOf _
17102 * @since 2.3.0
17103 * @category Util
17104 * @example
17105 *
17106 * _.times(2, _.noop);
17107 * // => [undefined, undefined]
17108 */
17109function noop() {
17110  // No operation performed.
17111}
17112
17113module.exports = noop;
17114
17115
17116/***/ }),
17117/* 306 */
17118/***/ (function(module, exports) {
17119
17120/** Used to lookup unminified function names. */
17121var realNames = {};
17122
17123module.exports = realNames;
17124
17125
17126/***/ }),
17127/* 307 */
17128/***/ (function(module, exports, __webpack_require__) {
17129
17130var LazyWrapper = __webpack_require__(63),
17131    getData = __webpack_require__(118),
17132    getFuncName = __webpack_require__(119),
17133    lodash = __webpack_require__(308);
17134
17135/**
17136 * Checks if `func` has a lazy counterpart.
17137 *
17138 * @private
17139 * @param {Function} func The function to check.
17140 * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
17141 *  else `false`.
17142 */
17143function isLaziable(func) {
17144  var funcName = getFuncName(func),
17145      other = lodash[funcName];
17146
17147  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
17148    return false;
17149  }
17150  if (func === other) {
17151    return true;
17152  }
17153  var data = getData(other);
17154  return !!data && func === data[0];
17155}
17156
17157module.exports = isLaziable;
17158
17159
17160/***/ }),
17161/* 308 */
17162/***/ (function(module, exports, __webpack_require__) {
17163
17164var LazyWrapper = __webpack_require__(63),
17165    LodashWrapper = __webpack_require__(61),
17166    baseLodash = __webpack_require__(62),
17167    isArray = __webpack_require__(1),
17168    isObjectLike = __webpack_require__(9),
17169    wrapperClone = __webpack_require__(309);
17170
17171/** Used for built-in method references. */
17172var objectProto = Object.prototype;
17173
17174/** Used to check objects for own properties. */
17175var hasOwnProperty = objectProto.hasOwnProperty;
17176
17177/**
17178 * Creates a `lodash` object which wraps `value` to enable implicit method
17179 * chain sequences. Methods that operate on and return arrays, collections,
17180 * and functions can be chained together. Methods that retrieve a single value
17181 * or may return a primitive value will automatically end the chain sequence
17182 * and return the unwrapped value. Otherwise, the value must be unwrapped
17183 * with `_#value`.
17184 *
17185 * Explicit chain sequences, which must be unwrapped with `_#value`, may be
17186 * enabled using `_.chain`.
17187 *
17188 * The execution of chained methods is lazy, that is, it's deferred until
17189 * `_#value` is implicitly or explicitly called.
17190 *
17191 * Lazy evaluation allows several methods to support shortcut fusion.
17192 * Shortcut fusion is an optimization to merge iteratee calls; this avoids
17193 * the creation of intermediate arrays and can greatly reduce the number of
17194 * iteratee executions. Sections of a chain sequence qualify for shortcut
17195 * fusion if the section is applied to an array and iteratees accept only
17196 * one argument. The heuristic for whether a section qualifies for shortcut
17197 * fusion is subject to change.
17198 *
17199 * Chaining is supported in custom builds as long as the `_#value` method is
17200 * directly or indirectly included in the build.
17201 *
17202 * In addition to lodash methods, wrappers have `Array` and `String` methods.
17203 *
17204 * The wrapper `Array` methods are:
17205 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
17206 *
17207 * The wrapper `String` methods are:
17208 * `replace` and `split`
17209 *
17210 * The wrapper methods that support shortcut fusion are:
17211 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
17212 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
17213 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
17214 *
17215 * The chainable wrapper methods are:
17216 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
17217 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
17218 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
17219 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
17220 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
17221 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
17222 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
17223 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
17224 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
17225 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
17226 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
17227 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
17228 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
17229 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
17230 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
17231 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
17232 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
17233 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
17234 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
17235 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
17236 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
17237 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
17238 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
17239 * `zipObject`, `zipObjectDeep`, and `zipWith`
17240 *
17241 * The wrapper methods that are **not** chainable by default are:
17242 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
17243 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
17244 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
17245 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
17246 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
17247 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
17248 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
17249 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
17250 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
17251 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
17252 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
17253 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
17254 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
17255 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
17256 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
17257 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
17258 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
17259 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
17260 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
17261 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
17262 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
17263 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
17264 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
17265 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
17266 * `upperFirst`, `value`, and `words`
17267 *
17268 * @name _
17269 * @constructor
17270 * @category Seq
17271 * @param {*} value The value to wrap in a `lodash` instance.
17272 * @returns {Object} Returns the new `lodash` wrapper instance.
17273 * @example
17274 *
17275 * function square(n) {
17276 *   return n * n;
17277 * }
17278 *
17279 * var wrapped = _([1, 2, 3]);
17280 *
17281 * // Returns an unwrapped value.
17282 * wrapped.reduce(_.add);
17283 * // => 6
17284 *
17285 * // Returns a wrapped value.
17286 * var squares = wrapped.map(square);
17287 *
17288 * _.isArray(squares);
17289 * // => false
17290 *
17291 * _.isArray(squares.value());
17292 * // => true
17293 */
17294function lodash(value) {
17295  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
17296    if (value instanceof LodashWrapper) {
17297      return value;
17298    }
17299    if (hasOwnProperty.call(value, '__wrapped__')) {
17300      return wrapperClone(value);
17301    }
17302  }
17303  return new LodashWrapper(value);
17304}
17305
17306// Ensure wrappers are instances of `baseLodash`.
17307lodash.prototype = baseLodash.prototype;
17308lodash.prototype.constructor = lodash;
17309
17310module.exports = lodash;
17311
17312
17313/***/ }),
17314/* 309 */
17315/***/ (function(module, exports, __webpack_require__) {
17316
17317var LazyWrapper = __webpack_require__(63),
17318    LodashWrapper = __webpack_require__(61),
17319    copyArray = __webpack_require__(310);
17320
17321/**
17322 * Creates a clone of `wrapper`.
17323 *
17324 * @private
17325 * @param {Object} wrapper The wrapper to clone.
17326 * @returns {Object} Returns the cloned wrapper.
17327 */
17328function wrapperClone(wrapper) {
17329  if (wrapper instanceof LazyWrapper) {
17330    return wrapper.clone();
17331  }
17332  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
17333  result.__actions__ = copyArray(wrapper.__actions__);
17334  result.__index__  = wrapper.__index__;
17335  result.__values__ = wrapper.__values__;
17336  return result;
17337}
17338
17339module.exports = wrapperClone;
17340
17341
17342/***/ }),
17343/* 310 */
17344/***/ (function(module, exports) {
17345
17346/**
17347 * Copies the values of `source` to `array`.
17348 *
17349 * @private
17350 * @param {Array} source The array to copy values from.
17351 * @param {Array} [array=[]] The array to copy values to.
17352 * @returns {Array} Returns `array`.
17353 */
17354function copyArray(source, array) {
17355  var index = -1,
17356      length = source.length;
17357
17358  array || (array = Array(length));
17359  while (++index < length) {
17360    array[index] = source[index];
17361  }
17362  return array;
17363}
17364
17365module.exports = copyArray;
17366
17367
17368/***/ }),
17369/* 311 */
17370/***/ (function(module, exports, __webpack_require__) {
17371
17372var baseClamp = __webpack_require__(312),
17373    toNumber = __webpack_require__(59);
17374
17375/**
17376 * Clamps `number` within the inclusive `lower` and `upper` bounds.
17377 *
17378 * @static
17379 * @memberOf _
17380 * @since 4.0.0
17381 * @category Number
17382 * @param {number} number The number to clamp.
17383 * @param {number} [lower] The lower bound.
17384 * @param {number} upper The upper bound.
17385 * @returns {number} Returns the clamped number.
17386 * @example
17387 *
17388 * _.clamp(-10, -5, 5);
17389 * // => -5
17390 *
17391 * _.clamp(10, -5, 5);
17392 * // => 5
17393 */
17394function clamp(number, lower, upper) {
17395  if (upper === undefined) {
17396    upper = lower;
17397    lower = undefined;
17398  }
17399  if (upper !== undefined) {
17400    upper = toNumber(upper);
17401    upper = upper === upper ? upper : 0;
17402  }
17403  if (lower !== undefined) {
17404    lower = toNumber(lower);
17405    lower = lower === lower ? lower : 0;
17406  }
17407  return baseClamp(toNumber(number), lower, upper);
17408}
17409
17410module.exports = clamp;
17411
17412
17413/***/ }),
17414/* 312 */
17415/***/ (function(module, exports) {
17416
17417/**
17418 * The base implementation of `_.clamp` which doesn't coerce arguments.
17419 *
17420 * @private
17421 * @param {number} number The number to clamp.
17422 * @param {number} [lower] The lower bound.
17423 * @param {number} upper The upper bound.
17424 * @returns {number} Returns the clamped number.
17425 */
17426function baseClamp(number, lower, upper) {
17427  if (number === number) {
17428    if (upper !== undefined) {
17429      number = number <= upper ? number : upper;
17430    }
17431    if (lower !== undefined) {
17432      number = number >= lower ? number : lower;
17433    }
17434  }
17435  return number;
17436}
17437
17438module.exports = baseClamp;
17439
17440
17441/***/ }),
17442/* 313 */
17443/***/ (function(module, exports, __webpack_require__) {
17444
17445"use strict";
17446 // @wf-will-never-add-flow-to-this-file
17447
17448/* globals window, document */
17449
17450/* eslint-disable no-var */
17451
17452/**
17453 * Webflow: Auto-select links to current page or section
17454 */
17455
17456var Webflow = __webpack_require__(6);
17457
17458Webflow.define('links', module.exports = function ($, _) {
17459  var api = {};
17460  var $win = $(window);
17461  var designer;
17462  var inApp = Webflow.env();
17463  var location = window.location;
17464  var tempLink = document.createElement('a');
17465  var linkCurrent = 'w--current';
17466  var indexPage = /index\.(html|php)$/;
17467  var dirList = /\/$/;
17468  var anchors;
17469  var slug; // -----------------------------------
17470  // Module methods
17471
17472  api.ready = api.design = api.preview = init; // -----------------------------------
17473  // Private methods
17474
17475  function init() {
17476    designer = inApp && Webflow.env('design');
17477    slug = Webflow.env('slug') || location.pathname || ''; // Reset scroll listener, init anchors
17478
17479    Webflow.scroll.off(scroll);
17480    anchors = []; // Test all links for a selectable href
17481
17482    var links = document.links;
17483
17484    for (var i = 0; i < links.length; ++i) {
17485      select(links[i]);
17486    } // Listen for scroll if any anchors exist
17487
17488
17489    if (anchors.length) {
17490      Webflow.scroll.on(scroll);
17491      scroll();
17492    }
17493  }
17494
17495  function select(link) {
17496    var href = designer && link.getAttribute('href-disabled') || link.getAttribute('href');
17497    tempLink.href = href; // Ignore any hrefs with a colon to safely avoid all uri schemes
17498
17499    if (href.indexOf(':') >= 0) {
17500      return;
17501    }
17502
17503    var $link = $(link); // Check for all links with hash (eg (this-host)(/this-path)#section) to this page
17504
17505    if (tempLink.hash.length > 1 && tempLink.host + tempLink.pathname === location.host + location.pathname) {
17506      // Ignore any hrefs with Google Translate type hash
17507      // Example: jQuery can't parse $('#googtrans(en|es)')
17508      // https://forum.webflow.com/t/dropdown-menus-not-working-on-site/87140
17509      if (!/^#[a-zA-Z0-9\-\_]+$/.test(tempLink.hash)) {
17510        return;
17511      }
17512
17513      var $section = $(tempLink.hash);
17514      $section.length && anchors.push({
17515        link: $link,
17516        sec: $section,
17517        active: false
17518      });
17519      return;
17520    } // Ignore empty # links
17521
17522
17523    if (href === '#' || href === '') {
17524      return;
17525    } // Determine whether the link should be selected
17526
17527
17528    var match = tempLink.href === location.href || href === slug || indexPage.test(href) && dirList.test(slug);
17529    setClass($link, linkCurrent, match);
17530  }
17531
17532  function scroll() {
17533    var viewTop = $win.scrollTop();
17534    var viewHeight = $win.height(); // Check each anchor for a section in view
17535
17536    _.each(anchors, function (anchor) {
17537      var $link = anchor.link;
17538      var $section = anchor.sec;
17539      var top = $section.offset().top;
17540      var height = $section.outerHeight();
17541      var offset = viewHeight * 0.5;
17542      var active = $section.is(':visible') && top + height - offset >= viewTop && top + offset <= viewTop + viewHeight;
17543
17544      if (anchor.active === active) {
17545        return;
17546      }
17547
17548      anchor.active = active;
17549      setClass($link, linkCurrent, active);
17550    });
17551  }
17552
17553  function setClass($elem, className, add) {
17554    var exists = $elem.hasClass(className);
17555
17556    if (add && exists) {
17557      return;
17558    }
17559
17560    if (!add && !exists) {
17561      return;
17562    }
17563
17564    add ? $elem.addClass(className) : $elem.removeClass(className);
17565  } // Export module
17566
17567
17568  return api;
17569});
17570
17571/***/ }),
17572/* 314 */
17573/***/ (function(module, exports, __webpack_require__) {
17574
17575"use strict";
17576 // @wf-will-never-add-flow-to-this-file
17577
17578/* globals window, document */
17579
17580/* eslint-disable no-var */
17581
17582/**
17583 * Webflow: Smooth scroll
17584 */
17585
17586var Webflow = __webpack_require__(6);
17587
17588Webflow.define('scroll', module.exports = function ($) {
17589  // Native browser events & namespaces used in this module
17590  var CLICK = 'click';
17591  var CHANGE = 'change';
17592  var CHANGE_NS = '.wf-change';
17593  var EMPTY_LINK_NS = '.wf-empty-link';
17594  var SCROLL_NS = '.wf-scroll';
17595  /**
17596   * A collection of namespaced events found in this module.
17597   * Namespaced events encapsulate our code, and make it safer and easier
17598   * for designers to apply custom code overrides.
17599   * @see https://api.jquery.com/on/#event-names
17600   * @typedef {Object.<string>} NamespacedEventsCollection
17601   */
17602
17603  var NS_EVENTS = {
17604    WF_CHANGE: CHANGE + CHANGE_NS,
17605    WF_CLICK_EMPTY: CLICK + EMPTY_LINK_NS,
17606    WF_CLICK_SCROLL: CLICK + SCROLL_NS
17607  };
17608  var $doc = $(document);
17609  var win = window;
17610  var loc = win.location;
17611  var history = inIframe() ? null : win.history;
17612  var validHash = /^[a-zA-Z0-9][\w:.-]*$/;
17613  var emptyHrefSelector = 'a[href="#"]';
17614  /**
17615   * Select only links whose href:
17616   * - contains a #
17617   * - is not one of our namespaced TabLink elements
17618   * - is not _only_ a #
17619   */
17620
17621  var localHrefSelector = 'a[href*="#"]:not(.w-tab-link):not(' + emptyHrefSelector + ')';
17622  /**
17623   * The current page url, minus the hash.
17624   * Will be set in the `ready` function
17625   */
17626
17627  var locHref;
17628
17629  function inIframe() {
17630    try {
17631      return Boolean(win.frameElement);
17632    } catch (e) {
17633      return true;
17634    }
17635  }
17636  /**
17637   * Determine if we should execute custom scroll
17638   */
17639
17640
17641  function validateScroll(e) {
17642    if (Webflow.env('design')) {
17643      return;
17644    } // Ignore links being used by jQuery mobile
17645
17646
17647    if (window.$.mobile && $(e.currentTarget).hasClass('ui-link')) {
17648      return;
17649    } // The href property always contains the full url so we can compare
17650    // with the document’s location to only target links on this page.
17651
17652
17653    var parts = this.href.split('#');
17654    var hash = parts[0] === locHref ? parts[1] : null;
17655
17656    if (hash) {
17657      findEl(hash, e);
17658    }
17659  }
17660
17661  function findEl(hash, e) {
17662    if (!validHash.test(hash)) {
17663      return;
17664    }
17665
17666    var el = $('#' + hash);
17667
17668    if (!el.length) {
17669      return;
17670    }
17671
17672    if (e) {
17673      e.preventDefault();
17674      e.stopPropagation();
17675    } // Push new history state
17676
17677
17678    if (loc.hash !== hash && history && history.pushState && // Navigation breaks Chrome when the protocol is `file:`.
17679    !(Webflow.env.chrome && loc.protocol === 'file:')) {
17680      var oldHash = history.state && history.state.hash;
17681
17682      if (oldHash !== hash) {
17683        history.pushState({
17684          hash: hash
17685        }, '', '#' + hash);
17686      }
17687    } // If a fixed header exists, offset for the height
17688
17689
17690    var rootTag = Webflow.env('editor') ? '.w-editor-body' : 'body';
17691    var header = $('header, ' + rootTag + ' > .header, ' + rootTag + ' > .w-nav:not([data-no-scroll])');
17692    var offset = header.css('position') === 'fixed' ? header.outerHeight() : 0;
17693    win.setTimeout(function () {
17694      scroll(el, offset);
17695    }, e ? 0 : 300);
17696  }
17697
17698  function scroll(el, offset) {
17699    var start = $(win).scrollTop();
17700    var end = el.offset().top - offset; // If specified, scroll so that the element ends up in the middle of the viewport
17701
17702    if (el.data('scroll') === 'mid') {
17703      var available = $(win).height() - offset;
17704      var elHeight = el.outerHeight();
17705
17706      if (elHeight < available) {
17707        end -= Math.round((available - elHeight) / 2);
17708      }
17709    }
17710
17711    var mult = 1; // Check for custom time multiplier on the body and the element
17712
17713    $('body').add(el).each(function () {
17714      var time = parseFloat($(this).attr('data-scroll-time'), 10);
17715
17716      if (!isNaN(time) && (time === 0 || time > 0)) {
17717        mult = time;
17718      }
17719    }); // Shim for IE8 and below
17720
17721    if (!Date.now) {
17722      Date.now = function () {
17723        return new Date().getTime();
17724      };
17725    }
17726
17727    var clock = Date.now();
17728
17729    var animate = win.requestAnimationFrame || win.mozRequestAnimationFrame || win.webkitRequestAnimationFrame || function (fn) {
17730      win.setTimeout(fn, 15);
17731    };
17732
17733    var duration = (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult;
17734
17735    var step = function step() {
17736      var elapsed = Date.now() - clock;
17737      win.scroll(0, getY(start, end, elapsed, duration));
17738
17739      if (elapsed <= duration) {
17740        animate(step);
17741      }
17742    };
17743
17744    step();
17745  }
17746
17747  function getY(start, end, elapsed, duration) {
17748    if (elapsed > duration) {
17749      return end;
17750    }
17751
17752    return start + (end - start) * ease(elapsed / duration);
17753  }
17754
17755  function ease(t) {
17756    return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
17757  }
17758
17759  function handleReducedMotionChange(evt) {
17760    var WF_CLICK_SCROLL = NS_EVENTS.WF_CLICK_SCROLL;
17761
17762    if (evt.target.matches) {
17763      $doc.off(WF_CLICK_SCROLL);
17764    } else {
17765      $doc.on(WF_CLICK_SCROLL, localHrefSelector, validateScroll);
17766    }
17767  }
17768
17769  function ready() {
17770    var WF_CHANGE = NS_EVENTS.WF_CHANGE,
17771        WF_CLICK_EMPTY = NS_EVENTS.WF_CLICK_EMPTY,
17772        WF_CLICK_SCROLL = NS_EVENTS.WF_CLICK_SCROLL;
17773    locHref = loc.href.split('#')[0];
17774    var reducedMotionQ = window.matchMedia('(prefers-reduced-motion: reduce)');
17775
17776    if (!reducedMotionQ.matches) {
17777      $doc.on(WF_CLICK_SCROLL, localHrefSelector, validateScroll);
17778    }
17779
17780    $(reducedMotionQ).on(WF_CHANGE, handleReducedMotionChange);
17781    /**
17782     * Prevent empty hash links from triggering scroll.
17783     * Legacy feature to preserve: use the default "#" link
17784     * to trigger an interaction, and do not want the page
17785     * to scroll to the top.
17786     */
17787
17788    $doc.on(WF_CLICK_EMPTY, emptyHrefSelector, function (e) {
17789      e.preventDefault();
17790    });
17791  } // Export module
17792
17793
17794  return {
17795    ready: ready
17796  };
17797});
17798
17799/***/ }),
17800/* 315 */
17801/***/ (function(module, exports, __webpack_require__) {
17802
17803"use strict";
17804 // @wf-will-never-add-flow-to-this-file
17805
17806/* globals document, window */
17807
17808/* eslint-disable no-var */
17809
17810/**
17811 * Webflow: Touch events
17812 * Supports legacy 'tap' event
17813 * Adds a 'swipe' event to desktop and mobile
17814 */
17815
17816var Webflow = __webpack_require__(6);
17817
17818Webflow.define('touch', module.exports = function ($) {
17819  var api = {};
17820  var getSelection = window.getSelection; // Delegate all legacy 'tap' events to 'click'
17821
17822  $.event.special.tap = {
17823    bindType: 'click',
17824    delegateType: 'click'
17825  };
17826
17827  api.init = function (el) {
17828    el = typeof el === 'string' ? $(el).get(0) : el;
17829    return el ? new Touch(el) : null;
17830  };
17831
17832  function Touch(el) {
17833    var active = false;
17834    var useTouch = false;
17835    var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40);
17836    var startX;
17837    var lastX;
17838    el.addEventListener('touchstart', start, false);
17839    el.addEventListener('touchmove', move, false);
17840    el.addEventListener('touchend', end, false);
17841    el.addEventListener('touchcancel', cancel, false);
17842    el.addEventListener('mousedown', start, false);
17843    el.addEventListener('mousemove', move, false);
17844    el.addEventListener('mouseup', end, false);
17845    el.addEventListener('mouseout', cancel, false);
17846
17847    function start(evt) {
17848      // We don’t handle multi-touch events yet.
17849      var touches = evt.touches;
17850
17851      if (touches && touches.length > 1) {
17852        return;
17853      }
17854
17855      active = true;
17856
17857      if (touches) {
17858        useTouch = true;
17859        startX = touches[0].clientX;
17860      } else {
17861        startX = evt.clientX;
17862      }
17863
17864      lastX = startX;
17865    }
17866
17867    function move(evt) {
17868      if (!active) {
17869        return;
17870      }
17871
17872      if (useTouch && evt.type === 'mousemove') {
17873        evt.preventDefault();
17874        evt.stopPropagation();
17875        return;
17876      }
17877
17878      var touches = evt.touches;
17879      var x = touches ? touches[0].clientX : evt.clientX;
17880      var velocityX = x - lastX;
17881      lastX = x; // Allow swipes while pointer is down, but prevent them during text selection
17882
17883      if (Math.abs(velocityX) > thresholdX && getSelection && String(getSelection()) === '') {
17884        triggerEvent('swipe', evt, {
17885          direction: velocityX > 0 ? 'right' : 'left'
17886        });
17887        cancel();
17888      }
17889    }
17890
17891    function end(evt) {
17892      if (!active) {
17893        return;
17894      }
17895
17896      active = false;
17897
17898      if (useTouch && evt.type === 'mouseup') {
17899        evt.preventDefault();
17900        evt.stopPropagation();
17901        useTouch = false;
17902        return;
17903      }
17904    }
17905
17906    function cancel() {
17907      active = false;
17908    }
17909
17910    function destroy() {
17911      el.removeEventListener('touchstart', start, false);
17912      el.removeEventListener('touchmove', move, false);
17913      el.removeEventListener('touchend', end, false);
17914      el.removeEventListener('touchcancel', cancel, false);
17915      el.removeEventListener('mousedown', start, false);
17916      el.removeEventListener('mousemove', move, false);
17917      el.removeEventListener('mouseup', end, false);
17918      el.removeEventListener('mouseout', cancel, false);
17919      el = null;
17920    } // Public instance methods
17921
17922
17923    this.destroy = destroy;
17924  } // Wrap native event to supoprt preventdefault + stopPropagation
17925
17926
17927  function triggerEvent(type, evt, data) {
17928    var newEvent = $.Event(type, {
17929      originalEvent: evt
17930    });
17931    $(evt.target).trigger(newEvent, data);
17932  } // Listen for touch events on all nodes by default.
17933
17934
17935  api.instance = api.init(document); // Export module
17936
17937  return api;
17938});
17939
17940/***/ }),
17941/* 316 */
17942/***/ (function(module, exports, __webpack_require__) {
17943
17944"use strict";
17945 // @wf-will-never-add-flow-to-this-file
17946
17947/* globals
17948  window,
17949  document,
17950  FormData,
17951  WEBFLOW_FORM_API_HOST,
17952  WEBFLOW_FORM_OLDIE_HOST
17953*/
17954
17955/* eslint-disable no-var */
17956
17957/**
17958 * Webflow: Forms
17959 */
17960
17961var _interopRequireDefault = __webpack_require__(0);
17962
17963var _slicedToArray2 = _interopRequireDefault(__webpack_require__(317));
17964
17965var Webflow = __webpack_require__(6);
17966
17967Webflow.define('forms', module.exports = function ($, _) {
17968  var api = {};
17969  var $doc = $(document);
17970  var $forms;
17971  var loc = window.location;
17972  var retro = window.XDomainRequest && !window.atob;
17973  var namespace = '.w-form';
17974  var siteId;
17975  var emailField = /e(-)?mail/i;
17976  var emailValue = /^\S+@\S+$/;
17977  var alert = window.alert;
17978  var inApp = Webflow.env();
17979  var listening;
17980  var formUrl;
17981  var signFileUrl; // MailChimp domains: list-manage.com + mirrors
17982
17983  var chimpRegex = /list-manage[1-9]?.com/i;
17984
17985  var disconnected = _.debounce(function () {
17986    alert('Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.');
17987  }, 100);
17988
17989  api.ready = api.design = api.preview = function () {
17990    // Init forms
17991    init(); // Wire document events on published site only once
17992
17993    if (!inApp && !listening) {
17994      addListeners();
17995    }
17996  };
17997
17998  function init() {
17999    siteId = $('html').attr('data-wf-site');
18000    formUrl = "https://webflow.com" + '/api/v1/form/' + siteId; // Work around same-protocol IE XDR limitation - without this IE9 and below forms won't submit
18001
18002    if (retro && formUrl.indexOf("https://webflow.com") >= 0) {
18003      formUrl = formUrl.replace("https://webflow.com", "http://formdata.webflow.com");
18004    }
18005
18006    signFileUrl = "".concat(formUrl, "/signFile");
18007    $forms = $(namespace + ' form');
18008
18009    if (!$forms.length) {
18010      return;
18011    }
18012
18013    $forms.each(build);
18014  }
18015
18016  function build(i, el) {
18017    // Store form state using namespace
18018    var $el = $(el);
18019    var data = $.data(el, namespace);
18020
18021    if (!data) {
18022      data = $.data(el, namespace, {
18023        form: $el
18024      });
18025    } // data.form
18026
18027
18028    reset(data);
18029    var wrap = $el.closest('div.w-form');
18030    data.done = wrap.find('> .w-form-done');
18031    data.fail = wrap.find('> .w-form-fail');
18032    data.fileUploads = wrap.find('.w-file-upload');
18033    data.fileUploads.each(function (j) {
18034      initFileUpload(j, data);
18035    });
18036    var action = data.action = $el.attr('action');
18037    data.handler = null;
18038    data.redirect = $el.attr('data-redirect'); // MailChimp form
18039
18040    if (chimpRegex.test(action)) {
18041      data.handler = submitMailChimp;
18042      return;
18043    } // Custom form action
18044
18045
18046    if (action) {
18047      return;
18048    } // Webflow forms for hosting accounts
18049
18050
18051    if (siteId) {
18052      data.handler = typeof hostedSubmitWebflow === 'function' ? hostedSubmitWebflow : exportedSubmitWebflow;
18053      return;
18054    } // Alert for disconnected Webflow forms
18055
18056
18057    disconnected();
18058  }
18059
18060  function addListeners() {
18061    listening = true; // Handle form submission for Webflow forms
18062
18063    $doc.on('submit', namespace + ' form', function (evt) {
18064      var data = $.data(this, namespace);
18065
18066      if (data.handler) {
18067        data.evt = evt;
18068        data.handler(data);
18069      }
18070    }); // handle checked ui for custom checkbox and radio button
18071
18072    var CHECKBOX_CLASS_NAME = '.w-checkbox-input';
18073    var RADIO_INPUT_CLASS_NAME = '.w-radio-input';
18074    var CHECKED_CLASS = 'w--redirected-checked';
18075    var FOCUSED_CLASS = 'w--redirected-focus';
18076    var CUSTOM_CONTROLS = [['checkbox', CHECKBOX_CLASS_NAME], ['radio', RADIO_INPUT_CLASS_NAME]];
18077    $doc.on('change', namespace + " form input[type=\"checkbox\"]:not(" + CHECKBOX_CLASS_NAME + ')', function (evt) {
18078      $(evt.target).siblings(CHECKBOX_CLASS_NAME).toggleClass(CHECKED_CLASS);
18079    });
18080    $doc.on('change', namespace + " form input[type=\"radio\"]", function (evt) {
18081      $("input[name=\"".concat(evt.target.name, "\"]:not(").concat(CHECKBOX_CLASS_NAME, ")")).map(function (i, el) {
18082        return $(el).siblings(RADIO_INPUT_CLASS_NAME).removeClass(CHECKED_CLASS);
18083      });
18084      var $target = $(evt.target);
18085
18086      if (!$target.hasClass('w-radio-input')) {
18087        $target.siblings(RADIO_INPUT_CLASS_NAME).addClass(CHECKED_CLASS);
18088      }
18089    });
18090    CUSTOM_CONTROLS.forEach(function (_ref) {
18091      var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
18092          controlType = _ref2[0],
18093          customControlClassName = _ref2[1];
18094
18095      $doc.on('focus', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
18096        $(evt.target).siblings(customControlClassName).addClass(FOCUSED_CLASS);
18097      });
18098      $doc.on('blur', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
18099        $(evt.target).siblings(customControlClassName).removeClass(FOCUSED_CLASS);
18100      });
18101    });
18102  } // Reset data common to all submit handlers
18103
18104
18105  function reset(data) {
18106    var btn = data.btn = data.form.find(':input[type="submit"]');
18107    data.wait = data.btn.attr('data-wait') || null;
18108    data.success = false;
18109    btn.prop('disabled', false);
18110    data.label && btn.val(data.label);
18111  } // Disable submit button
18112
18113
18114  function disableBtn(data) {
18115    var btn = data.btn;
18116    var wait = data.wait;
18117    btn.prop('disabled', true); // Show wait text and store previous label
18118
18119    if (wait) {
18120      data.label = btn.val();
18121      btn.val(wait);
18122    }
18123  } // Find form fields, validate, and set value pairs
18124
18125
18126  function findFields(form, result) {
18127    var status = null;
18128    result = result || {}; // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas
18129
18130    form.find(':input:not([type="submit"]):not([type="file"])').each(function (i, el) {
18131      var field = $(el);
18132      var type = field.attr('type');
18133      var name = field.attr('data-name') || field.attr('name') || 'Field ' + (i + 1);
18134      var value = field.val();
18135
18136      if (type === 'checkbox') {
18137        value = field.is(':checked');
18138      } else if (type === 'radio') {
18139        // Radio group value already processed
18140        if (result[name] === null || typeof result[name] === 'string') {
18141          return;
18142        }
18143
18144        value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null;
18145      }
18146
18147      if (typeof value === 'string') {
18148        value = $.trim(value);
18149      }
18150
18151      result[name] = value;
18152      status = status || getStatus(field, type, name, value);
18153    });
18154    return status;
18155  }
18156
18157  function findFileUploads(form) {
18158    var result = {};
18159    form.find(':input[type="file"]').each(function (i, el) {
18160      var field = $(el);
18161      var name = field.attr('data-name') || field.attr('name') || 'File ' + (i + 1);
18162      var value = field.attr('data-value');
18163
18164      if (typeof value === 'string') {
18165        value = $.trim(value);
18166      }
18167
18168      result[name] = value;
18169    });
18170    return result;
18171  }
18172
18173  function getStatus(field, type, name, value) {
18174    var status = null;
18175
18176    if (type === 'password') {
18177      status = 'Passwords cannot be submitted.';
18178    } else if (field.attr('required')) {
18179      if (!value) {
18180        status = 'Please fill out the required field: ' + name;
18181      } else if (emailField.test(field.attr('type'))) {
18182        if (!emailValue.test(value)) {
18183          status = 'Please enter a valid email address for: ' + name;
18184        }
18185      }
18186    } else if (name === 'g-recaptcha-response' && !value) {
18187      status = 'Please confirm you’re not a robot.';
18188    }
18189
18190    return status;
18191  }
18192
18193  function exportedSubmitWebflow(data) {
18194    preventDefault(data);
18195    afterSubmit(data);
18196  } // Submit form to MailChimp
18197
18198
18199  function submitMailChimp(data) {
18200    reset(data);
18201    var form = data.form;
18202    var payload = {}; // Skip Ajax submission if http/s mismatch, fallback to POST instead
18203
18204    if (/^https/.test(loc.href) && !/^https/.test(data.action)) {
18205      form.attr('method', 'post');
18206      return;
18207    }
18208
18209    preventDefault(data); // Find & populate all fields
18210
18211    var status = findFields(form, payload);
18212
18213    if (status) {
18214      return alert(status);
18215    } // Disable submit button
18216
18217
18218    disableBtn(data); // Use special format for MailChimp params
18219
18220    var fullName;
18221
18222    _.each(payload, function (value, key) {
18223      if (emailField.test(key)) {
18224        payload.EMAIL = value;
18225      }
18226
18227      if (/^((full[ _-]?)?name)$/i.test(key)) {
18228        fullName = value;
18229      }
18230
18231      if (/^(first[ _-]?name)$/i.test(key)) {
18232        payload.FNAME = value;
18233      }
18234
18235      if (/^(last[ _-]?name)$/i.test(key)) {
18236        payload.LNAME = value;
18237      }
18238    });
18239
18240    if (fullName && !payload.FNAME) {
18241      fullName = fullName.split(' ');
18242      payload.FNAME = fullName[0];
18243      payload.LNAME = payload.LNAME || fullName[1];
18244    } // Use the (undocumented) MailChimp jsonp api
18245
18246
18247    var url = data.action.replace('/post?', '/post-json?') + '&c=?'; // Add special param to prevent bot signups
18248
18249    var userId = url.indexOf('u=') + 2;
18250    userId = url.substring(userId, url.indexOf('&', userId));
18251    var listId = url.indexOf('id=') + 3;
18252    listId = url.substring(listId, url.indexOf('&', listId));
18253    payload['b_' + userId + '_' + listId] = '';
18254    $.ajax({
18255      url: url,
18256      data: payload,
18257      dataType: 'jsonp'
18258    }).done(function (resp) {
18259      data.success = resp.result === 'success' || /already/.test(resp.msg);
18260
18261      if (!data.success) {
18262        console.info('MailChimp error: ' + resp.msg);
18263      }
18264
18265      afterSubmit(data);
18266    }).fail(function () {
18267      afterSubmit(data);
18268    });
18269  } // Common callback which runs after all Ajax submissions
18270
18271
18272  function afterSubmit(data) {
18273    var form = data.form;
18274    var redirect = data.redirect;
18275    var success = data.success; // Redirect to a success url if defined
18276
18277    if (success && redirect) {
18278      Webflow.location(redirect);
18279      return;
18280    } // Show or hide status divs
18281
18282
18283    data.done.toggle(success);
18284    data.fail.toggle(!success); // Hide form on success
18285
18286    form.toggle(!success); // Reset data and enable submit button
18287
18288    reset(data);
18289  }
18290
18291  function preventDefault(data) {
18292    data.evt && data.evt.preventDefault();
18293    data.evt = null;
18294  }
18295
18296  function initFileUpload(i, form) {
18297    if (!form.fileUploads || !form.fileUploads[i]) {
18298      return;
18299    }
18300
18301    var file;
18302    var $el = $(form.fileUploads[i]);
18303    var $defaultWrap = $el.find('> .w-file-upload-default');
18304    var $uploadingWrap = $el.find('> .w-file-upload-uploading');
18305    var $successWrap = $el.find('> .w-file-upload-success');
18306    var $errorWrap = $el.find('> .w-file-upload-error');
18307    var $input = $defaultWrap.find('.w-file-upload-input');
18308    var $label = $defaultWrap.find('.w-file-upload-label');
18309    var $labelChildren = $label.children();
18310    var $errorMsgEl = $errorWrap.find('.w-file-upload-error-msg');
18311    var $fileEl = $successWrap.find('.w-file-upload-file');
18312    var $removeEl = $successWrap.find('.w-file-remove-link');
18313    var $fileNameEl = $fileEl.find('.w-file-upload-file-name');
18314    var sizeErrMsg = $errorMsgEl.attr('data-w-size-error');
18315    var typeErrMsg = $errorMsgEl.attr('data-w-type-error');
18316    var genericErrMsg = $errorMsgEl.attr('data-w-generic-error');
18317
18318    if (!inApp) {
18319      $removeEl.on('click', function () {
18320        $input.removeAttr('data-value');
18321        $input.val('');
18322        $fileNameEl.html('');
18323        $defaultWrap.toggle(true);
18324        $successWrap.toggle(false);
18325      });
18326      $input.on('change', function (e) {
18327        file = e.target && e.target.files && e.target.files[0];
18328
18329        if (!file) {
18330          return;
18331        } // Show uploading
18332
18333
18334        $defaultWrap.toggle(false);
18335        $errorWrap.toggle(false);
18336        $uploadingWrap.toggle(true); // Set filename
18337
18338        $fileNameEl.text(file.name); // Disable submit button
18339
18340        if (!isUploading()) {
18341          disableBtn(form);
18342        }
18343
18344        form.fileUploads[i].uploading = true;
18345        signFile(file, afterSign);
18346      }); // Setting input width 1px and height equal label
18347      // This is so the browser required error will show up
18348
18349      var height = $label.outerHeight();
18350      $input.height(height);
18351      $input.width(1);
18352    } else {
18353      $input.on('click', function (e) {
18354        e.preventDefault();
18355      });
18356      $label.on('click', function (e) {
18357        e.preventDefault();
18358      });
18359      $labelChildren.on('click', function (e) {
18360        e.preventDefault();
18361      });
18362    }
18363
18364    function parseError(err) {
18365      var errorMsg = err.responseJSON && err.responseJSON.msg;
18366      var userError = genericErrMsg;
18367
18368      if (typeof errorMsg === 'string' && errorMsg.indexOf('InvalidFileTypeError') === 0) {
18369        userError = typeErrMsg;
18370      } else if (typeof errorMsg === 'string' && errorMsg.indexOf('MaxFileSizeError') === 0) {
18371        userError = sizeErrMsg;
18372      }
18373
18374      $errorMsgEl.text(userError);
18375      $input.removeAttr('data-value');
18376      $input.val('');
18377      $uploadingWrap.toggle(false);
18378      $defaultWrap.toggle(true);
18379      $errorWrap.toggle(true);
18380      form.fileUploads[i].uploading = false;
18381
18382      if (!isUploading()) {
18383        reset(form);
18384      }
18385    }
18386
18387    function afterSign(err, data) {
18388      if (err) {
18389        return parseError(err);
18390      }
18391
18392      var fileName = data.fileName;
18393      var postData = data.postData;
18394      var fileId = data.fileId;
18395      var s3Url = data.s3Url;
18396      $input.attr('data-value', fileId);
18397      uploadS3(s3Url, postData, file, fileName, afterUpload);
18398    }
18399
18400    function afterUpload(err) {
18401      if (err) {
18402        return parseError(err);
18403      } // Show success
18404
18405
18406      $uploadingWrap.toggle(false);
18407      $successWrap.css('display', 'inline-block');
18408      form.fileUploads[i].uploading = false;
18409
18410      if (!isUploading()) {
18411        reset(form);
18412      }
18413    }
18414
18415    function isUploading() {
18416      var uploads = form.fileUploads && form.fileUploads.toArray() || [];
18417      return uploads.some(function (value) {
18418        return value.uploading;
18419      });
18420    }
18421  }
18422
18423  function signFile(file, cb) {
18424    var payload = {
18425      name: file.name,
18426      size: file.size
18427    };
18428    $.ajax({
18429      type: 'POST',
18430      url: signFileUrl,
18431      data: payload,
18432      dataType: 'json',
18433      crossDomain: true
18434    }).done(function (data) {
18435      cb(null, data);
18436    }).fail(function (err) {
18437      cb(err);
18438    });
18439  }
18440
18441  function uploadS3(url, data, file, fileName, cb) {
18442    var formData = new FormData();
18443
18444    for (var k in data) {
18445      formData.append(k, data[k]);
18446    }
18447
18448    formData.append('file', file, fileName);
18449    $.ajax({
18450      type: 'POST',
18451      url: url,
18452      data: formData,
18453      processData: false,
18454      contentType: false
18455    }).done(function () {
18456      cb(null);
18457    }).fail(function (err) {
18458      cb(err);
18459    });
18460  } // Export module
18461
18462
18463  return api;
18464});
18465
18466/***/ }),
18467/* 317 */
18468/***/ (function(module, exports, __webpack_require__) {
18469
18470var arrayWithHoles = __webpack_require__(318);
18471
18472var iterableToArrayLimit = __webpack_require__(319);
18473
18474var nonIterableRest = __webpack_require__(320);
18475
18476function _slicedToArray(arr, i) {
18477  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
18478}
18479
18480module.exports = _slicedToArray;
18481
18482/***/ }),
18483/* 318 */
18484/***/ (function(module, exports) {
18485
18486function _arrayWithHoles(arr) {
18487  if (Array.isArray(arr)) return arr;
18488}
18489
18490module.exports = _arrayWithHoles;
18491
18492/***/ }),
18493/* 319 */
18494/***/ (function(module, exports) {
18495
18496function _iterableToArrayLimit(arr, i) {
18497  var _arr = [];
18498  var _n = true;
18499  var _d = false;
18500  var _e = undefined;
18501
18502  try {
18503    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
18504      _arr.push(_s.value);
18505
18506      if (i && _arr.length === i) break;
18507    }
18508  } catch (err) {
18509    _d = true;
18510    _e = err;
18511  } finally {
18512    try {
18513      if (!_n && _i["return"] != null) _i["return"]();
18514    } finally {
18515      if (_d) throw _e;
18516    }
18517  }
18518
18519  return _arr;
18520}
18521
18522module.exports = _iterableToArrayLimit;
18523
18524/***/ }),
18525/* 320 */
18526/***/ (function(module, exports) {
18527
18528function _nonIterableRest() {
18529  throw new TypeError("Invalid attempt to destructure non-iterable instance");
18530}
18531
18532module.exports = _nonIterableRest;
18533
18534/***/ }),
18535/* 321 */
18536/***/ (function(module, exports, __webpack_require__) {
18537
18538"use strict";
18539 // @wf-will-never-add-flow-to-this-file
18540
18541/* globals window, document */
18542
18543/* eslint-disable no-var */
18544
18545/**
18546 * Webflow: Navbar component
18547 */
18548
18549var Webflow = __webpack_require__(6);
18550
18551var IXEvents = __webpack_require__(65);
18552
18553var KEY_CODES = {
18554  ARROW_LEFT: 37,
18555  ARROW_UP: 38,
18556  ARROW_RIGHT: 39,
18557  ARROW_DOWN: 40,
18558  ESCAPE: 27,
18559  SPACE: 32,
18560  ENTER: 13,
18561  HOME: 36,
18562  END: 35
18563};
18564Webflow.define('navbar', module.exports = function ($, _) {
18565  var api = {};
18566  var tram = $.tram;
18567  var $win = $(window);
18568  var $doc = $(document);
18569  var debounce = _.debounce;
18570  var $body;
18571  var $navbars;
18572  var designer;
18573  var inEditor;
18574  var inApp = Webflow.env();
18575  var overlay = '<div class="w-nav-overlay" data-wf-ignore />';
18576  var namespace = '.w-nav';
18577  var navbarOpenedButton = 'w--open';
18578  var navbarOpenedDropdown = 'w--nav-dropdown-open';
18579  var navbarOpenedDropdownToggle = 'w--nav-dropdown-toggle-open';
18580  var navbarOpenedDropdownList = 'w--nav-dropdown-list-open';
18581  var navbarOpenedLink = 'w--nav-link-open';
18582  var ix = IXEvents.triggers;
18583  var menuSibling = $(); // -----------------------------------
18584  // Module methods
18585
18586  api.ready = api.design = api.preview = init;
18587
18588  api.destroy = function () {
18589    menuSibling = $();
18590    removeListeners();
18591
18592    if ($navbars && $navbars.length) {
18593      $navbars.each(teardown);
18594    }
18595  }; // -----------------------------------
18596  // Private methods
18597
18598
18599  function init() {
18600    designer = inApp && Webflow.env('design');
18601    inEditor = Webflow.env('editor');
18602    $body = $(document.body); // Find all instances on the page
18603
18604    $navbars = $doc.find(namespace);
18605
18606    if (!$navbars.length) {
18607      return;
18608    }
18609
18610    $navbars.each(build); // Wire events
18611
18612    removeListeners();
18613    addListeners();
18614  }
18615
18616  function removeListeners() {
18617    Webflow.resize.off(resizeAll);
18618  }
18619
18620  function addListeners() {
18621    Webflow.resize.on(resizeAll);
18622  }
18623
18624  function resizeAll() {
18625    $navbars.each(resize);
18626  }
18627
18628  function build(i, el) {
18629    var $el = $(el); // Store state in data
18630
18631    var data = $.data(el, namespace);
18632
18633    if (!data) {
18634      data = $.data(el, namespace, {
18635        open: false,
18636        el: $el,
18637        config: {},
18638        selectedIdx: -1
18639      });
18640    }
18641
18642    data.menu = $el.find('.w-nav-menu');
18643    data.links = data.menu.find('.w-nav-link');
18644    data.dropdowns = data.menu.find('.w-dropdown');
18645    data.dropdownToggle = data.menu.find('.w-dropdown-toggle');
18646    data.dropdownList = data.menu.find('.w-dropdown-list');
18647    data.button = $el.find('.w-nav-button');
18648    data.container = $el.find('.w-container');
18649    data.overlayContainerId = 'w-nav-overlay-' + i;
18650    data.outside = outside(data); //   If the brand links exists and is set to link to the homepage, the
18651    // default setting, then add an aria-label
18652
18653    var navBrandLink = $el.find('.w-nav-brand');
18654
18655    if (navBrandLink && navBrandLink.attr('href') === '/' && navBrandLink.attr('aria-label') == null) {
18656      navBrandLink.attr('aria-label', 'home');
18657    } //   VoiceOver bug, when items that disallow user selection are focused
18658    // VoiceOver gets confused and scrolls to the end of the page. ¯\_(ツ)_/¯
18659
18660
18661    data.button.attr('style', '-webkit-user-select: text;'); // Add attributes to toggle element
18662
18663    if (data.button.attr('aria-label') == null) {
18664      data.button.attr('aria-label', 'menu');
18665    }
18666
18667    data.button.attr('role', 'button');
18668    data.button.attr('tabindex', '0');
18669    data.button.attr('aria-controls', data.overlayContainerId);
18670    data.button.attr('aria-haspopup', 'menu');
18671    data.button.attr('aria-expanded', 'false'); // Remove old events
18672
18673    data.el.off(namespace);
18674    data.button.off(namespace);
18675    data.menu.off(namespace); // Set config from data attributes
18676
18677    configure(data); // Add events based on mode
18678
18679    if (designer) {
18680      removeOverlay(data);
18681      data.el.on('setting' + namespace, handler(data));
18682    } else {
18683      addOverlay(data);
18684      data.button.on('click' + namespace, toggle(data));
18685      data.menu.on('click' + namespace, 'a', navigate(data));
18686      data.button.on('keydown' + namespace, makeToggleButtonKeyboardHandler(data));
18687      data.el.on('keydown' + namespace, makeLinksKeyboardHandler(data));
18688    } // Trigger initial resize
18689
18690
18691    resize(i, el);
18692  }
18693
18694  function teardown(i, el) {
18695    var data = $.data(el, namespace);
18696
18697    if (data) {
18698      removeOverlay(data);
18699      $.removeData(el, namespace);
18700    }
18701  }
18702
18703  function removeOverlay(data) {
18704    if (!data.overlay) {
18705      return;
18706    }
18707
18708    close(data, true);
18709    data.overlay.remove();
18710    data.overlay = null;
18711  }
18712
18713  function addOverlay(data) {
18714    if (data.overlay) {
18715      return;
18716    }
18717
18718    data.overlay = $(overlay).appendTo(data.el);
18719    data.overlay.attr('id', data.overlayContainerId);
18720    data.parent = data.menu.parent();
18721    close(data, true);
18722  }
18723
18724  function configure(data) {
18725    var config = {};
18726    var old = data.config || {}; // Set config options from data attributes
18727
18728    var animation = config.animation = data.el.attr('data-animation') || 'default';
18729    config.animOver = /^over/.test(animation);
18730    config.animDirect = /left$/.test(animation) ? -1 : 1; // Re-open menu if the animation type changed
18731
18732    if (old.animation !== animation) {
18733      data.open && _.defer(reopen, data);
18734    }
18735
18736    config.easing = data.el.attr('data-easing') || 'ease';
18737    config.easing2 = data.el.attr('data-easing2') || 'ease';
18738    var duration = data.el.attr('data-duration');
18739    config.duration = duration != null ? Number(duration) : 400;
18740    config.docHeight = data.el.attr('data-doc-height'); // Store config in data
18741
18742    data.config = config;
18743  }
18744
18745  function handler(data) {
18746    return function (evt, options) {
18747      options = options || {};
18748      var winWidth = $win.width();
18749      configure(data);
18750      options.open === true && open(data, true);
18751      options.open === false && close(data, true); // Reopen if media query changed after setting
18752
18753      data.open && _.defer(function () {
18754        if (winWidth !== $win.width()) {
18755          reopen(data);
18756        }
18757      });
18758    };
18759  }
18760
18761  function makeToggleButtonKeyboardHandler(data) {
18762    return function (evt) {
18763      switch (evt.keyCode) {
18764        case KEY_CODES.SPACE:
18765        case KEY_CODES.ENTER:
18766          {
18767            // Toggle returns a function
18768            toggle(data)();
18769            evt.preventDefault();
18770            return evt.stopPropagation();
18771          }
18772
18773        case KEY_CODES.ESCAPE:
18774          {
18775            close(data);
18776            evt.preventDefault();
18777            return evt.stopPropagation();
18778          }
18779
18780        case KEY_CODES.ARROW_RIGHT:
18781        case KEY_CODES.ARROW_DOWN:
18782        case KEY_CODES.HOME:
18783        case KEY_CODES.END:
18784          {
18785            if (!data.open) {
18786              evt.preventDefault();
18787              return evt.stopPropagation();
18788            }
18789
18790            if (evt.keyCode === KEY_CODES.END) {
18791              data.selectedIdx = data.links.length - 1;
18792            } else {
18793              data.selectedIdx = 0;
18794            }
18795
18796            focusSelectedLink(data);
18797            evt.preventDefault();
18798            return evt.stopPropagation();
18799          }
18800      }
18801    };
18802  }
18803
18804  function makeLinksKeyboardHandler(data) {
18805    return function (evt) {
18806      if (!data.open) {
18807        return;
18808      } // Realign selectedIdx with the menu item that is currently in focus.
18809      // We need this because we do not track the `Tab` key activity!
18810
18811
18812      data.selectedIdx = data.links.index(document.activeElement);
18813
18814      switch (evt.keyCode) {
18815        case KEY_CODES.HOME:
18816        case KEY_CODES.END:
18817          {
18818            if (evt.keyCode === KEY_CODES.END) {
18819              data.selectedIdx = data.links.length - 1;
18820            } else {
18821              data.selectedIdx = 0;
18822            }
18823
18824            focusSelectedLink(data);
18825            evt.preventDefault();
18826            return evt.stopPropagation();
18827          }
18828
18829        case KEY_CODES.ESCAPE:
18830          {
18831            close(data); // Focus toggle button
18832
18833            data.button.focus();
18834            evt.preventDefault();
18835            return evt.stopPropagation();
18836          }
18837
18838        case KEY_CODES.ARROW_LEFT:
18839        case KEY_CODES.ARROW_UP:
18840          {
18841            data.selectedIdx = Math.max(-1, data.selectedIdx - 1);
18842            focusSelectedLink(data);
18843            evt.preventDefault();
18844            return evt.stopPropagation();
18845          }
18846
18847        case KEY_CODES.ARROW_RIGHT:
18848        case KEY_CODES.ARROW_DOWN:
18849          {
18850            data.selectedIdx = Math.min(data.links.length - 1, data.selectedIdx + 1);
18851            focusSelectedLink(data);
18852            evt.preventDefault();
18853            return evt.stopPropagation();
18854          }
18855      }
18856    };
18857  }
18858
18859  function focusSelectedLink(data) {
18860    if (data.links[data.selectedIdx]) {
18861      var selectedElement = data.links[data.selectedIdx];
18862      selectedElement.focus();
18863      navigate(selectedElement);
18864    }
18865  }
18866
18867  function reopen(data) {
18868    if (!data.open) {
18869      return;
18870    }
18871
18872    close(data, true);
18873    open(data, true);
18874  }
18875
18876  function toggle(data) {
18877    // Debounce toggle to wait for accurate open state
18878    return debounce(function () {
18879      data.open ? close(data) : open(data);
18880    });
18881  }
18882
18883  function navigate(data) {
18884    return function (evt) {
18885      var link = $(this);
18886      var href = link.attr('href'); // Avoid late clicks on touch devices
18887
18888      if (!Webflow.validClick(evt.currentTarget)) {
18889        evt.preventDefault();
18890        return;
18891      } // Close when navigating to an in-page anchor
18892
18893
18894      if (href && href.indexOf('#') === 0 && data.open) {
18895        close(data);
18896      }
18897    };
18898  }
18899
18900  function outside(data) {
18901    // Unbind previous click handler if it exists
18902    if (data.outside) {
18903      $doc.off('click' + namespace, data.outside);
18904    }
18905
18906    return function (evt) {
18907      var $target = $(evt.target); // Ignore clicks on Editor overlay UI
18908
18909      if (inEditor && $target.closest('.w-editor-bem-EditorOverlay').length) {
18910        return;
18911      } // Close menu when clicked outside, debounced to wait for state
18912
18913
18914      outsideDebounced(data, $target);
18915    };
18916  }
18917
18918  var outsideDebounced = debounce(function (data, $target) {
18919    if (!data.open) {
18920      return;
18921    }
18922
18923    var menu = $target.closest('.w-nav-menu');
18924
18925    if (!data.menu.is(menu)) {
18926      close(data);
18927    }
18928  });
18929
18930  function resize(i, el) {
18931    var data = $.data(el, namespace);
18931 // Check for collapsed state based on button display
18932
18933    var collapsed = data.collapsed = data.button.css('display') !== 'none'; // Close menu if button is no longer visible (and not in designer)
18934
18935    if (data.open && !collapsed && !designer) {
18936      close(data, true);
18937    } // Set max-width of links + dropdowns to match container
18938
18939
18940    if (data.container.length) {
18941      var updateEachMax = updateMax(data);
18942      data.links.each(updateEachMax);
18943      data.dropdowns.each(updateEachMax);
18944    } // If currently open, update height to match body
18945
18946
18947    if (data.open) {
18948      setOverlayHeight(data);
18949    }
18950  }
18951
18952  var maxWidth = 'max-width';
18953
18954  function updateMax(data) {
18955    // Set max-width of each element to match container
18956    var containMax = data.container.css(maxWidth);
18957
18958    if (containMax === 'none') {
18959      containMax = '';
18960    }
18961
18962    return function (i, link) {
18963      link = $(link);
18964      link.css(maxWidth, ''); // Don't set the max-width if an upstream value exists
18965
18966      if (link.css(maxWidth) === 'none') {
18967        link.css(maxWidth, containMax);
18968      }
18969    };
18970  }
18971
18972  function addMenuOpen(i, el) {
18973    el.setAttribute('data-nav-menu-open', '');
18974  }
18975
18976  function removeMenuOpen(i, el) {
18977    el.removeAttribute('data-nav-menu-open');
18978  }
18979
18980  function open(data, immediate) {
18981    if (data.open) {
18982      return;
18983    }
18984
18985    data.open = true;
18986    data.menu.each(addMenuOpen);
18987    data.links.addClass(navbarOpenedLink);
18988    data.dropdowns.addClass(navbarOpenedDropdown);
18989    data.dropdownToggle.addClass(navbarOpenedDropdownToggle);
18990    data.dropdownList.addClass(navbarOpenedDropdownList);
18991    data.button.addClass(navbarOpenedButton);
18992    var config = data.config;
18993    var animation = config.animation;
18994
18995    if (animation === 'none' || !tram.support.transform) {
18996      immediate = true;
18997    }
18998
18999    var bodyHeight = setOverlayHeight(data);
19000    var menuHeight = data.menu.outerHeight(true);
19001    var menuWidth = data.menu.outerWidth(true);
19002    var navHeight = data.el.height();
19003    var navbarEl = data.el[0];
19004    resize(0, navbarEl);
19005    ix.intro(0, navbarEl);
19006    Webflow.redraw.up(); // Listen for click outside events
19007
19008    if (!designer) {
19009      $doc.on('click' + namespace, data.outside);
19010    } // No transition for immediate
19011
19012
19013    if (immediate) {
19014      complete();
19015      return;
19016    }
19017
19018    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing; // Add menu to overlay
19019
19020    if (data.overlay) {
19021      menuSibling = data.menu.prev();
19022      data.overlay.show().append(data.menu);
19023    } // Over left/right
19024
19025
19026    if (config.animOver) {
19027      tram(data.menu).add(transConfig).set({
19028        x: config.animDirect * menuWidth,
19029        height: bodyHeight
19030      }).start({
19031        x: 0
19032      }).then(complete);
19033      data.overlay && data.overlay.width(menuWidth);
19034      return;
19035    } // Drop Down
19036
19037
19038    var offsetY = navHeight + menuHeight;
19039    tram(data.menu).add(transConfig).set({
19040      y: -offsetY
19041    }).start({
19042      y: 0
19043    }).then(complete);
19044
19045    function complete() {
19046      data.button.attr('aria-expanded', 'true');
19047    }
19048  }
19049
19050  function setOverlayHeight(data) {
19051    var config = data.config;
19052    var bodyHeight = config.docHeight ? $doc.height() : $body.height();
19053
19054    if (config.animOver) {
19055      data.menu.height(bodyHeight);
19056    } else if (data.el.css('position') !== 'fixed') {
19057      bodyHeight -= data.el.outerHeight(true);
19058    }
19059
19060    data.overlay && data.overlay.height(bodyHeight);
19061    return bodyHeight;
19062  }
19063
19064  function close(data, immediate) {
19065    if (!data.open) {
19066      return;
19067    }
19068
19069    data.open = false;
19070    data.button.removeClass(navbarOpenedButton);
19071    var config = data.config;
19072
19073    if (config.animation === 'none' || !tram.support.transform || config.duration <= 0) {
19074      immediate = true;
19075    }
19076
19077    ix.outro(0, data.el[0]); // Stop listening for click outside events
19078
19079    $doc.off('click' + namespace, data.outside);
19080
19081    if (immediate) {
19082      tram(data.menu).stop();
19083      complete();
19084      return;
19085    }
19086
19087    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing2;
19088    var menuHeight = data.menu.outerHeight(true);
19089    var menuWidth = data.menu.outerWidth(true);
19090    var navHeight = data.el.height(); // Over left/right
19091
19092    if (config.animOver) {
19093      tram(data.menu).add(transConfig).start({
19094        x: menuWidth * config.animDirect
19095      }).then(complete);
19096      return;
19097    } // Drop Down
19098
19099
19100    var offsetY = navHeight + menuHeight;
19101    tram(data.menu).add(transConfig).start({
19102      y: -offsetY
19103    }).then(complete);
19104
19105    function complete() {
19106      data.menu.height('');
19107      tram(data.menu).set({
19108        x: 0,
19109        y: 0
19110      });
19111      data.menu.each(removeMenuOpen);
19112      data.links.removeClass(navbarOpenedLink);
19113      data.dropdowns.removeClass(navbarOpenedDropdown);
19114      data.dropdownToggle.removeClass(navbarOpenedDropdownToggle);
19115      data.dropdownList.removeClass(navbarOpenedDropdownList);
19116
19117      if (data.overlay && data.overlay.children().length) {
19118        // Move menu back to parent at the original location
19119        menuSibling.length ? data.menu.insertAfter(menuSibling) : data.menu.prependTo(data.parent);
19120        data.overlay.attr('style', '').hide();
19121      } // Trigger event so other components can hook in (dropdown)
19122
19123
19124      data.el.triggerHandler('w-close');
19125      data.button.attr('aria-expanded', 'false');
19126    }
19127  } // Export module
19128
19129
19130  return api;
19131});
19132
19133/***/ })
19134/******/ ]);/**
19135 * ----------------------------------------------------------------------
19136 * Webflow: Interactions 2.0: Init
19137 */
19138Webflow.require('ix2').init(
19139{"events":{"e-3":{"id":"e-3","name":"Unnamed interaction","animationType":"custom","eventTypeId":"MOUSE_MOVE","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-3","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small"],"target":{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-3-p","selectedAxis":"X_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":50,"restingState":50},{"continuousParameterGroupId":"a-3-p-2","selectedAxis":"Y_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":50,"restingState":50}],"createdOn":1547215079337},"e-5":{"id":"e-5","name":"Unnamed interaction","animationType":"custom","eventTypeId":"MOUSE_MOVE","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-4","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-4-p","selectedAxis":"X_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":56,"restingState":50},{"continuousParameterGroupId":"a-4-p-2","selectedAxis":"Y_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":56,"restingState":50}],"createdOn":1547219545293},"e-6":{"id":"e-6","name":"Unnamed interaction","animationType":"custom","eventTypeId":"MOUSE_MOVE","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-5-p","selectedAxis":"X_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":50,"restingState":50},{"continuousParameterGroupId":"a-5-p-2","selectedAxis":"Y_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":50,"restingState":50}],"createdOn":1547220156921},"e-7":{"id":"e-7","name":"Unnamed interaction","animationType":"custom","eventTypeId":"MOUSE_MOVE","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-6","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-6-p","selectedAxis":"X_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":50,"restingState":50},{"continuousParameterGroupId":"a-6-p-2","selectedAxis":"Y_AXIS","basedOn":"VIEWPORT","reverse":false,"smoothing":50,"restingState":50}],"createdOn":1547220374571},"e-10":{"id":"e-10","name":"Unnamed interaction","animationType":"custom","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-8","affectedElements":{},"duration":0}},"mediaQueries":["small","tiny"],"target":{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-8-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1547802913973}
19139,"e-12":{"id":"e-12","name":"Unnamed interaction","animationType":"custom","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-10","affectedElements":{},"duration":0}},"mediaQueries":["main","medium"],"target":{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-10-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1552765706538},"e-13":{"id":"e-13","name":"Unnamed interaction","animationType":"custom","eventTypeId":"PAGE_SCROLL_UP","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-9","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-14"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":null,"direction":null,"effectIn":null},"createdOn":1552813886186},"e-14":{"id":"e-14","name":"Unnamed interaction","animationType":"custom","eventTypeId":"PAGE_SCROLL_DOWN","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-2","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-13"}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0","appliesTo":"PAGE","styleBlockIds":[]}],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":null,"direction":null,"effectIn":null},"createdOn":1552813886190},"e-18":{"id":"e-18","name":"Unnamed interaction","animationType":"custom","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-14","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"selector":".search-video-outer-wrapper","originalId":"5c9e2506ce648b74a060bbb0|e7954f98-b7e5-4bbe-60c6-3a9da674c684","appliesTo":"CLASS"},"targets":[{"selector":".search-video-outer-wrapper","originalId":"5c9e2506ce648b74a060bbb0|e7954f98-b7e5-4bbe-60c6-3a9da674c684","appliesTo":"CLASS"}],"config":[{"continuousParameterGroupId":"a-14-p","smoothing":50,"startsEntering":true,"addStartOffset":true,"addOffsetValue":20,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1577456962217},"e-19":{"id":"e-19","name":"Unnamed interaction","animationType":"custom","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-16","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"selector":".testimonial-item","originalId":"5c9e2506ce648b74a060bbb0|ec73477f-2e4a-e355-8f95-f729d419ab0e","appliesTo":"CLASS"},"targets":[{"selector":".testimonial-item","originalId":"5c9e2506ce648b74a060bbb0|ec73477f-2e4a-e355-8f95-f729d419ab0e","appliesTo":"CLASS"}],"config":[{"continuousParameterGroupId":"a-16-p","smoothing":50,"startsEntering":true,"addStartOffset":true,"addOffsetValue":25,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1577460792360},"e-21":{"id":"e-21","name":"Unnamed interaction","animationType":"custom","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-17","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"selector":".two-column-grid-item","originalId":"5c9e2506ce648b74a060bbb0|e52167d1-b078-f403-8d7c-6ff53d72182b","appliesTo":"CLASS"},"targets":[{"selector":".two-column-grid-item","originalId":"5c9e2506ce648b74a060bbb0|e52167d1-b078-f403-8d7c-6ff53d72182b","appliesTo":"CLASS"}],"config":[{"continuousParameterGroupId":"a-17-p","smoothing":50,"startsEntering":true,"addStartOffset":true,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1577462055470},"e-26":{"id":"e-26","name":"Unnamed interaction","animationType":"custom","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-19","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"id":"5c9e2506ce648b74a060bbb0|9bb77606-19df-e700-e6e3-03f97f2ab8a3","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0|9bb77606-19df-e700-e6e3-03f97f2ab8a3","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-19-p","smoothing":50,"startsEntering":true,"addStartOffset":true,"addOffsetValue":10,"startsExiting":false,"addEndOffset":true,"endOffsetValue":10}],"createdOn":1577969612240},"e-30":{"id":"e-30","name":"Unnamed interaction","animationType":"custom","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-20","affectedElements":{},"duration":0}},"mediaQueries":["main","medium"],"target":{"id":"5c9e2506ce648b74a060bbb0|e41b92ea-3a0e-a42c-7f66-6df1c09cff97","appliesTo":"ELEMENT","styleBlockIds":[]},"targets":[{"id":"5c9e2506ce648b74a060bbb0|e41b92ea-3a0e-a42c-7f66-6df1c09cff97","appliesTo":"ELEMENT","styleBlockIds":[]}],"config":[{"continuousParameterGroupId":"a-20-p","smoothing":50,"startsEntering":true,"addStartOffset":true,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1578065640870}},"actionLists":{"a-3":{"id":"a-3","title":"RunBar Perspective MouseMove","continuousParameterGroups":[{"id":"a-3-p","type":"MOUSE_X","parameterLabel":"Mouse X","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-3-n","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|2983f719-11b6-7dbf-45f1-d53c4b4bdaa7"},"yValue":10,"zValue":-2,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}}]},{"keyframe":100,"actionItems":[{"id":"a-3-n-2","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|2983f719-11b6-7dbf-45f1-d53c4b4bdaa7"},"yValue":-10,"zValue":2,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}}]}]},{"id":"a-3-p-2","type":"MOUSE_Y","parameterLabel":"Mouse Y","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-3-n-8","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|2983f719-11b6-7dbf-45f1-d53c4b4bdaa7"},"xValue":10,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}}]},{"keyframe":100,"actionItems":[{"id":"a-3-n-9","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|2983f719-11b6-7dbf-45f1-d53c4b4bdaa7"},"xValue":15,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}}]}]}],"createdOn":1547215394071},"a-4":{"id":"a-4","title":"Opacity RunBar 3","continuousParameterGroups":[{"id":"a-4-p","type":"MOUSE_X","parameterLabel":"Mouse X","continuousActionGroups":[{"keyframe":70,"actionItems":[{"id":"a-4-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|4950abe4-3f3b-9914-7cd9-5d3d98fbe
191396cc"},"value":0,"unit":""}},{"id":"a-4-n-4","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|11f6ff91-21be-f153-e09d-ede832af832b"},"value":0,"unit":""}}]},{"keyframe":73,"actionItems":[{"id":"a-4-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|4950abe4-3f3b-9914-7cd9-5d3d98fbe6cc"},"value":1,"unit":""}},{"id":"a-4-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|11f6ff91-21be-f153-e09d-ede832af832b"},"value":1,"unit":""}}]}]},{"id":"a-4-p-2","type":"MOUSE_Y","parameterLabel":"Mouse Y","continuousActionGroups":[]}],"createdOn":1547220022783},"a-5":{"id":"a-5","title":"Opacity RunBar 2","continuousParameterGroups":[{"id":"a-5-p","type":"MOUSE_X","parameterLabel":"Mouse X","continuousActionGroups":[{"keyframe":33,"actionItems":[{"id":"a-5-n-4","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|000761ad-9659-3805-c130-114cc378f585"},"value":0,"unit":""}},{"id":"a-5-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|fcc3a184-6b07-8672-b416-a9370d68dd4a"},"value":0,"unit":""}}]},{"keyframe":36,"actionItems":[{"id":"a-5-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|000761ad-9659-3805-c130-114cc378f585"},"value":1,"unit":""}},{"id":"a-5-n-8","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|fcc3a184-6b07-8672-b416-a9370d68dd4a"},"value":1,"unit":""}}]},{"keyframe":66,"actionItems":[{"id":"a-5-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|000761ad-9659-3805-c130-114cc378f585"},"value":1,"unit":""}},{"id":"a-5-n-7","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|fcc3a184-6b07-8672-b416-a9370d68dd4a"},"value":1,"unit":""}}]},{"keyframe":70,"actionItems":[{"id":"a-5-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|000761ad-9659-3805-c130-114cc378f585"},"value":0,"unit":""}},{"id":"a-5-n-6","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|fcc3a184-6b07-8672-b416-a9370d68dd4a"},"value":0,"unit":""}}]}]},{"id":"a-5-p-2","type":"MOUSE_Y","parameterLabel":"Mouse Y","continuousActionGroups":[]}],"createdOn":1547220164519},"a-6":{"id":"a-6","title":"Opacity RunBar 1","continuousParameterGroups":[{"id":"a-6-p","type":"MOUSE_X","parameterLabel":"Mouse X","continuousActionGroups":[{"keyframe":30,"actionItems":[{"id":"a-6-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|1f161d3c-0b1c-c118-790e-20841ecc262d"},"value":1,"unit":""}},{"id":"a-6-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|c7a45757-f787-a4b6-10f0-30372786c81d"},"value":1,"unit":""}}]},{"keyframe":33,"actionItems":[{"id":"a-6-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|1f161d3c-0b1c-c118-790e-20841ecc262d"},"value":0,"unit":""}},{"id":"a-6-n-4","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|c7a45757-f787-a4b6-10f0-30372786c81d"},"value":0,"unit":""}}]}]},{"id":"a-6-p-2","type":"MOUSE_Y","parameterLabel":"Mouse Y","continuousActionGroups":[]}],"createdOn":1547220380863},"a-8":{"id":"a-8","title":"NavBar Mobile Hamburger","continuousParameterGroups":[{"id":"a-8-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-8-n-8","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":500,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"globalSwatchId":"","rValue":0,"bValue":0,"gValue":0,"aValue":0}},{"id":"a-8-n-16","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"","duration":500,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"globalSwatchId":"","rValue":255,"bValue":255,"gValue":255,"aValue":0}}]},{"keyframe":1,"actionItems":[{"id":"a-8-n-9","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":500,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"globalSwatchId":"","rValue":54,"bValue":99,"gValue":76,"aValue":0.2}},{"id":"a-8-n-17","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"","duration":500,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"globalSwatchId":"","rValue":255,"bValue":255,"gValue":255,"aValue":1}}]}]}],"createdOn":1552765563188},"a-10":{"id":"a-10","title":"NavBar Desktop","continuousParameterGroups":[{"id":"a-10-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-10-n","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":500,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"globalSwatchId":"","rValue":0,"bValue":0,"gValue":0,"aValue":0}}]},{"keyframe":1,"actionItems":[{"id":"a-10-n-3","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":500,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"globalSwatchId":"","rValue":54,"bValue":99,"gValue":76,"aValue":0.2}}]},{"keyframe":5,"actionItems":[{"id":"a-10-n-5","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":500,"target":{"id":"654bca49-08cc-36b8-2fb8-49e849726ca4"},"globalSwatchId":"","rValue":143,"bValue":0,"gValue":14,"aValue":1}},{"id":"a-10-n-6","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":500,"target":{"id":"d9e969fa-2828-bd14-ab3b-18b95909b786"},"globalSwatchId":"","rValue":255,"bValue":255,"gValue":255,"aValue":1}},{"id":"a-10-n-8","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":500,"target":{"selector":".nav-link","selectorGuids":["40085930-46ff-7213-f2b4-017852634414"]},"globalSwatchId":"","rValue":0,"bValue":0,"gValue":0,"aValue":0}},{"id":"a-10-n-16","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"","duration":500,"target":{"id":"1796fb64-f947-7edc-cd35-a36a5ba95950"},"globalSwatchId":"4a75633c","rValue":243,"bValue":203,"gValue":207,"aValue":1}}]},{"keyframe":6,"actionItems":[{"id":"a-10-n-9","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":500,"target":{"id":"654bca49-08cc-36b8-2fb8-49e849726ca4"},"globalSwatchId":"","rValue":139,"bValue":140,"gValue":139,"aValue":1}},{"id":"a-10-n-11","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":500,"target":{"id":"d9e969fa-2828-bd14-ab3b-18b95909b786"},"globalSwatchId":"c0e9fca7","rValue":0,"bValue":238,"gValue":119,"aValue":1}},{"id":"a-10-n-13","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":500,"target":{"selector":".nav-link","selectorGuids":["40085930-46ff-7213-f2b4-017852634414"]},"globalSwatchId":"97dff8a0","rValue":210,"bValue":213,"gValue":211,"aValue":1}},{"id":"a-10-n-17","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"","duration":500,"target":{"id":"1796fb64-f947-7edc-cd35-a36a5ba95950"},"globalSwatchId":"face933b","rValue":247,"bValue":250,"gValue":248,"aValue":1}}]}]}],"createdOn":1552765563188},"a-9":{"id":"a-9","title":"Show NavBar","actionItemGroups":[{"actionItems":[{"id":"a-9-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"easeIn","duration":250,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"yValue":-64,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"id":"a-9-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"easeOut","duration":250,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]}],"useFirstGroupAsInitialState":false,"createdOn":1552814085218}
19139,"a-2":{"id":"a-2","title":"Hide NavBar","actionItemGroups":[{"actionItems":[{"id":"a-2-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"easeIn","duration":250,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"id":"a-2-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"easeOut","duration":250,"target":{"id":"e61dd1e6-c9f4-4eac-721f-5498133fac50"},"yValue":-64,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]}],"useFirstGroupAsInitialState":false,"createdOn":1547213602358},"a-14":{"id":"a-14","title":"Show/hide video scrolling viewport","continuousParameterGroups":[{"id":"a-14-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-14-n-7","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".search-video-outer-wrapper","selectorGuids":["3c0b761e-d9e8-f0ee-00f3-1f5ea1ad1d88"]},"value":0,"unit":""}},{"id":"a-14-n-11","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".search-video-outer-wrapper","selectorGuids":["3c0b761e-d9e8-f0ee-00f3-1f5ea1ad1d88"]},"yValue":24,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"keyframe":8,"actionItems":[{"id":"a-14-n-8","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".search-video-outer-wrapper","selectorGuids":["3c0b761e-d9e8-f0ee-00f3-1f5ea1ad1d88"]},"value":1,"unit":""}},{"id":"a-14-n-12","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".search-video-outer-wrapper","selectorGuids":["3c0b761e-d9e8-f0ee-00f3-1f5ea1ad1d88"]},"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"keyframe":95,"actionItems":[{"id":"a-14-n-9","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".search-video-outer-wrapper","selectorGuids":["3c0b761e-d9e8-f0ee-00f3-1f5ea1ad1d88"]},"value":1,"unit":""}}]},{"keyframe":100,"actionItems":[{"id":"a-14-n-10","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".search-video-outer-wrapper","selectorGuids":["3c0b761e-d9e8-f0ee-00f3-1f5ea1ad1d88"]},"value":0,"unit":""}}]}]}],"createdOn":1577456082063},"a-16":{"id":"a-16","title":"Show Testimonial Item","continuousParameterGroups":[{"id":"a-16-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-16-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".testimonial-item","selectorGuids":["101cafd2-feb5-803a-28bb-2618f5bbbf52"]},"xValue":50,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"id":"a-16-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".testimonial-item","selectorGuids":["101cafd2-feb5-803a-28bb-2618f5bbbf52"]},"value":0,"unit":""}}]},{"keyframe":30,"actionItems":[{"id":"a-16-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outBounce","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".testimonial-item","selectorGuids":["101cafd2-feb5-803a-28bb-2618f5bbbf52"]},"xValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"id":"a-16-n-4","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"outBounce","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".testimonial-item","selectorGuids":["101cafd2-feb5-803a-28bb-2618f5bbbf52"]},"value":1,"unit":""}}]}]}],"createdOn":1577460809270},"a-17":{"id":"a-17","title":"Show RunBar Item","continuousParameterGroups":[{"id":"a-17-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-17-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".two-column-grid-item","selectorGuids":["13b20cb8-5a43-5ecc-4dae-2c03d5372b12"]},"yValue":24,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"id":"a-17-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".two-column-grid-item","selectorGuids":["13b20cb8-5a43-5ecc-4dae-2c03d5372b12"]},"value":0,"unit":""}}]},{"keyframe":20,"actionItems":[{"id":"a-17-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".two-column-grid-item","selectorGuids":["13b20cb8-5a43-5ecc-4dae-2c03d5372b12"]},"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"id":"a-17-n-6","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".two-column-grid-item","selectorGuids":["13b20cb8-5a43-5ecc-4dae-2c03d5372b12"]},"value":1,"unit":""}}]}]}],"createdOn":1577462063926},"a-19":{"id":"a-19","title":"Scroll AB Content Symbols","continuousParameterGroups":[{"id":"a-19-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-19-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|9bb77606-19df-e700-e6e3-03f97f2ab8a3"},"yValue":3,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]},{"keyframe":100,"actionItems":[{"id":"a-19-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|9bb77606-19df-e700-e6e3-03f97f2ab8a3"},"yValue":-47,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]}]}],"createdOn":1577969618480},"a-20":{"id":"a-20","title":"Install Plugins Reveal","continuousParameterGroups":[{"id":"a-20-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-20-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|e41b92ea-3a0e-a42c-7f66-6df1c09cff97"},"yValue":0,"xUnit":"%","yUnit":"%","zUnit":"PX"}},{"id":"a-20-n-3","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"SIBLINGS","id":"5c9e2506ce648b74a060bbb0|7c957897-9134-b8d6-81ef-34d2f20a6dc1"},"xValue":75,"yValue":50,"xUnit":"%","yUnit":"%","zUnit":"PX"}},{"id":"a-20-n-5","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"SIBLINGS","id":"5c9e2506ce648b74a060bbb0|d977046d-7c3a-44ab-c7d8-506912fd75bd"},"xValue":-75,"yValue":50,"xUnit":"%","yUnit":"%","zUnit":"PX"}},{"id":"a-20-n-7","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"SIBLINGS","id":"5c9e2506ce648b74a060bbb0|7c957897-9134-b8d6-81ef-34d2f20a6dc1"},"xValue":0.95,"yValue":0.95,"locked":true}},{"id":"a-20-n-9","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"SIBLINGS","id":"5c9e2506ce648b74a060bbb0|d977046d-7c3a-44ab-c7d8-506912fd75bd"},"xValue":0.95,"yValue":0.95,"locked":true}},{"id":"a-20-n-11","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|e41b92ea-3a0e-a42c-7f66-6df1c09cff97"},"xValue":0.9,"yValue":0.9,"locked":true}}]},{"keyframe":25,"actionItems":[{"id":"a-20-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outCubic","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|e41b92ea-3a0e-a42c-7f66-6df1c09cff97"},"yValue":0,"xUnit":"%","yUnit":"%","zUnit":"PX"}},{"id":"a-20-n-4","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outCubic","duration":500,"target":{"useEventTarget":"SIBLINGS","id":"5c9e2506ce648b74a060bbb0|7c957897-9134-b8d6-81ef-34d2f20a6dc1"},"xValue":90,"yValue":50,"xUnit":"%","yUnit":"%","zUnit":"PX"}},{"id":"a-20-n-6","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outCubic","duration":500,"target":{"useEventTarget":"SIBLINGS","id":"5c9e2506ce648b74a060bbb0|d977046d-7c3a-44ab-c7d8-506912fd75bd"},"xValue":-90,"yValue":50,"xUnit":"%","yUnit":"%","zUnit":"PX"}},{"id":"a-20-n-8","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outCubic","duration":500,"target":{"useEventTarget":"SIBLINGS","id":"5c9e2506ce648b74a060bbb0|7c957897-9134-b8d6-81ef-34d2f20a6dc1"},"xValue":1,"yValue":1,"locked":true}},{"id":"a-20-n-10","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outCubic","duration":500,"target":{"useEventTarget":"SIBLINGS","id":"5c9e2506ce648b74a060bbb0|d977046d-7c3a-44ab-c7d8-506912fd75bd"},"xValue":1,"yValue":1,"locked":true}},{"id":"a-20-n-12","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outCubic","duration":500,"target":{"id":"5c9e2506ce648b74a060bbb0|e41b92ea-3a0e-a42c-7f66-6df1c09cff97"},"xValue":1,"yValue":1,"locked":true}}]}]}],"createdOn":1578064971635}},"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}]}}
19140);

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.