PageSourceSearch

https://www.battery.com/wp-content/themes/battery/assets/js/battery-dev.js

js battery.com collected 2026-10-01 10:21:58 UTC 694,087 bytes, 22,027 lines download raw bytes

vendor: 4,098 bytes, lines 1-118
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    }
20/******/ 		// Create a new module (and put it into the cache)
21/******/ 		var module = installedModules[moduleId] = {
22/******/ 			i: moduleId,
23/******/ 			l: false,
24/******/ 			exports: {}
25      /******/
26    };
27/******/
28/******/ 		// Execute the module function
29/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
30/******/
31/******/ 		// Flag the module as loaded
32/******/ 		module.l = true;
33/******/
34/******/ 		// Return the exports of the module
35/******/ 		return module.exports;
36    /******/
37  }
38/******/
39/******/
40/******/ 	// expose the modules object (__webpack_modules__)
41/******/ 	__webpack_require__.m = modules;
42/******/
43/******/ 	// expose the module cache
44/******/ 	__webpack_require__.c = installedModules;
45/******/
46/******/ 	// define getter function for harmony exports
47/******/ 	__webpack_require__.d = function (exports, name, getter) {
48/******/ 		if (!__webpack_require__.o(exports, name)) {
49/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
50      /******/
51    }
52    /******/
53  };
54/******/
55/******/ 	// define __esModule on exports
56/******/ 	__webpack_require__.r = function (exports) {
57/******/ 		if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
58/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
59      /******/
60    }
61/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
62    /******/
63  };
64/******/
65/******/ 	// create a fake namespace object
66/******/ 	// mode & 1: value is a module id, require it
67/******/ 	// mode & 2: merge all properties of value into the ns
68/******/ 	// mode & 4: return value when already ns object
69/******/ 	// mode & 8|1: behave like require
70/******/ 	__webpack_require__.t = function (value, mode) {
71/******/ 		if (mode & 1) value = __webpack_require__(value);
72/******/ 		if (mode & 8) return value;
73/******/ 		if ((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
74/******/ 		var ns = Object.create(null);
75/******/ 		__webpack_require__.r(ns);
76/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
77/******/ 		if (mode & 2 && typeof value != 'string') for (var key in value) __webpack_require__.d(ns, key, function (key) { return value[key]; }.bind(null, key));
78/******/ 		return ns;
79    /******/
80  };
81/******/
82/******/ 	// getDefaultExport function for compatibility with non-harmony modules
83/******/ 	__webpack_require__.n = function (module) {
84/******/ 		var getter = module && module.__esModule ?
85/******/ 			function getDefault() { return module['default']; } :
86/******/ 			function getModuleExports() { return module; };
87/******/ 		__webpack_require__.d(getter, 'a', getter);
88/******/ 		return getter;
89    /******/
90  };
91/******/
92/******/ 	// Object.prototype.hasOwnProperty.call
93/******/ 	__webpack_require__.o = function (object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
94/******/
95/******/ 	// __webpack_public_path__
96/******/ 	__webpack_require__.p = "";
97/******/
98/******/
99/******/ 	// Load entry module and return exports
100/******/ 	return __webpack_require__(__webpack_require__.s = 121);
101  /******/
102})
103/************************************************************************/
104/******/([
105/* 0 */
106/***/ (function (module, exports) {
107
108    function _interopRequireDefault(obj) {
109      return obj && obj.__esModule ? obj : {
110        "default": obj
111      };
112    }
113
114    module.exports = _interopRequireDefault;
115
116    /***/
117  }),
118/* 1 */
119/***/ (function (module, exports) {
120
121    /**
122     * Checks if `value` is classified as an `Array` object.
123     *
124     * @static
125     * @memberOf _
126     * @since 0.1.0
127     * @category Lang
128     * @param {*} value The value to check.
129     * @returns {boolean} Returns `true` if `value` is an array, else `false`.
130     * @example
131     *
132     * _.isArray([1, 2, 3]);
133     * // => true
134     *
135     * _.isArray(document.body.children);
136     * // => false
137     *
138     * _.isArray('abc');
139     * // => false
140     *
141     * _.isArray(_.noop);
142     * // => false
143     */
144    var isArray = Array.isArray;
145
146    module.exports = isArray;
147
148
149    /***/
150  }),
151/* 2 */
152/***/ (function (module, exports, __webpack_require__) {
153
154    "use strict";
155
156
157    var _interopRequireWildcard = __webpack_require__(14);
158
159    Object.defineProperty(exports, "__esModule", {
160      value: true
161    });
162    var _exportNames = {
163      IX2EngineActionTypes: true,
164      IX2EngineConstants: true
165    };
166    exports.IX2EngineConstants = exports.IX2EngineActionTypes = void 0;
167
168    var _triggerEvents = __webpack_require__(171);
169
170    Object.keys(_triggerEvents).forEach(function (key) {
171      if (key === "default" || key === "__esModule") return;
172      if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
173      Object.defineProperty(exports, key, {
174        enumerable: true,
175        get: function get() {
176          return _triggerEvents[key];
177        }
178      });
179    });
180
181    var _animationActions = __webpack_require__(172);
182
183    Object.keys(_animationActions).forEach(function (key) {
184      if (key === "default" || key === "__esModule") return;
185      if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
186      Object.defineProperty(exports, key, {
187        enumerable: true,
188        get: function get() {
189          return _animationActions[key];
190        }
191      });
192    });
193
194    var _triggerInteractions = __webpack_require__(173);
195
196    Object.keys(_triggerInteractions).forEach(function (key) {
197      if (key === "default" || key === "__esModule") return;
198      if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
199      Object.defineProperty(exports, key, {
200        enumerable: true,
201        get: function get() {
202          return _triggerInteractions[key];
203        }
204      });
205    });
206
207    var IX2EngineActionTypes = _interopRequireWildcard(__webpack_require__(174));
208
209    exports.IX2EngineActionTypes = IX2EngineActionTypes;
210
211    var IX2EngineConstants = _interopRequireWildcard(__webpack_require__(175));
212
213    exports.IX2EngineConstants = IX2EngineConstants;
214
215    /***/
216  }),
217/* 3 */
218/***/ (function (module, exports, __webpack_require__) {
219
220    "use strict";
221    // @wf-will-never-add-flow-to-this-file
222
223    /* globals window, document, navigator, WEBFLOW_ENV_TEST */
224
225    /* eslint-disable no-var */
226
227    /**
228     * Webflow: Core site library
229     */
230
231    var Webflow = {};
232    var modules = {};
233    var primary = [];
234    var secondary = window.Webflow || [];
235    var $ = window.jQuery;
236    var $win = $(window);
237    var $doc = $(document);
238    var isFunction = $.isFunction;
239
240    var _ = Webflow._ = __webpack_require__(124);
241
242    var tram = Webflow.tram = __webpack_require__(66) && $.tram;
243    var domready = false;
244    var destroyed = false;
245    tram.config.hideBackface = false;
246    tram.config.keepInherited = true;
247    /**
248     * Webflow.define - Define a named module
249     * @param  {string} name
250     * @param  {function} factory
251     * @param  {object} options
252     * @return {object}
253     */
254
255    Webflow.define = function (name, factory, options) {
256      if (modules[name]) {
257        unbindModule(modules[name]);
258      }
259
260      var instance = modules[name] = factory($, _, options) || {};
261      bindModule(instance);
262      return instance;
263    };
264    /**
265     * Webflow.require - Require a named module
266     * @param  {string} name
267     * @return {object}
268     */
269
270
271    Webflow.require = function (name) {
272      return modules[name];
273    };
274
275    function bindModule(module) {
276      // If running in Webflow app, subscribe to design/preview events
277      if (Webflow.env()) {
278        isFunction(module.design) && $win.on('__wf_design', module.design);
279        isFunction(module.preview) && $win.on('__wf_preview', module.preview);
280      } // Subscribe to front-end destroy event
281
282
283      isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy); // Look for ready method on module
284
285      if (module.ready && isFunction(module.ready)) {
286        addReady(module);
287      }
288    }
289
290    function addReady(module) {
291      // If domready has already happened, run ready method
292      if (domready) {
293        module.ready();
294        return;
295      } // Otherwise add ready method to the primary queue (only once)
296
297
298      if (_.contains(primary, module.ready)) {
299        return;
300      }
301
302      primary.push(module.ready);
303    }
304
305    function unbindModule(module) {
306      // Unsubscribe module from window events
307      isFunction(module.design) && $win.off('__wf_design', module.design);
308      isFunction(module.preview) && $win.off('__wf_preview', module.preview);
309      isFunction(module.destroy) && $win.off('__wf_destroy', module.destroy); // Remove ready method from primary queue
310
311      if (module.ready && isFunction(module.ready)) {
312        removeReady(module);
313      }
314    }
315
316    function removeReady(module) {
317      primary = _.filter(primary, function (readyFn) {
318        return readyFn !== module.ready;
319      });
320    }
321    /**
322     * Webflow.push - Add a ready handler into secondary queue
323     * @param {function} ready  Callback to invoke on domready
324     */
325
326
327    Webflow.push = function (ready) {
328      // If domready has already happened, invoke handler
329      if (domready) {
330        isFunction(ready) && ready();
331        return;
332      } // Otherwise push into secondary queue
333
334
335      secondary.push(ready);
336    };
337    /**
338     * Webflow.env - Get the state of the Webflow app
339     * @param {string} mode [optional]
340     * @return {boolean}
341     */
342
343
344    Webflow.env = function (mode) {
345      var designFlag = window.__wf_design;
346      var inApp = typeof designFlag !== 'undefined';
347
348      if (!mode) {
349        return inApp;
350      }
351
352      if (mode === 'design') {
353        return inApp && designFlag;
354      }
355
356      if (mode === 'preview') {
357        return inApp && !designFlag;
358      }
359
360      if (mode === 'slug') {
361        return inApp && window.__wf_slug;
362      }
363
364      if (mode === 'editor') {
365        return window.WebflowEditor;
366      }
367
368      if (mode === 'test') {
369        return false || window.__wf_test;
370      }
371
372      if (mode === 'frame') {
373        return window !== window.top;
374      }
375    }; // Feature detects + browser sniffs  ಠ_ಠ
376
377
378    var userAgent = navigator.userAgent.toLowerCase();
379    var touch = Webflow.env.touch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch;
380    var chrome = Webflow.env.chrome = /chrome/.test(userAgent) && /Google/.test(navigator.vendor) && parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10);
381    var ios = Webflow.env.ios = /(ipod|iphone|ipad)/.test(userAgent);
382    Webflow.env.safari = /safari/.test(userAgent) && !chrome && !ios; // Maintain current touch target to prevent late clicks on touch devices
383
384    var touchTarget; // Listen for both events to support touch/mouse hybrid devices
385
386    touch && $doc.on('touchstart mousedown', function (evt) {
387      touchTarget = evt.target;
388    });
389    /**
390     * Webflow.validClick - validate click target against current touch target
391     * @param  {HTMLElement} clickTarget  Element being clicked
392     * @return {Boolean}  True if click target is valid (always true on non-touch)
393     */
394
395    Webflow.validClick = touch ? function (clickTarget) {
396      return clickTarget === touchTarget || $.contains(clickTarget, touchTarget);
397    } : function () {
398      return true;
399    };
400    /**
401     * Webflow.resize, Webflow.scroll - throttled event proxies
402     */
403
404    var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
405    var scrollEvents = 'scroll.webflow ' + resizeEvents;
406    Webflow.resize = eventProxy($win, resizeEvents);
407    Webflow.scroll = eventProxy($win, scrollEvents);
408    Webflow.redraw = eventProxy(); // Create a proxy instance for throttled events
409
410    function eventProxy(target, types) {
411      // Set up throttled method (using custom frame-based _.throttle)
412      var handlers = [];
413      var proxy = {};
414      proxy.up = _.throttle(function (evt) {
415        _.each(handlers, function (h) {
416          h(evt);
417        });
418      }); // Bind events to target
419
420      if (target && types) {
421        target.on(types, proxy.up);
422      }
423      /**
424       * Add an event handler
425       * @param  {function} handler
426       */
427
428
429      proxy.on = function (handler) {
430        if (typeof handler !== 'function') {
431          return;
432        }
433
434        if (_.contains(handlers, handler)) {
435          return;
436        }
437
438        handlers.push(handler);
439      };
440      /**
441       * Remove an event handler
442       * @param  {function} handler
443       */
444
445
446      proxy.off = function (handler) {
447        // If no arguments supplied, clear all handlers
448        if (!arguments.length) {
449          handlers = [];
450          return;
451        } // Otherwise, remove handler from the list
452
453
454        handlers = _.filter(handlers, function (h) {
455          return h !== handler;
456        });
457      };
458
459      return proxy;
460    } // Webflow.location - Wrap window.location in api
461
462
463    Webflow.location = function (url) {
464      window.location = url;
465    };
466
467    if (Webflow.env()) {
468      // Ignore redirects inside a Webflow design/edit environment
469      Webflow.location = function () { };
470    } // Webflow.ready - Call primary and secondary handlers
471
472
473    Webflow.ready = function () {
474      domready = true; // Restore modules after destroy
475
476      if (destroyed) {
477        restoreModules(); // Otherwise run primary ready methods
478      } else {
479        _.each(primary, callReady);
480      } // Run secondary ready methods
481
482
483      _.each(secondary, callReady); // Trigger resize
484
485
486      Webflow.resize.up();
487    };
488
489    function callReady(readyFn) {
490      isFunction(readyFn) && readyFn();
491    }
492
493    function restoreModules() {
494      destroyed = false;
495
496      _.each(modules, bindModule);
497    }
498    /**
499     * Webflow.load - Add a window load handler that will run even if load event has already happened
500     * @param  {function} handler
501     */
502
503
504    var deferLoad;
505
506    Webflow.load = function (handler) {
507      deferLoad.then(handler);
508    };
509
510    function bindLoad() {
511      // Reject any previous deferred (to support destroy)
512      if (deferLoad) {
513        deferLoad.reject();
514        $win.off('load', deferLoad.resolve);
515      } // Create deferred and bind window load event
516
517
518      deferLoad = new $.Deferred();
519      $win.on('load', deferLoad.resolve);
520    } // Webflow.destroy - Trigger a destroy event for all modules
521
522
523    Webflow.destroy = function (options) {
524      options = options || {};
525      destroyed = true;
526      $win.triggerHandler('__wf_destroy'); // Allow domready reset for tests
527
528      if (options.domready != null) {
529        domready = options.domready;
530      } // Unbind modules
531
532
533      _.each(modules, unbindModule); // Clear any proxy event handlers
534
535
536      Webflow.resize.off();
537      Webflow.scroll.off();
538      Webflow.redraw.off(); // Clear any queued ready methods
539
540      primary = [];
541      secondary = []; // If load event has not yet fired, replace the deferred
542
543      if (deferLoad.state() === 'pending') {
544        bindLoad();
545      }
546    }; // Listen for domready
547
548
549    $(Webflow.ready); // Listen for window.onload and resolve deferred
550
551    bindLoad(); // Export commonjs module
552
553    module.exports = window.Webflow = Webflow;
554
555    /***/
556  }),
557/* 4 */
558/***/ (function (module, exports, __webpack_require__) {
559
560/* WEBPACK VAR INJECTION */(function (global) {
561      var O = 'object';
562      var check = function (it) {
563        return it && it.Math == Math && it;
564      };
565
566      // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
567      module.exports =
568        // eslint-disable-next-line no-undef
569        check(typeof globalThis == O && globalThis) ||
570        check(typeof window == O && window) ||
571        check(typeof self == O && self) ||
572        check(typeof global == O && global) ||
573        // eslint-disable-next-line no-new-func
574        Function('return this')();
575
576      /* WEBPACK VAR INJECTION */
577    }.call(this, __webpack_require__(23)))
578
579    /***/
580  }),
581/* 5 */
582/***/ (function (module, exports, __webpack_require__) {
583
584    var freeGlobal = __webpack_require__(90);
585
586    /** Detect free variable `self`. */
587    var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
588
589    /** Used as a reference to the global object. */
590    var root = freeGlobal || freeSelf || Function('return this')();
591
592    module.exports = root;
593
594
595    /***/
596  }),
597/* 6 */
vendor: 3,766 bytes, lines 598-744
598/***/ (function (module, exports) {
599
600    /**
601     * Checks if `value` is the
602     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
603     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
604     *
605     * @static
606     * @memberOf _
607     * @since 0.1.0
608     * @category Lang
609     * @param {*} value The value to check.
610     * @returns {boolean} Returns `true` if `value` is an object, else `false`.
611     * @example
612     *
613     * _.isObject({});
614     * // => true
615     *
616     * _.isObject([1, 2, 3]);
617     * // => true
618     *
619     * _.isObject(_.noop);
620     * // => true
621     *
622     * _.isObject(null);
623     * // => false
624     */
625    function isObject(value) {
626      var type = typeof value;
627      return value != null && (type == 'object' || type == 'function');
628    }
629
630    module.exports = isObject;
631
632
633    /***/
634  }),
635/* 7 */
636/***/ (function (module, exports, __webpack_require__) {
637
638    var baseMatches = __webpack_require__(178),
639      baseMatchesProperty = __webpack_require__(232),
640      identity = __webpack_require__(60),
641      isArray = __webpack_require__(1),
642      property = __webpack_require__(241);
643
644    /**
645     * The base implementation of `_.iteratee`.
646     *
647     * @private
648     * @param {*} [value=_.identity] The value to convert to an iteratee.
649     * @returns {Function} Returns the iteratee.
650     */
651    function baseIteratee(value) {
652      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
653      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
654      if (typeof value == 'function') {
655        return value;
656      }
657      if (value == null) {
658        return identity;
659      }
660      if (typeof value == 'object') {
661        return isArray(value)
662          ? baseMatchesProperty(value[0], value[1])
663          : baseMatches(value);
664      }
665      return property(value);
666    }
667
668    module.exports = baseIteratee;
669
670
671    /***/
672  }),
673/* 8 */
674/***/ (function (module, exports, __webpack_require__) {
675
676    var baseIsNative = __webpack_require__(190),
677      getValue = __webpack_require__(195);
678
679    /**
680     * Gets the native function at `key` of `object`.
681     *
682     * @private
683     * @param {Object} object The object to query.
684     * @param {string} key The key of the method to get.
685     * @returns {*} Returns the function if it's native, else `undefined`.
686     */
687    function getNative(object, key) {
688      var value = getValue(object, key);
689      return baseIsNative(value) ? value : undefined;
690    }
691
692    module.exports = getNative;
693
694
695    /***/
696  }),
697/* 9 */
698/***/ (function (module, exports) {
699
700    /**
701     * Checks if `value` is object-like. A value is object-like if it's not `null`
702     * and has a `typeof` result of "object".
703     *
704     * @static
705     * @memberOf _
706     * @since 4.0.0
707     * @category Lang
708     * @param {*} value The value to check.
709     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
710     * @example
711     *
712     * _.isObjectLike({});
713     * // => true
714     *
715     * _.isObjectLike([1, 2, 3]);
716     * // => true
717     *
718     * _.isObjectLike(_.noop);
719     * // => false
720     *
721     * _.isObjectLike(null);
722     * // => false
723     */
724    function isObjectLike(value) {
725      return value != null && typeof value == 'object';
726    }
727
728    module.exports = isObjectLike;
729
730
731    /***/
732  }),
733/* 10 */
734/***/ (function (module, exports, __webpack_require__) {
735
736    "use strict";
737
738
739    var _interopRequireWildcard = __webpack_require__(14);
740
741    Object.defineProperty(exports, "__esModule", {
742      value: true
743    });
744    exports.IX2VanillaUtils = exports.IX2VanillaPlugins = exports.IX2ElementsReducer = exports.IX2EasingUtils = exports.IX2Easings = exp
744orts.IX2BrowserSupport = void 0;
745
746    var IX2BrowserSupport = _interopRequireWildcard(__webpack_require__(45));
747
748    exports.IX2BrowserSupport = IX2BrowserSupport;
749
750    var IX2Easings = _interopRequireWildcard(__webpack_require__(107));
751
752    exports.IX2Easings = IX2Easings;
753
754    var IX2EasingUtils = _interopRequireWildcard(__webpack_require__(109));
755
756    exports.IX2EasingUtils = IX2EasingUtils;
757
758    var IX2ElementsReducer = _interopRequireWildcard(__webpack_require__(248));
759
760    exports.IX2ElementsReducer = IX2ElementsReducer;
761
762    var IX2VanillaPlugins = _interopRequireWildcard(__webpack_require__(111));
763
764    exports.IX2VanillaPlugins = IX2VanillaPlugins;
765
766    var IX2VanillaUtils = _interopRequireWildcard(__webpack_require__(250));
767
768    exports.IX2VanillaUtils = IX2VanillaUtils;
769
770    /***/
771  }),
772/* 11 */
773/***/ (function (module, exports, __webpack_require__) {
774
775    var Symbol = __webpack_require__(20),
776      getRawTag = __webpack_require__(191),
777      objectToString = __webpack_require__(192);
778
779    /** `Object#toString` result references. */
780    var nullTag = '[object Null]',
781      undefinedTag = '[object Undefined]';
782
783    /** Built-in value references. */
784    var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
785
786    /**
787     * The base implementation of `getTag` without fallbacks for buggy environments.
788     *
789     * @private
790     * @param {*} value The value to query.
791     * @returns {string} Returns the `toStringTag`.
792     */
793    function baseGetTag(value) {
794      if (value == null) {
795        return value === undefined ? undefinedTag : nullTag;
796      }
797      return (symToStringTag && symToStringTag in Object(value))
798        ? getRawTag(value)
799        : objectToString(value);
800    }
801
802    module.exports = baseGetTag;
803
804
805    /***/
806  }),
807/* 12 */
808/***/ (function (module, exports, __webpack_require__) {
809
810    var isFunction = __webpack_require__(89),
811      isLength = __webpack_require__(53);
812
813    /**
814     * Checks if `value` is array-like. A value is considered array-like if it's
815     * not a function and has a `value.length` that's an integer greater than or
816     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
817     *
818     * @static
819     * @memberOf _
820     * @since 4.0.0
821     * @category Lang
822     * @param {*} value The value to check.
823     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
824     * @example
825     *
826     * _.isArrayLike([1, 2, 3]);
827     * // => true
828     *
829     * _.isArrayLike(document.body.children);
830     * // => true
831     *
832     * _.isArrayLike('abc');
833     * // => true
834     *
835     * _.isArrayLike(_.noop);
836     * // => false
837     */
838    function isArrayLike(value) {
839      return value != null && isLength(value.length) && !isFunction(value);
840    }
841
842    module.exports = isArrayLike;
843
844
845    /***/
846  }),
847/* 13 */
848/***/ (function (module, exports) {
849
850    function _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); }
851
852    function _typeof(obj) {
853      if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
854        module.exports = _typeof = function _typeof(obj) {
855          return _typeof2(obj);
856        };
857      } else {
858        module.exports = _typeof = function _typeof(obj) {
859          return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
860        };
861      }
862
863      return _typeof(obj);
864    }
865
866    module.exports = _typeof;
867
868    /***/
869  }),
870/* 14 */
871/***/ (function (module, exports) {
872
873    function _interopRequireWildcard(obj) {
874      if (obj && obj.__esModule) {
875        return obj;
876      } else {
877        var newObj = {};
878
879        if (obj != null) {
880          for (var key in obj) {
881            if (Object.prototype.hasOwnProperty.call(obj, key)) {
882              var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
883
884              if (desc.get || desc.set) {
885                Object.defineProperty(newObj, key, desc);
886              } else {
887                newObj[key] = obj[key];
888              }
889            }
890          }
891        }
892
893        newObj["default"] = obj;
894        return newObj;
895      }
896    }
897
898    module.exports = _interopRequireWildcard;
899
900    /***/
901  }),
902/* 15 */
903/***/ (function (module, exports, __webpack_require__) {
904
905    var fails = __webpack_require__(16);
906
907    // Thank's IE8 for his funny defineProperty
908    module.exports = !fails(function () {
909      return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
910    });
911
912
913    /***/
914  }),
915/* 16 */
916/***/ (function (module, exports) {
917
918    module.exports = function (exec) {
919      try {
920        return !!exec();
921      } catch (error) {
922        return true;
923      }
924    };
925
926
927    /***/
928  }),
929/* 17 */
930/***/ (function (module, exports) {
931
932    var hasOwnProperty = {}.hasOwnProperty;
933
934    module.exports = function (it, key) {
935      return hasOwnProperty.call(it, key);
936    };
937
938
939    /***/
940  }),
941/* 18 */
942/***/ (function (module, exports, __webpack_require__) {
943
944    var DESCRIPTORS = __webpack_require__(15);
945    var definePropertyModule = __webpack_require__(39);
946    var createPropertyDescriptor = __webpack_require__(68);
947
948    module.exports = DESCRIPTORS ? function (object, key, value) {
949      return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
950    } : function (object, key, value) {
951      object[key] = value;
952      return object;
953    };
954
955
956    /***/
957  }),
958/* 19 */
959/***/ (function (module, exports, __webpack_require__) {
960
961    "use strict";
962
963
964    Object.defineProperty(exports, "__esModule", {
965      value: true
966    });
967
968    var _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; };
969
970    exports.clone = clone;
971    exports.addLast = addLast;
972    exports.addFirst = addFirst;
973    exports.removeLast = removeLast;
974    exports.removeFirst = removeFirst;
975    exports.insert = insert;
976    exports.removeAt = removeAt;
977    exports.replaceAt = replaceAt;
978    exports.getIn = getIn;
979    exports.set = set;
980    exports.setIn = setIn;
981    exports.update = update;
982    exports.updateIn = updateIn;
983    exports.merge = merge;
984    exports.mergeDeep = mergeDeep;
985    exports.mergeIn = mergeIn;
986    exports.omit = omit;
987    exports.addDefaults = addDefaults;
988
989
990    /*!
991     * Timm
992     *
993     * Immutability helpers with fast reads and acceptable writes.
994     *
995     * @copyright Guillermo Grau Panea 2016
996     * @license MIT
997     */
998
999    var INVALID_ARGS = 'INVALID_ARGS';
1000
1001    // ===============================================
1002    // ### Helpers
1003    // ===============================================
1004
1005
1006    function throwStr(msg) {
1007      throw new Error(msg);
1008    }
1009
1010    function getKeysAndSymbols(obj) {
1011      var keys = Object.keys(obj);
1012      if (Object.getOwnPropertySymbols) {
1013        return keys.concat(Object.getOwnPropertySymbols(obj));
1014      }
1015      return keys;
1016    }
1017
1018    var hasOwnProperty = {}.hasOwnProperty;
1019
1020    function clone(obj) {
1021      if (Array.isArray(obj)) return obj.slice();
1022      var keys = getKeysAndSymbols(obj);
1023      var out = {};
1024      for (var i = 0; i < keys.length; i++) {
1025        var key = keys[i];
1026        out[key] = obj[key];
1027      }
1028      return out;
1029    }
1030
1031    function doMerge(fAddDefaults, fDeep, first) {
1032      var out = first;
1033      !(out != null) && throwStr(false ? undefined : INVALID_ARGS);
1034      var fChanged = false;
1035
1036      for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
1037        rest[_key - 3] = arguments[_key];
1038      }
1039
1040      for (var idx = 0; idx < rest.length; idx++) {
1041        var obj = rest[idx];
1042        if (obj == null) continue;
1043        var keys = getKeysAndSymbols(obj);
1044        if (!keys.length) continue;
1045        for (var j = 0; j <= keys.length; j++) {
1046          var key = keys[j];
1047          if (fAddDefaults && out[key] !== undefined) continue;
1048          var nextVal = obj[key];
1049          if (fDeep && isObject(out[key]) && isObject(nextVal)) {
1050            nextVal = doMerge(fAddDefaults, fDeep, out[key], nextVal);
1051          }
1052          if (nextVal === undefined || nextVal === out[key]) continue;
1053          if (!fChanged) {
1054            fChanged = true;
1055            out = clone(out);
1056          }
1057          out[key] = nextVal;
1058        }
1059      }
1060      return out;
1061    }
1062
1063    function isObject(o) {
1064      var type = typeof o === 'undefined' ? 'undefined' : _typeof(o);
1065      return o != null && (type === 'object' || type === 'function');
1066    }
1067
1068    // _deepFreeze = (obj) ->
1069    //   Object.freeze obj
1070    //   for key in Object.getOwnPropertyNames obj
1071    //     val = obj[key]
1072    //     if isObject(val) and not Object.isFrozen val
1073    //       _deepFreeze val
1074    //   obj
1075
1076    // ===============================================
1077    // -- ### Arrays
1078    // ===============================================
1079
1080    // -- #### addLast()
1081    // -- Returns a new array with an appended item or items.
1082    // --
1083    // -- Usage: `addLast<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1084    // --
1085    // -- ```js
1086    // -- arr = ['a', 'b']
1087    // -- arr2 = addLast(arr, 'c')
1088    // -- // ['a', 'b', 'c']
1089    // -- arr2 === arr
1090    // -- // false
1091    // -- arr3 = addLast(arr, ['c', 'd'])
1092    // -- // ['a', 'b', 'c', 'd']
1093    // -- ```
1094    // `array.concat(val)` also handles the scalar case,
1095    // but is apparently very slow
1096    function addLast(array, val) {
1097      if (Array.isArray(val)) return array.concat(val);
1098      return array.concat([val]);
1099    }
1100
1101    // -- #### addFirst()
1102    // -- Returns a new array with a prepended item or items.
1103    // --
1104    // -- Usage: `addFirst<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1105    // --
1106    // -- ```js
1107    // -- arr = ['a', 'b']
1108    // -- arr2 = addFirst(arr, 'c')
1109    // -- // ['c', 'a', 'b']
1110    // -- arr2 === arr
1111    // -- // false
1112    // -- arr3 = addFirst(arr, ['c', 'd'])
1113    // -- // ['c', 'd', 'a', 'b']
1114    // -- ```
1115    function addFirst(array, val) {
1116      if (Array.isArray(val)) return val.concat(array);
1117      return [val].concat(array);
1118    }
1119
1120    // -- #### removeLast()
1121    // -- Returns a new array removing the last item.
1122    // --
1123    // -- Usage: `removeLast<T>(array: Array<T>): Array<T>`
1124    // --
1125    // -- ```js
1126    // -- arr = ['a', 'b']
1127    // -- arr2 = removeLast(arr)
1128    // -- // ['a']
1129    // -- arr2 === arr
1130    // -- // false
1131    // --
1132    // -- // The same array is returned if there are no changes:
1133    // -- arr3 = []
1134    // -- removeLast(arr3) === arr3
1135    // -- // true
1136    // -- ```
1137    function removeLast(array) {
1138      if (!array.length) return array;
1139      return array.slice(0, array.length - 1);
1140    }
1141
1142    // -- #### removeFirst()
1143    // -- Returns a new array removing the first item.
1144    // --
1145    // -- Usage: `removeFirst<T>(array: Array<T>): Array<T>`
1146    // --
1147    // -- ```js
1148    // -- arr = ['a', 'b']
1149    // -- arr2 = removeFirst(arr)
1150    // -- // ['b']
1151    // -- arr2 === arr
1152    // -- // false
1153    // --
1154    // -- // The same array is returned if there are no changes:
1155    // -- arr3 = []
1156    // -- removeFirst(arr3) === arr3
1157    // -- // true
1158    // -- ```
1159    function removeFirst(array) {
1160      if (!array.length) return array;
1161      return array.slice(1);
1162    }
1163
1164    // -- #### insert()
1165    // -- Returns a new array obtained by inserting an item or items
1166    // -- at a specified index.
1167    // --
1168    // -- Usage: `insert<T>(array: Array<T>, idx: number, val: Array<T>|T): Array<T>`
1169    // --
1170    // -- ```js
1171    // -- arr = ['a', 'b', 'c']
1172    // -- arr2 = insert(arr, 1, 'd')
1173    // -- // ['a', 'd', 'b', 'c']
1174    // -- arr2 === arr
1175    // -- // false
1176    // -- insert(arr, 1, ['d', 'e'])
1177    // -- // ['a', 'd', 'e', 'b', 'c']
1178    // -- ```
1179    function insert(array, idx, val) {
1180      return array.slice(0, idx).concat(Array.isArray(val) ? val : [val]).concat(array.slice(idx));
1181    }
1182
1183    // -- #### removeAt()
1184    // -- Returns a new array obtained by removing an item at
1185    // -- a specified index.
1186    // --
1187    // -- Usage: `removeAt<T>(array: Array<T>, idx: number): Array<T>`
1188    // --
1189    // -- ```js
1190    // -- arr = ['a', 'b', 'c']
1191    // -- arr2 = removeAt(arr, 1)
1192    // -- // ['a', 'c']
1193    // -- arr2 === arr
1194    // -- // false
1195    // --
1196    // -- // The same array is returned if there are no changes:
1197    // -- removeAt(arr, 4) === arr
1198    // -- // true
1199    // -- ```
1200    function removeAt(array, idx) {
1201      if (idx >= array.length || idx < 0) return array;
1202      return array.slice(0, idx).concat(array.slice(idx + 1));
1203    }
1204
1205    // -- #### replaceAt()
1206    // -- Returns a new array obtained by replacing an item at
1207    // -- a specified index. If the provided item is the same as
1208    // -- (*referentially equal to*) the previous item at that position,
1209    // -- the original array is returned.
1210    // --
1211    // -- Usage: `replaceAt<T>(array: Array<T>, idx: number, newItem: T): Array<T>`
1212    // --
1213    // -- ```js
1214    // -- arr = ['a', 'b', 'c']
1215    // -- arr2 = replaceAt(arr, 1, 'd')
1216    // -- // ['a', 'd', 'c']
1217    // -- arr2 === arr
1218    // -- // false
1219    // --
1220    // -- // The same object is returned if there are no changes:
1221    // -- replaceAt(arr, 1, 'b') === arr
1222    // -- // true
1223    // -- ```
1224    function replaceAt(array, idx, newItem) {
1225      if (array[idx] === newItem) return array;
1226      var len = array.length;
1227      var result = Array(len);
1228      for (var i = 0; i < len; i++) {
1229        result[i] = array[i];
1230      }
1231      result[idx] = newItem;
1232      return result;
1233    }
1234
1235    // ===============================================
1236    // -- ### Collections (objects and arrays)
1237    // ===============================================
1238    // -- The following types are used throughout this section
1239    // -- ```js
1240    // -- type ArrayOrObject = Array<any>|Object;
1241    // -- type Key = number|string;
1242    // -- ```
1243
1244    // -- #### getIn()
1245    // -- Returns a value from an object at a given path. Works with
1246    // -- nested arrays and objects. If the path does not exist, it returns
1247    // -- `undefined`.
1248    // --
1249    // -- Usage: `getIn(obj: ?ArrayOrObject, path: Array<Key>): any`
1250    // --
1251    // -- ```js
1252    // -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: ['a', 'b', 'c'] }
1253    // -- getIn(obj, ['d', 'd1'])
1254    // -- // 3
1255    // -- getIn(obj, ['e', 1])
1256    // -- // 'b'
1257    // -- ```
1258    function getIn(obj, path) {
1259      !Array.isArray(path) && throwStr(false ? undefined : INVALID_ARGS);
1260      if (obj == null) return undefined;
1261      var ptr = obj;
1262      for (var i = 0; i < path.length; i++) {
1263        var key = path[i];
1264        ptr = ptr != null ? ptr[key] : undefined;
1265        if (ptr === undefined) return ptr;
1266      }
1267      return ptr;
1268    }
1269
1270    // -- #### set()
1271    // -- Returns a new object with a modified attribute.
1272    // -- If the provided value is the same as (*referentially equal to*)
1273    // -- the previous value, the original object is returned.
1274    // --
1275    // -- Usage: `set<T>(obj: ?T, key: Key, val: any): T`
1276    // --
1277    // -- ```js
1278    // -- obj = { a: 1, b: 2, c: 3 }
1279    // -- obj2 = set(obj, 'b', 5)
1280    // -- // { a: 1, b: 5, c: 3 }
1281    // -- obj2 === obj
1282    // -- // false
1283    // --
1284    // -- // The same object is returned if there are no changes:
1285    // -- set(obj, 'b', 2) === obj
1286    // -- // true
1287    // -- ```
1288    function set(obj, key, val) {
1289      var fallback = typeof key === 'number' ? [] : {};
1290      var finalObj = obj == null ? fallback : obj;
1291      if (finalObj[key] === val) return finalObj;
1292      var obj2 = clone(finalObj);
1293      obj2[key] = val;
1294      return obj2;
1295    }
1296
1297    // -- #### setIn()
1298    // -- Returns a new object with a modified **nested** attribute.
1299    // --
1300    // -- Notes:
1301    // --
1302    // -- * If the provided value is the same as (*referentially equal to*)
1303    // -- the previous value, the original object is returned.
1304    // -- * If the path does not exist, it will be created before setting
1305    // -- the new value.
1306    // --
1307    // -- Usage: `setIn<T: ArrayOrObject>(obj: T, path: Array<Key>, val: any): T`
1308    // --
1309    // -- ```js
1310    // -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1311    // -- obj2 = setIn(obj, ['d', 'd1'], 4)
1312    // -- // { a: 1, b: 2, d: { d1: 4, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1313    // -- obj2 === obj
1314    // -- // false
1315    // -- obj2.d === obj.d
1316    // -- // false
1317    // -- obj2.e === obj.e
1318    // -- // true
1319    // --
1320    // -- // The same object is returned if there are no changes:
1321    // -- obj3 = setIn(obj, ['d', 'd1'], 3)
1322    // -- // { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1323    // -- obj3 === obj
1324    // -- // true
1325    // -- obj3.d === obj.d
1326    // -- // true
1327    // -- obj3.e === obj.e
1328    // -- // true
1329    // --
1330    // -- // ... unknown paths create intermediate keys. Numeric segments are treated as array indices:
1331    // -- setIn({ a: 3 }, ['unknown', 0, 'path'], 4)
1332    // -- // { a: 3, unknown: [{ path: 4 }] }
1333    // -- ```
1334    function doSetIn(obj, path, val, idx) {
1335      var newValue = void 0;
1336      var key = path[idx];
1337      if (idx === path.length - 1) {
1338        newValue = val;
1339      } else {
1340        var nestedObj = isObject(obj) && isObject(obj[key]) ? obj[key] : typeof path[idx + 1] === 'number' ? [] : {};
1341        newValue = doSetIn(nestedObj, path, val, idx + 1);
1342      }
1343      return set(obj, key, newValue);
1344    }
1345
1346    function setIn(obj, path, val) {
1347      if (!path.length) return val;
1348      return doSetIn(obj, path, val, 0);
1349    }
1350
1351    // -- #### update()
1352    // -- Returns a new object with a modified attribute,
1353    // -- calculated via a user-provided callback based on the current value.
1354    // -- If the calculated value is the same as (*referentially equal to*)
1355    // -- the previous value, the original object is returned.
1356    // --
1357    // -- Usage: `update<T: ArrayOrObject>(obj: T, key: Key,
1358    // -- fnUpdate: (prevValue: any) => any): T`
1359    // --
1360    // -- ```js
1361    // -- obj = { a: 1, b: 2, c: 3 }
1362    // -- obj2 = update(obj, 'b', (val) => val + 1)
1363    // -- // { a: 1, b: 3, c: 3 }
1364    // -- obj2 === obj
1365    // -- // false
1366    // --
1367    // -- // The same object is returned if there are no changes:
1368    // -- update(obj, 'b', (val) => val) === obj
1369    // -- // true
1370    // -- ```
1371    function update(obj, key, fnUpdate) {
1372      var prevVal = obj == null ? undefined : obj[key];
1373      var nextVal = fnUpdate(prevVal);
1374      return set(obj, key, nextVal);
1375    }
1376
1377    // -- #### updateIn()
1378    // -- Returns a new object with a modified **nested** attribute,
1379    // -- calculated via a user-provided callback based on the current value.
1380    // -- If the calculated value is the same as (*referentially equal to*)
1381    // -- the previous value, the original object is returned.
1382    // --
1383    // -- Usage: `updateIn<T: ArrayOrObject>(obj: T, path: Array<Key>,
1384    // -- fnUpdate: (prevValue: any) => any): T`
1385    // --
1386    // -- ```js
1387    // -- obj = { a: 1, d: { d1: 3, d2: 4 } }
1388    // -- obj2 = updateIn(obj, ['d', 'd1'], (val) => val + 1)
1389    // -- // { a: 1, d: { d1: 4, d2: 4 } }
1390    // -- obj2 === obj
1391    // -- // false
1392    // --
1393    // -- // The same object is returned if there are no changes:
1394    // -- obj3 = updateIn(obj, ['d', 'd1'], (val) => val)
1395    // -- // { a: 1, d: { d1: 3, d2: 4 } }
1396    // -- obj3 === obj
1397    // -- // true
1398    // -- ```
1399    function updateIn(obj, path, fnUpdate) {
1400      var prevVal = getIn(obj, path);
1401      var nextVal = fnUpdate(prevVal);
1402      return setIn(obj, path, nextVal);
1403    }
1404
1405    // -- #### merge()
1406    // -- Returns a new object built as follows: the overlapping keys from the
1407    // -- second one overwrite the corresponding entries from the first one.
1408    // -- Similar to `Object.assign()`, but immutable.
1409    // --
1410    // -- Usage:
1411    // --
1412    // -- * `merge(obj1: Object, obj2: ?Object): Object`
1413    // -- * `merge(obj1: Object, ...objects: Array<?Object>): Object`
1414    // --
1415    // -- The unmodified `obj1` is returned if `obj2` does not *provide something
1416    // -- new to* `obj1`, i.e. if either of the following
1417    // -- conditions are true:
1418    // --
1419    // -- * `obj2` is `null` or `undefined`
1420    // -- * `obj2` is an object, but it is empty
1421    // -- * All attributes of `obj2` are `undefined`
1422    // -- * All attributes of `obj2` are referentially equal to the
1423    // --   corresponding attributes of `obj1`
1424    // --
1425    // -- Note that `undefined` attributes in `obj2` do not modify the
1426    // -- corresponding attributes in `obj1`.
1427    // --
1428    // -- ```js
1429    // -- obj1 = { a: 1, b: 2, c: 3 }
1430    // -- obj2 = { c: 4, d: 5 }
1431    // -- obj3 = merge(obj1, obj2)
1432    // -- // { a: 1, b: 2, c: 4, d: 5 }
1433    // -- obj3 === obj1
1434    // -- // false
1435    // --
1436    // -- // The same object is returned if there are no changes:
1437    // -- merge(obj1, { c: 3 }) === obj1
1438    // -- // true
1439    // -- ```
1440    function merge(a, b, c, d, e, f) {
1441      for (var _len2 = arguments.length, rest = Array(_len2 > 6 ? _len2 - 6 : 0), _key2 = 6; _key2 < _len2; _key2++) {
1442        rest[_key2 - 6] = arguments[_key2];
1443      }
1444
1445      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);
1446    }
1447
1448    // -- #### mergeDeep()
1449    // -- Returns a new object built as follows: the overlapping keys from the
1450    // -- second one overwrite the corresponding entries from the first one.
1451    // -- If both the first and second entries are objects they are merged recursively.
1452    // -- Similar to `Object.assign()`, but immutable, and deeply merging.
1453    // --
1454    // -- Usage:
1455    // --
1456    // -- * `mergeDeep(obj1: Object, obj2: ?Object): Object`
1457    // -- * `mergeDeep(obj1: Object, ...objects: Array<?Object>): Object`
1458    // --
1459    // -- The unmodified `obj1` is returned if `obj2` does not *provide something
1460    // -- new to* `obj1`, i.e. if either of the following
1461    // -- conditions are true:
1462    // --
1463    // -- * `obj2` is `null` or `undefined`
1464    // -- * `obj2` is an object, but it is empty
1465    // -- * All attributes of `obj2` are `undefined`
1466    // -- * All attributes of `obj2` are referentially equal to the
1467    // --   corresponding attributes of `obj1`
1468    // --
1469    // -- Note that `undefined` attributes in `obj2` do not modify the
1470    // -- corresponding attributes in `obj1`.
1471    // --
1472    // -- ```js
1473    // -- obj1 = { a: 1, b: 2, c: { a: 1 } }
1474    // -- obj2 = { b: 3, c: { b: 2 } }
1475    // -- obj3 = mergeDeep(obj1, obj2)
1476    // -- // { a: 1, b: 3, c: { a: 1, b: 2 }  }
1477    // -- obj3 === obj1
1478    // -- // false
1479    // --
1480    // -- // The same object is returned if there are no changes:
1481    // -- mergeDeep(obj1, { c: { a: 1 } }) === obj1
1482    // -- // true
1483    // -- ```
1484    function mergeDeep(a, b, c, d, e, f) {
1485      for (var _len3 = arguments.length, rest = Array(_len3 > 6 ? _len3 - 6 : 0), _key3 = 6; _key3 < _len3; _key3++) {
1486        rest[_key3 - 6] = arguments[_key3];
1487      }
1488
1489      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);
1490    }
1491
1492    // -- #### mergeIn()
1493    // -- Similar to `merge()`, but merging the value at a given nested path.
1494    // -- Note that the returned type is the same as that of the first argument.
1495    // --
1496    // -- Usage:
1497    // --
1498    // -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, obj2: ?Object): T`
1499    // -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>,
1500    // -- ...objects: Array<?Object>): T`
1501    // --
1502    // -- ```js
1503    // -- obj1 = { a: 1, d: { b: { d1: 3, d2: 4 } } }
1504    // -- obj2 = { d3: 5 }
1505    // -- obj3 = mergeIn(obj1, ['d', 'b'], obj2)
1506    // -- // { a: 1, d: { b: { d1: 3, d2: 4, d3: 5 } } }
1507    // -- obj3 === obj1
1508    // -- // false
1509    // --
1510    // -- // The same object is returned if there are no changes:
1511    // -- mergeIn(obj1, ['d', 'b'], { d2: 4 }) === obj1
1512    // -- // true
1513    // -- ```
1514    function mergeIn(a, path, b, c, d, e, f) {
1515      var prevVal = getIn(a, path);
1516      if (prevVal == null) prevVal = {};
1517      var nextVal = void 0;
1518
1519      for (var _len4 = arguments.length, rest = Array(_len4 > 7 ? _len4 - 7 : 0), _key4 = 7; _key4 < _len4; _key4++) {
1520        rest[_key4 - 7] = arguments[_key4];
1521      }
1522
1523      if (rest.length) {
1524        nextVal = doMerge.call.apply(doMerge, [null, false, false, prevVal, b, c, d, e, f].concat(rest));
1525      } else {
1526        nextVal = doMerge(false, false, prevVal, b, c, d, e, f);
1527      }
1528      return setIn(a, path, nextVal);
1529    }
1530
1531    // -- #### omit()
1532    // -- Returns an object excluding one or several attributes.
1533    // --
1534    // -- Usage: `omit(obj: Object, attrs: Array<string>|string): Object`
1535    //
1536    // -- ```js
1537    // -- obj = { a: 1, b: 2, c: 3, d: 4 }
1538    // -- omit(obj, 'a')
1539    // -- // { b: 2, c: 3, d: 4 }
1540    // -- omit(obj, ['b', 'c'])
1541    // -- // { a: 1, d: 4 }
1542    // --
1543    // -- // The same object is returned if there are no changes:
1544    // -- omit(obj, 'z') === obj1
1545    // -- // true
1546    // -- ```
1547    function omit(obj, attrs) {
1548      var omitList = Array.isArray(attrs) ? attrs : [attrs];
1549      var fDoSomething = false;
1550      for (var i = 0; i < omitList.length; i++) {
1551        if (hasOwnProperty.call(obj, omitList[i])) {
1552          fDoSomething = true;
1553          break;
1554        }
1555      }
1556      if (!fDoSomething) return obj;
1557      var out = {};
1558      var keys = getKeysAndSymbols(obj);
1559      for (var _i = 0; _i < keys.length; _i++) {
1560        var key = keys[_i];
1561        if (omitList.indexOf(key) >= 0) continue;
1562        out[key] = obj[key];
1563      }
1564      return out;
1565    }
1566
1567    // -- #### addDefaults()
1568    // -- Returns a new object built as follows: `undefined` keys in the first one
1569    // -- are filled in with the corresponding values from the second one
1570    // -- (even if they are `null`).
1571    // --
1572    // -- Usage:
1573    // --
1574    // -- * `addDefaults(obj: Object, defaults: Object): Object`
1575    // -- * `addDefaults(obj: Object, ...defaultObjects: Array<?Object>): Object`
1576    // --
1577    // -- ```js
1578    // -- obj1 = { a: 1, b: 2, c: 3 }
1579    // -- obj2 = { c: 4, d: 5, e: null }
1580    // -- obj3 = addDefaults(obj1, obj2)
1581    // -- // { a: 1, b: 2, c: 3, d: 5, e: null }
1582    // -- obj3 === obj1
1583    // -- // false
1584    // --
1585    // -- // The same object is returned if there are no changes:
1586    // -- addDefaults(obj1, { c: 4 }) === obj1
1587    // -- // true
1588    // -- ```
1589    function addDefaults(a, b, c, d, e, f) {
1590      for (var _len5 = arguments.length, rest = Array(_len5 > 6 ? _len5 - 6 : 0), _key5 = 6; _key5 < _len5; _key5++) {
1591        rest[_key5 - 6] = arguments[_key5];
1592      }
1593
1594      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);
1595    }
1596
1597    // ===============================================
1598    // ### Public API
1599    // ===============================================
1600    var timm = {
1601      clone: clone,
1602      addLast: addLast,
1603      addFirst: addFirst,
1604      removeLast: removeLast,
1605      removeFirst: removeFirst,
1606      insert: insert,
1607      removeAt: removeAt,
1608      replaceAt: replaceAt,
1609
1610      getIn: getIn,
1611      // eslint-disable-next-line object-shorthand
1612      set: set, // so that flow doesn't complain
1613      setIn: setIn,
1614      update: update,
1615      updateIn: updateIn,
1616      merge: merge,
1617      mergeDeep: mergeDeep,
1618      mergeIn: mergeIn,
1619      omit: omit,
1620      addDefaults: addDefaults
1621    };
1622
1623    exports.default = timm;
1624
1625
1626    /***/
1627  }),
1628/* 20 */
1629/***/ (function (module, exports, __webpack_require__) {
1630
1631    var root = __webpack_require__(5);
1632
1633    /** Built-in value references. */
1634    var Symbol = root.Symbol;
1635
1636    module.exports = Symbol;
1637
1638
1639    /***/
1640  }),
1641/* 21 */
1642/***/ (function (module, exports, __webpack_require__) {
1643
1644    var isSymbol = __webpack_require__(36);
1645
1646    /** Used as references for various `Number` constants. */
1647    var INFINITY = 1 / 0;
1648
1649    /**
1650     * Converts `value` to a string key if it's not a string or symbol.
1651     *
1652     * @private
1653     * @param {*} value The value to inspect.
1654     * @returns {string|symbol} Returns the key.
1655     */
1656    function toKey(value) {
1657      if (typeof value == 'string' || isSymbol(value)) {
1658        return value;
1659      }
1660      var result = (value + '');
1661      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
1662    }
1663
1664    module.exports = toKey;
1665
1666
1667    /***/
1668  }),
1669/* 22 */
1670/***/ (function (module, exports, __webpack_require__) {
1671
1672    "use strict";
1673    // @wf-will-never-add-flow-to-this-file
1674
1675    /* globals window, document */
1676
1677    /* eslint-disable no-var */
1678    // eslint-disable-next-line strict
1679
1680
1681    var IXEvents = __webpack_require__(37);
1682
1683    function dispatchCustomEvent(element, eventName) {
1684      var event = document.createEvent('CustomEvent');
1685      event.initCustomEvent(eventName, true, true, null);
1686      element.dispatchEvent(event);
1687    }
1688    /**
1689     * Webflow: IX Event triggers for other modules
1690     */
1691
1692
1693    var $ = window.jQuery;
1694    var api = {};
1695    var namespace = '.w-ix';
1696    var eventTriggers = {
1697      reset: function reset(i, el) {
1698        IXEvents.triggers.reset(i, el);
1699      },
1700      intro: function intro(i, el) {
1701        IXEvents.triggers.intro(i, el);
1702        dispatchCustomEvent(el, 'COMPONENT_ACTIVE');
1703      },
1704      outro: function outro(i, el) {
1705        IXEvents.triggers.outro(i, el);
1706        dispatchCustomEvent(el, 'COMPONENT_INACTIVE');
1707      }
1708    };
1709    api.triggers = {};
1710    api.types = {
1711      INTRO: 'w-ix-intro' + namespace,
1712      OUTRO: 'w-ix-outro' + namespace
1713    };
1714    $.extend(api.triggers, eventTriggers);
1715    module.exports = api;
1716
1717    /***/
1718  }),
1719/* 23 */
1720/***/ (function (module, exports) {
1721
1722    var g;
1723
1724    // This works in non-strict mode
1725    g = (function () {
1726      return this;
1727    })();
1728
1729    try {
1730      // This works if eval is allowed (see CSP)
1731      g = g || new Function("return this")();
1732    } catch (e) {
1733      // This works if the window reference is available
1734      if (typeof window === "object") g = window;
1735    }
1736
1737    // g can still be undefined, but nothing to do about it...
1738    // We return undefined, instead of nothing here, so it's
1739    // easier to handle this case. if(!global) { ...}
1740
1741    module.exports = g;
1742
1743
1744    /***/
1745  }),
1746/* 24 */
1747/***/ (function (module, exports) {
1748
1749    module.exports = function (it) {
1750      return typeof it === 'object' ? it !== null : typeof it === 'function';
1751    };
1752
1753
1754    /***/
1755  }),
1756/* 25 */
1757/***/ (function (module, exports, __webpack_require__) {
1758
1759    var isObject = __webpack_require__(24);
1760
1761    module.exports = function (it) {
1762      if (!isObject(it)) {
1763        throw TypeError(String(it) + ' is not an object');
1764      } return it;
1765    };
1766
1767
1768    /***/
1769  }),
1770/* 26 */
1771/***/ (function (module, exports, __webpack_require__) {
1772
1773    var global = __webpack_require__(4);
1774    var setGlobal = __webpack_require__(40);
1775    var IS_PURE = __webpack_require__(137);
1776
1777    var SHARED = '__core-js_shared__';
1778    var store = global[SHARED] || setGlobal(SHARED, {});
1779
1780    (module.exports = function (key, value) {
1781      return store[key] || (store[key] = value !== undefined ? value : {});
1782    })('versions', []).push({
1783      version: '3.1.3',
1784      mode: IS_PURE ? 'pure' : 'global',
1785      copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
1786    });
1787
1788
1789    /***/
1790  }),
1791/* 27 */
1792/***/ (function (module, exports) {
1793
1794    function _defineProperty(obj, key, value) {
1795      if (key in obj) {
1796        Object.defineProperty(obj, key, {
1797          value: value,
1798          enumerable: true,
1799          configurable: true,
1800          writable: true
1801        });
1802      } else {
1803        obj[key] = value;
1804      }
1805
1806      return obj;
1807    }
1808
1809    module.exports = _defineProperty;
1810
1811    /***/
1812  }),
1813/* 28 */
1814/***/ (function (module, exports) {
1815
1816    function _extends() {
1817      module.exports = _extends = Object.assign || function (target) {
1818        for (var i = 1; i < arguments.length; i++) {
1819          var source = arguments[i];
1820
1821          for (var key in source) {
1822            if (Object.prototype.hasOwnProperty.call(source, key)) {
1823              target[key] = source[key];
1824            }
1825          }
1826        }
1827
1828        return target;
1829      };
1830
1831      return _extends.apply(this, arguments);
1832    }
1833
1834    module.exports = _extends;
1835
1836    /***/
1837  }),
1838/* 29 */
1839/***/ (function (module, exports, __webpack_require__) {
1840
1841    var listCacheClear = __webpack_require__(180),
1842      listCacheDelete = __webpack_require__(181),
1843      listCacheGet = __webpack_require__(182),
1844      listCacheHas = __webpack_require__(183),
1845      listCacheSet = __webpack_require__(184);
1846
1847    /**
1848     * Creates an list cache object.
1849     *
1850     * @private
1851     * @constructor
1852     * @param {Array} [entries] The key-value pairs to cache.
1853     */
1854    function ListCache(entries) {
1855      var index = -1,
1856        length = entries == null ? 0 : entries.length;
1857
1858      this.clear();
1859      while (++index < length) {
1860        var entry = entries[index];
1861        this.set(entry[0], entry[1]);
1862      }
1863    }
1864
1865    // Add methods to `ListCache`.
1866    ListCache.prototype.clear = listCacheClear;
1867    ListCache.prototype['delete'] = listCacheDelete;
1868    ListCache.prototype.get = listCacheGet;
1869    ListCache.prototype.has = listCacheHas;
1870    ListCache.prototype.set = listCacheSet;
1871
1872    module.exports = ListCache;
1873
1874
1875    /***/
1876  }),
1877/* 30 */
1878/***/ (function (module, exports, __webpack_require__) {
1879
1880    var eq = __webpack_require__(46);
1881
1882    /**
1883     * Gets the index at which the `key` is found in `array` of key-value pairs.
1884     *
1885     * @private
1886     * @param {Array} array The array to inspect.
1887     * @param {*} key The key to search for.
1888     * @returns {number} Returns the index of the matched value, else `-1`.
1889     */
1890    function assocIndexOf(array, key) {
1891      var length = array.length;
1892      while (length--) {
1893        if (eq(array[length][0], key)) {
1894          return length;
1895        }
1896      }
1897      return -1;
1898    }
1899
1900    module.exports = assocIndexOf;
1901
1902
1903    /***/
1904  }),
1905/* 31 */
1906/***/ (function (module, exports, __webpack_require__) {
1907
1908    var getNative = __webpack_require__(8);
1909
1910    /* Built-in method references that are verified to be native. */
1911    var nativeCreate = getNative(Object, 'create');
1912
1913    module.exports = nativeCreate;
1914
1915
1916    /***/
1917  }),
1918/* 32 */
1919/***/ (function (module, exports, __webpack_require__) {
1920
1921    var isKeyable = __webpack_require__(204);
1922
1923    /**
1924     * Gets the data for `map`.
1925     *
1926     * @private
1927     * @param {Object} map The map to query.
1928     * @param {string} key The reference key.
1929     * @returns {*} Returns the map data.
1930     */
1931    function getMapData(map, key) {
1932      var data = map.__data__;
1933      return isKeyable(key)
1934        ? data[typeof key == 'string' ? 'string' : 'hash']
1935        : data.map;
1936    }
1937
1938    module.exports = getMapData;
1939
1940
1941    /***/
1942  }),
1943/* 33 */
1944/***/ (function (module, exports, __webpack_require__) {
1945
1946    var arrayLikeKeys = __webpack_require__(97),
1947      baseKeys = __webpack_require__(54),
1948      isArrayLike = __webpack_require__(12);
1949
1950    /**
1951     * Creates an array of the own enumerable property names of `object`.
1952     *
1953     * **Note:** Non-object values are coerced to objects. See the
1954     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1955     * for more details.
1956     *
1957     * @static
1958     * @since 0.1.0
1959     * @memberOf _
1960     * @category Object
1961     * @param {Object} object The object to query.
1962     * @returns {Array} Returns the array of property names.
1963     * @example
1964     *
1965     * function Foo() {
1966     *   this.a = 1;
1967     *   this.b = 2;
1968     * }
1969     *
1970     * Foo.prototype.c = 3;
1971     *
1972     * _.keys(new Foo);
1973     * // => ['a', 'b'] (iteration order is not guaranteed)
1974     *
1975     * _.keys('hi');
1976     * // => ['0', '1']
1977     */
1978    function keys(object) {
1979      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
1980    }
1981
1982    module.exports = keys;
1983
1984
1985    /***/
1986  }),
1987/* 34 */
1988/***/ (function (module, exports, __webpack_require__) {
1989
1990    var baseIsArguments = __webpack_require__(222),
1991      isObjectLike = __webpack_require__(9);
1992
1993    /** Used for built-in method references. */
1994    var objectProto = Object.prototype;
1995
1996    /** Used to check objects for own properties. */
1997    var hasOwnProperty = objectProto.hasOwnProperty;
1998
1999    /** Built-in value references. */
2000    var propertyIsEnumerable = objectProto.propertyIsEnumerable;
2001
2002    /**
2003     * Checks if `value` is likely an `arguments` object.
2004     *
2005     * @static
2006     * @memberOf _
2007     * @since 0.1.0
2008     * @category Lang
2009     * @param {*} value The value to check.
2010     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
2011     *  else `false`.
2012     * @example
2013     *
2014     * _.isArguments(function() { return arguments; }());
2015     * // => true
2016     *
2017     * _.isArguments([1, 2, 3]);
2018     * // => false
2019     */
2020    var isArguments = baseIsArguments(function () { return arguments; }()) ? baseIsArguments : function (value) {
2021      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
2022        !propertyIsEnumerable.call(value, 'callee');
2023    };
2024
2025    module.exports = isArguments;
2026
2027
2028    /***/
2029  }),
2030/* 35 */
2031/***/ (function (module, exports, __webpack_require__) {
2032
2033    var isArray = __webpack_require__(1),
2034      isKey = __webpack_require__(59),
2035      stringToPath = __webpack_require__(233),
2036      toString = __webpack_require__(236);
2037
2038    /**
2039     * Casts `value` to a path array if it's not one.
2040     *
2041     * @private
2042     * @param {*} value The value to inspect.
2043     * @param {Object} [object] The object to query keys on.
2044     * @returns {Array} Returns the cast property path array.
2045     */
2046    function castPath(value, object) {
2047      if (isArray(value)) {
2048        return value;
2049      }
2050      return isKey(value, object) ? [value] : stringToPath(toString(value));
2051    }
2052
2053    module.exports = castPath;
2054
2055
2056    /***/
2057  }),
2058/* 36 */
2059/***/ (function (module, exports, __webpack_require__) {
2060
2061    var baseGetTag = __webpack_require__(11),
2062      isObjectLike = __webpack_require__(9);
2063
2064    /** `Object#toString` result references. */
2065    var symbolTag = '[object Symbol]';
2066
2067    /**
2068     * Checks if `value` is classified as a `Symbol` primitive or object.
2069     *
2070     * @static
2071     * @memberOf _
2072     * @since 4.0.0
2073     * @category Lang
2074     * @param {*} value The value to check.
2075     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
2076     * @example
2077     *
2078     * _.isSymbol(Symbol.iterator);
2079     * // => true
2080     *
2081     * _.isSymbol('abc');
2082     * // => false
2083     */
2084    function isSymbol(value) {
2085      return typeof value == 'symbol' ||
2086        (isObjectLike(value) && baseGetTag(value) == symbolTag);
2087    }
2088
2089    module.exports = isSymbol;
2090
2091
2092    /***/
2093  }),
2094/* 37 */
2095/***/ (function (module, exports, __webpack_require__) {
2096
2097    "use strict";
2098    // @wf-will-never-add-flow-to-this-file
2099
2100    /* globals window */
2101
2102    /* eslint-disable no-var */
2103
2104    /**
2105     * Webflow: IX Event triggers for other modules
2106     */
2107    // eslint-disable-next-line strict
2108
2109
2110    var $ = window.jQuery;
2111    var api = {};
2112    var eventQueue = [];
2113    var namespace = '.w-ix';
2114    var eventTriggers = {
2115      reset: function reset(i, el) {
2116        el.__wf_intro = null;
2117      },
2118      intro: function intro(i, el) {
2119        if (el.__wf_intro) {
2120          return;
2121        }
2122
2123        el.__wf_intro = true;
2124        $(el).triggerHandler(api.types.INTRO);
2125      },
2126      outro: function outro(i, el) {
2127        if (!el.__wf_intro) {
2128          return;
2129        }
2130
2131        el.__wf_intro = null;
2132        $(el).triggerHandler(api.types.OUTRO);
2133      }
2134    };
2135    api.triggers = {};
2136    api.types = {
2137      INTRO: 'w-ix-intro' + namespace,
2138      OUTRO: 'w-ix-outro' + namespace
2139    }; // Trigger any events in queue + restore trigger methods
2140
2141    api.init = function () {
2142      var count = eventQueue.length;
2143
2144      for (var i = 0; i < count; i++) {
2145        var memo = eventQueue[i];
2146        memo[0](0, memo[1]);
2147      }
2148
2149      eventQueue = [];
2150      $.extend(api.triggers, eventTriggers);
2151    }; // Replace all triggers with async wrapper to queue events until init
2152
2153
2154    api.async = function () {
2155      for (var key in eventTriggers) {
2156        var func = eventTriggers[key];
2157
2158        if (!eventTriggers.hasOwnProperty(key)) {
2159          continue;
2160        } // Replace trigger method with async wrapper
2161
2162
2163        api.triggers[key] = function (i, el) {
2164          eventQueue.push([func, el]);
2165        };
2166      }
2167    }; // Default triggers to async queue
2168
2169
2170    api.async();
2171    module.exports = api;
2172
2173    /***/
2174  }),
2175/* 38 */
2176/***/ (function (module, exports, __webpack_require__) {
2177
2178    // toObject with fallback for non-array-like ES3 strings
2179    var IndexedObject = __webpack_require__(133);
2180    var requireObjectCoercible = __webpack_require__(135);
2181
2182    module.exports = function (it) {
2183      return IndexedObject(requireObjectCoercible(it));
2184    };
2185
2186
2187    /***/
2188  }),
2189/* 39 */
2190/***/ (function (module, exports, __webpack_require__) {
2191
2192    var DESCRIPTORS = __webpack_require__(15);
2193    var IE8_DOM_DEFINE = __webpack_require__(70);
2194    var anObject = __webpack_require__(25);
2195    var toPrimitive = __webpack_require__(69);
2196
2197    var nativeDefineProperty = Object.defineProperty;
2198
2199    // `Object.defineProperty` method
2200    // https://tc39.github.io/ecma262/#sec-object.defineproperty
2201    exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
2202      anObject(O);
2203      P = toPrimitive(P, true);
2204      anObject(Attributes);
2205      if (IE8_DOM_DEFINE) try {
2206        return nativeDefineProperty(O, P, Attributes);
2207      } catch (error) { /* empty */ }
2208      if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
2209      if ('value' in Attributes) O[P] = Attributes.value;
2210      return O;
2211    };
2212
2213
2214    /***/
2215  }),
2216/* 40 */
2217/***/ (function (module, exports, __webpack_require__) {
2218
2219    var global = __webpack_require__(4);
2220    var hide = __webpack_require__(18);
2221
2222    module.exports = function (key, value) {
vendor: 1,616 bytes, lines 2223-2283
2223      try {
2224        hide(global, key, value);
2225      } catch (error) {
2226        global[key] = value;
2227      } return value;
2228    };
2229
2230
2231    /***/
2232  }),
2233/* 41 */
2234/***/ (function (module, exports) {
2235
2236    module.exports = {};
2237
2238
2239    /***/
2240  }),
2241/* 42 */
2242/***/ (function (module, exports) {
2243
2244    // IE8- don't enum bug keys
2245    module.exports = [
2246      'constructor',
2247      'hasOwnProperty',
2248      'isPrototypeOf',
2249      'propertyIsEnumerable',
2250      'toLocaleString',
2251      'toString',
2252      'valueOf'
2253    ];
2254
2255
2256    /***/
2257  }),
2258/* 43 */
2259/***/ (function (module, __webpack_exports__, __webpack_require__) {
2260
2261    "use strict";
2262    __webpack_require__.r(__webpack_exports__);
2263/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionTypes", function () { return ActionTypes; });
2264/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return createStore; });
2265/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80);
2266/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(166);
2267
2268
2269
2270    /**
2271     * These are private action types reserved by Redux.
2272     * For any unknown actions, you must return the current state.
2273     * If the current state is undefined, you must return the initial state.
2274     * Do not reference these action types directly in your code.
2275     */
2276    var ActionTypes = {
2277      INIT: '@@redux/INIT'
2278    };
2279
2280    /**
2281     * Creates a Redux store that holds the state tree.
2282     * The only way to change the data in the store is to call `dispatch()` on it.
2283     *
2284     * There should only be a single store in your app. To specify how different
2285     * parts of the state tree respond to actions, you may combine several reducers
2286     * into a single reducer function by using `combineReducers`.
2287     *
2288     * @param {Function} reducer A function that returns the next state tree, given
2289     * the current state tree and the action to handle.
2290     *
2291     * @param {any} [preloadedState] The initial state. You may optionally specify it
2292     * to hydrate the state from the server in universal apps, or to restore a
2293     * previously serialized user session.
2294     * If you use `combineReducers` to produce the root reducer function, this must be
2295     * an object with the same shape as `combineReducers` keys.
2296     *
2297     * @param {Function} enhancer The store enhancer. You may optionally specify it
2298     * to enhance the store with third-party capabilities such as middleware,
2299     * time travel, persistence, etc. The only store enhancer that ships with Redux
2300     * is `applyMiddleware()`.
2301     *
2302     * @returns {Store} A Redux store that lets you read the state, dispatch actions
2303     * and subscribe to changes.
2304     */
2305    function createStore(reducer, preloadedState, enhancer) {
2306      var _ref2;
2307
2308      if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
2309        enhancer = preloadedState;
2310        preloadedState = undefined;
2311      }
2312
2313      if (typeof enhancer !== 'undefined') {
2314        if (typeof enhancer !== 'function') {
2315          throw new Error('Expected the enhancer to be a function.');
2316        }
2317
2318        return enhancer(createStore)(reducer, preloadedState);
2319      }
2320
2321      if (typeof reducer !== 'function') {
2322        throw new Error('Expected the reducer to be a function.');
2323      }
2324
2325      var currentReducer = reducer;
2326      var currentState = preloadedState;
2327      var currentListeners = [];
2328      var nextListeners = currentListeners;
2329      var isDispatching = false;
2330
2331      function ensureCanMutateNextListeners() {
2332        if (nextListeners === currentListeners) {
2333          nextListeners = currentListeners.slice();
2334        }
2335      }
2336
2337      /**
2338       * Reads the state tree managed by the store.
2339       *
2340       * @returns {any} The current state tree of your application.
2341       */
2342      function getState() {
2343        return currentState;
2344      }
2345
2346      /**
2347       * Adds a change listener. It will be called any time an action is dispatched,
2348       * and some part of the state tree may potentially have changed. You may then
2349       * call `getState()` to read the current state tree inside the callback.
2350       *
2351       * You may call `dispatch()` from a change listener, with the following
2352       * caveats:
2353       *
2354       * 1. The subscriptions are snapshotted just before every `dispatch()` call.
2355       * If you subscribe or unsubscribe while the listeners are being invoked, this
2356       * will not have any effect on the `dispatch()` that is currently in progress.
2357       * However, the next `dispatch()` call, whether nested or not, will use a more
2358       * recent snapshot of the subscription list.
2359       *
2360       * 2. The listener should not expect to see all state changes, as the state
2361       * might have been updated multiple times during a nested `dispatch()` before
2362       * the listener is called. It is, however, guaranteed that all subscribers
2363       * registered before the `dispatch()` started will be called with the latest
2364       * state by the time it exits.
2365       *
2366       * @param {Function} listener A callback to be invoked on every dispatch.
2367       * @returns {Function} A function to remove this change listener.
2368       */
2369      function subscribe(listener) {
2370        if (typeof listener !== 'function') {
2371          throw new Error('Expected listener to be a function.');
2372        }
2373
2374        var isSubscribed = true;
2375
2376        ensureCanMutateNextListeners();
2377        nextListeners.push(listener);
2378
2379        return function unsubscribe() {
2380          if (!isSubscribed) {
2381            return;
2382          }
2383
2384          isSubscribed = false;
2385
2386          ensureCanMutateNextListeners();
2387          var index = nextListeners.indexOf(listener);
2388          nextListeners.splice(index, 1);
2389        };
2390      }
2391
2392      /**
2393       * Dispatches an action. It is the only way to trigger a state change.
2394       *
2395       * The `reducer` function, used to create the store, will be called with the
2396       * current state tree and the given `action`. Its return value will
2397       * be considered the **next** state of the tree, and the change listeners
2398       * will be notified.
2399       *
2400       * The base implementation only supports plain object actions. If you want to
2401       * dispatch a Promise, an Observable, a thunk, or something else, you need to
2402       * wrap your store creating function into the corresponding middleware. For
2403       * example, see the documentation for the `redux-thunk` package. Even the
2404       * middleware will eventually dispatch plain object actions using this method.
2405       *
2406       * @param {Object} action A plain object representing “what changed”. It is
2407       * a good idea to keep actions serializable so you can record and replay user
2408       * sessions, or use the time travelling `redux-devtools`. An action must have
2409       * a `type` property which may not be `undefined`. It is a good idea to use
2410       * string constants for action types.
2411       *
2412       * @returns {Object} For convenience, the same action object you dispatched.
2413       *
2414       * Note that, if you use a custom middleware, it may wrap `dispatch()` to
2415       * return something else (for example, a Promise you can await).
2416       */
2417      function dispatch(action) {
2418        if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(action)) {
2419          throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
2420        }
2421
2422        if (typeof action.type === 'undefined') {
2423          throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
2424        }
2425
2426        if (isDispatching) {
2427          throw new Error('Reducers may not dispatch actions.');
2428        }
2429
2430        try {
2431          isDispatching = true;
2432          currentState = currentReducer(currentState, action);
2433        } finally {
2434          isDispatching = false;
2435        }
2436
2437        var listeners = currentListeners = nextListeners;
2438        for (var i = 0; i < listeners.length; i++) {
2439          listeners[i]();
2440        }
2441
2442        return action;
2443      }
2444
2445      /**
2446       * Replaces the reducer currently used by the store to calculate the state.
2447       *
2448       * You might need this if your app implements code splitting and you want to
2449       * load some of the reducers dynamically. You might also need this if you
2450       * implement a hot reloading mechanism for Redux.
2451       *
2452       * @param {Function} nextReducer The reducer for the store to use instead.
2453       * @returns {void}
2454       */
2455      function replaceReducer(nextReducer) {
2456        if (typeof nextReducer !== 'function') {
2457          throw new Error('Expected the nextReducer to be a function.');
2458        }
2459
2460        currentReducer = nextReducer;
2461        dispatch({ type: ActionTypes.INIT });
2462      }
2463
2464      /**
2465       * Interoperability point for observable/reactive libraries.
2466       * @returns {observable} A minimal observable of state changes.
2467       * For more information, see the observable proposal:
2468       * https://github.com/zenparsing/es-observable
2469       */
2470      function observable() {
2471        var _ref;
2472
2473        var outerSubscribe = subscribe;
2474        return _ref = {
2475          /**
2476           * The minimal observable subscription method.
2477           * @param {Object} observer Any object that can be used as an observer.
2478           * The observer object should have a `next` method.
2479           * @returns {subscription} An object with an `unsubscribe` method that can
2480           * be used to unsubscribe the observable from the store, and prevent further
2481           * emission of values from the observable.
2482           */
2483          subscribe: function subscribe(observer) {
2484            if (typeof observer !== 'object') {
2485              throw new TypeError('Expected the observer to be an object.');
2486            }
2487
2488            function observeState() {
2489              if (observer.next) {
2490                observer.next(getState());
2491              }
2492            }
2493
2494            observeState();
2495            var unsubscribe = outerSubscribe(observeState);
2496            return { unsubscribe: unsubscribe };
2497          }
2498        }
2498, _ref[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = function () {
2499          return this;
2500        }, _ref;
2501      }
2502
2503      // When a store is created, an "INIT" action is dispatched so that every
2504      // reducer returns their initial state. This effectively populates
2505      // the initial state tree.
2506      dispatch({ type: ActionTypes.INIT });
2507
2508      return _ref2 = {
2509        dispatch: dispatch,
2510        subscribe: subscribe,
2511        getState: getState,
2512        replaceReducer: replaceReducer
2513      }, _ref2[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = observable, _ref2;
2514    }
2515
2516    /***/
2517  }),
2518/* 44 */
2519/***/ (function (module, __webpack_exports__, __webpack_require__) {
2520
2521    "use strict";
2522    __webpack_require__.r(__webpack_exports__);
2523/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return compose; });
2524    /**
2525     * Composes single-argument functions from right to left. The rightmost
2526     * function can take multiple arguments as it provides the signature for
2527     * the resulting composite function.
2528     *
2529     * @param {...Function} funcs The functions to compose.
2530     * @returns {Function} A function obtained by composing the argument functions
2531     * from right to left. For example, compose(f, g, h) is identical to doing
2532     * (...args) => f(g(h(...args))).
2533     */
2534
2535    function compose() {
2536      for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
2537        funcs[_key] = arguments[_key];
2538      }
2539
2540      if (funcs.length === 0) {
2541        return function (arg) {
2542          return arg;
2543        };
2544      }
2545
2546      if (funcs.length === 1) {
2547        return funcs[0];
2548      }
2549
2550      var last = funcs[funcs.length - 1];
2551      var rest = funcs.slice(0, -1);
2552      return function () {
2553        return rest.reduceRight(function (composed, f) {
2554          return f(composed);
2555        }, last.apply(undefined, arguments));
2556      };
2557    }
2558
2559    /***/
2560  }),
2561/* 45 */
2562/***/ (function (module, exports, __webpack_require__) {
2563
2564    "use strict";
2565
2566
2567    var _interopRequireDefault = __webpack_require__(0);
2568
2569    Object.defineProperty(exports, "__esModule", {
2570      value: true
2571    });
2572    exports.TRANSFORM_STYLE_PREFIXED = exports.TRANSFORM_PREFIXED = exports.FLEX_PREFIXED = exports.ELEMENT_MATCHES = exports.withBrowser = exports.IS_BROWSER_ENV = void 0;
2573
2574    var _find = _interopRequireDefault(__webpack_require__(86));
2575    /* eslint-env browser */
2576
2577
2578    var IS_BROWSER_ENV = typeof window !== 'undefined'; // $FlowFixMe
2579
2580    exports.IS_BROWSER_ENV = IS_BROWSER_ENV;
2581
2582    var withBrowser = function withBrowser(fn, fallback) {
2583      if (IS_BROWSER_ENV) {
2584        return fn();
2585      }
2586
2587      return fallback;
2588    };
2589
2590    exports.withBrowser = withBrowser;
2591    var ELEMENT_MATCHES = withBrowser(function () {
2592      return (0, _find["default"])(['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'], function (key) {
2593        return key in Element.prototype;
2594      });
2595    });
2596    exports.ELEMENT_MATCHES = ELEMENT_MATCHES;
2597    var FLEX_PREFIXED = withBrowser(function () {
2598      var el = document.createElement('i');
2599      var values = ['flex', '-webkit-flex', '-ms-flexbox', '-moz-box', '-webkit-box'];
2600      var none = '';
2601
2602      try {
2603        var length = values.length;
2604
2605        for (var i = 0; i < length; i++) {
2606          var value = values[i];
2607          el.style.display = value;
2608
2609          if (el.style.display === value) {
2610            return value;
2611          }
2612        }
2613
2614        return none;
2615      } catch (err) {
2616        return none;
2617      }
2618    }, 'flex');
2619    exports.FLEX_PREFIXED = FLEX_PREFIXED;
2620    var TRANSFORM_PREFIXED = withBrowser(function () {
2621      var el = document.createElement('i');
2622
2623      if (el.style.transform == null) {
2624        var prefixes = ['Webkit', 'Moz', 'ms'];
2625        var suffix = 'Transform';
2626        var length = prefixes.length;
2627
2628        for (var i = 0; i < length; i++) {
2629          var prop = prefixes[i] + suffix; // $FlowFixMe
2630
2631          if (el.style[prop] !== undefined) {
2632            return prop;
2633          }
2634        }
2635      }
2636
2637      return 'transform';
2638    }, 'transform'); // $FlowFixMe
2639
2640    exports.TRANSFORM_PREFIXED = TRANSFORM_PREFIXED;
2641    var TRANSFORM_PREFIX = TRANSFORM_PREFIXED.split('transform')[0];
2642    var TRANSFORM_STYLE_PREFIXED = TRANSFORM_PREFIX ? TRANSFORM_PREFIX + 'TransformStyle' : 'transformStyle';
2643    exports.TRANSFORM_STYLE_PREFIXED = TRANSFORM_STYLE_PREFIXED;
2644
2645    /***/
2646  }),
2647/* 46 */
vendor: 14,797 bytes, lines 2648-3204
2648/***/ (function (module, exports) {
2649
2650    /**
2651     * Performs a
2652     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2653     * comparison between two values to determine if they are equivalent.
2654     *
2655     * @static
2656     * @memberOf _
2657     * @since 4.0.0
2658     * @category Lang
2659     * @param {*} value The value to compare.
2660     * @param {*} other The other value to compare.
2661     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2662     * @example
2663     *
2664     * var object = { 'a': 1 };
2665     * var other = { 'a': 1 };
2666     *
2667     * _.eq(object, object);
2668     * // => true
2669     *
2670     * _.eq(object, other);
2671     * // => false
2672     *
2673     * _.eq('a', 'a');
2674     * // => true
2675     *
2676     * _.eq('a', Object('a'));
2677     * // => false
2678     *
2679     * _.eq(NaN, NaN);
2680     * // => true
2681     */
2682    function eq(value, other) {
2683      return value === other || (value !== value && other !== other);
2684    }
2685
2686    module.exports = eq;
2687
2688
2689    /***/
2690  }),
2691/* 47 */
2692/***/ (function (module, exports, __webpack_require__) {
2693
2694    var getNative = __webpack_require__(8),
2695      root = __webpack_require__(5);
2696
2697    /* Built-in method references that are verified to be native. */
2698    var Map = getNative(root, 'Map');
2699
2700    module.exports = Map;
2701
2702
2703    /***/
2704  }),
2705/* 48 */
2706/***/ (function (module, exports, __webpack_require__) {
2707
2708    var mapCacheClear = __webpack_require__(196),
2709      mapCacheDelete = __webpack_require__(203),
2710      mapCacheGet = __webpack_require__(205),
2711      mapCacheHas = __webpack_require__(206),
2712      mapCacheSet = __webpack_require__(207);
2713
2714    /**
2715     * Creates a map cache object to store key-value pairs.
2716     *
2717     * @private
2718     * @constructor
2719     * @param {Array} [entries] The key-value pairs to cache.
2720     */
2721    function MapCache(entries) {
2722      var index = -1,
2723        length = entries == null ? 0 : entries.length;
2724
2725      this.clear();
2726      while (++index < length) {
2727        var entry = entries[index];
2728        this.set(entry[0], entry[1]);
2729      }
2730    }
2731
2732    // Add methods to `MapCache`.
2733    MapCache.prototype.clear = mapCacheClear;
2734    MapCache.prototype['delete'] = mapCacheDelete;
2735    MapCache.prototype.get = mapCacheGet;
2736    MapCache.prototype.has = mapCacheHas;
2737    MapCache.prototype.set = mapCacheSet;
2738
2739    module.exports = MapCache;
2740
2741
2742    /***/
2743  }),
2744/* 49 */
2745/***/ (function (module, exports) {
2746
2747    /**
2748     * Appends the elements of `values` to `array`.
2749     *
2750     * @private
2751     * @param {Array} array The array to modify.
2752     * @param {Array} values The values to append.
2753     * @returns {Array} Returns `array`.
2754     */
2755    function arrayPush(array, values) {
2756      var index = -1,
2757        length = values.length,
2758        offset = array.length;
2759
2760      while (++index < length) {
2761        array[offset + index] = values[index];
2762      }
2763      return array;
2764    }
2765
2766    module.exports = arrayPush;
2767
2768
2769    /***/
2770  }),
2771/* 50 */
2772/***/ (function (module, exports, __webpack_require__) {
2773
2774/* WEBPACK VAR INJECTION */(function (module) {
2775      var root = __webpack_require__(5),
2776        stubFalse = __webpack_require__(223);
2777
2778      /** Detect free variable `exports`. */
2779      var freeExports = true && exports && !exports.nodeType && exports;
2780
2781      /** Detect free variable `module`. */
2782      var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
2783
2784      /** Detect the popular CommonJS extension `module.exports`. */
2785      var moduleExports = freeModule && freeModule.exports === freeExports;
2786
2787      /** Built-in value references. */
2788      var Buffer = moduleExports ? root.Buffer : undefined;
2789
2790      /* Built-in method references for those with the same name as other `lodash` methods. */
2791      var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
2792
2793      /**
2794       * Checks if `value` is a buffer.
2795       *
2796       * @static
2797       * @memberOf _
2798       * @since 4.3.0
2799       * @category Lang
2800       * @param {*} value The value to check.
2801       * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
2802       * @example
2803       *
2804       * _.isBuffer(new Buffer(2));
2805       * // => true
2806       *
2807       * _.isBuffer(new Uint8Array(2));
2808       * // => false
2809       */
2810      var isBuffer = nativeIsBuffer || stubFalse;
2811
2812      module.exports = isBuffer;
2813
2814      /* WEBPACK VAR INJECTION */
2815    }.call(this, __webpack_require__(98)(module)))
2816
2817    /***/
2818  }),
2819/* 51 */
2820/***/ (function (module, exports) {
2821
2822    /** Used as references for various `Number` constants. */
2823    var MAX_SAFE_INTEGER = 9007199254740991;
2824
2825    /** Used to detect unsigned integer values. */
2826    var reIsUint = /^(?:0|[1-9]\d*)$/;
2827
2828    /**
2829     * Checks if `value` is a valid array-like index.
2830     *
2831     * @private
2832     * @param {*} value The value to check.
2833     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
2834     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
2835     */
2836    function isIndex(value, length) {
2837      var type = typeof value;
2838      length = length == null ? MAX_SAFE_INTEGER : length;
2839
2840      return !!length &&
2841        (type == 'number' ||
2842          (type != 'symbol' && reIsUint.test(value))) &&
2843        (value > -1 && value % 1 == 0 && value < length);
2844    }
2845
2846    module.exports = isIndex;
2847
2848
2849    /***/
2850  }),
2851/* 52 */
2852/***/ (function (module, exports, __webpack_require__) {
2853
2854    var baseIsTypedArray = __webpack_require__(224),
2855      baseUnary = __webpack_require__(225),
2856      nodeUtil = __webpack_require__(226);
2857
2858    /* Node.js helper references. */
2859    var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
2860
2861    /**
2862     * Checks if `value` is classified as a typed array.
2863     *
2864     * @static
2865     * @memberOf _
2866     * @since 3.0.0
2867     * @category Lang
2868     * @param {*} value The value to check.
2869     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
2870     * @example
2871     *
2872     * _.isTypedArray(new Uint8Array);
2873     * // => true
2874     *
2875     * _.isTypedArray([]);
2876     * // => false
2877     */
2878    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
2879
2880    module.exports = isTypedArray;
2881
2882
2883    /***/
2884  }),
2885/* 53 */
2886/***/ (function (module, exports) {
2887
2888    /** Used as references for various `Number` constants. */
2889    var MAX_SAFE_INTEGER = 9007199254740991;
2890
2891    /**
2892     * Checks if `value` is a valid array-like length.
2893     *
2894     * **Note:** This method is loosely based on
2895     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
2896     *
2897     * @static
2898     * @memberOf _
2899     * @since 4.0.0
2900     * @category Lang
2901     * @param {*} value The value to check.
2902     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2903     * @example
2904     *
2905     * _.isLength(3);
2906     * // => true
2907     *
2908     * _.isLength(Number.MIN_VALUE);
2909     * // => false
2910     *
2911     * _.isLength(Infinity);
2912     * // => false
2913     *
2914     * _.isLength('3');
2915     * // => false
2916     */
2917    function isLength(value) {
2918      return typeof value == 'number' &&
2919        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2920    }
2921
2922    module.exports = isLength;
2923
2924
2925    /***/
2926  }),
2927/* 54 */
2928/***/ (function (module, exports, __webpack_require__) {
2929
2930    var isPrototype = __webpack_require__(55),
2931      nativeKeys = __webpack_require__(227);
2932
2933    /** Used for built-in method references. */
2934    var objectProto = Object.prototype;
2935
2936    /** Used to check objects for own properties. */
2937    var hasOwnProperty = objectProto.hasOwnProperty;
2938
2939    /**
2940     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
2941     *
2942     * @private
2943     * @param {Object} object The object to query.
2944     * @returns {Array} Returns the array of property names.
2945     */
2946    function baseKeys(object) {
2947      if (!isPrototype(object)) {
2948        return nativeKeys(object);
2949      }
2950      var result = [];
2951      for (var key in Object(object)) {
2952        if (hasOwnProperty.call(object, key) && key != 'constructor') {
2953          result.push(key);
2954        }
2955      }
2956      return result;
2957    }
2958
2959    module.exports = baseKeys;
2960
2961
2962    /***/
2963  }),
2964/* 55 */
2965/***/ (function (module, exports) {
2966
2967    /** Used for built-in method references. */
2968    var objectProto = Object.prototype;
2969
2970    /**
2971     * Checks if `value` is likely a prototype object.
2972     *
2973     * @private
2974     * @param {*} value The value to check.
2975     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
2976     */
2977    function isPrototype(value) {
2978      var Ctor = value && value.constructor,
2979        proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
2980
2981      return value === proto;
2982    }
2983
2984    module.exports = isPrototype;
2985
2986
2987    /***/
2988  }),
2989/* 56 */
2990/***/ (function (module, exports, __webpack_require__) {
2991
2992    var DataView = __webpack_require__(228),
2993      Map = __webpack_require__(47),
2994      Promise = __webpack_require__(229),
2995      Set = __webpack_require__(230),
2996      WeakMap = __webpack_require__(100),
2997      baseGetTag = __webpack_require__(11),
2998      toSource = __webpack_require__(91);
2999
3000    /** `Object#toString` result references. */
3001    var mapTag = '[object Map]',
3002      objectTag = '[object Object]',
3003      promiseTag = '[object Promise]',
3004      setTag = '[object Set]',
3005      weakMapTag = '[object WeakMap]';
3006
3007    var dataViewTag = '[object DataView]';
3008
3009    /** Used to detect maps, sets, and weakmaps. */
3010    var dataViewCtorString = toSource(DataView),
3011      mapCtorString = toSource(Map),
3012      promiseCtorString = toSource(Promise),
3013      setCtorString = toSource(Set),
3014      weakMapCtorString = toSource(WeakMap);
3015
3016    /**
3017     * Gets the `toStringTag` of `value`.
3018     *
3019     * @private
3020     * @param {*} value The value to query.
3021     * @returns {string} Returns the `toStringTag`.
3022     */
3023    var getTag = baseGetTag;
3024
3025    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
3026    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
3027      (Map && getTag(new Map) != mapTag) ||
3028      (Promise && getTag(Promise.resolve()) != promiseTag) ||
3029      (Set && getTag(new Set) != setTag) ||
3030      (WeakMap && getTag(new WeakMap) != weakMapTag)) {
3031      getTag = function (value) {
3032        var result = baseGetTag(value),
3033          Ctor = result == objectTag ? value.constructor : undefined,
3034          ctorString = Ctor ? toSource(Ctor) : '';
3035
3036        if (ctorString) {
3037          switch (ctorString) {
3038            case dataViewCtorString: return dataViewTag;
3039            case mapCtorString: return mapTag;
3040            case promiseCtorString: return promiseTag;
3041            case setCtorString: return setTag;
3042            case weakMapCtorString: return weakMapTag;
3043          }
3044        }
3045        return result;
3046      };
3047    }
3048
3049    module.exports = getTag;
3050
3051
3052    /***/
3053  }),
3054/* 57 */
3055/***/ (function (module, exports, __webpack_require__) {
3056
3057    var baseGet = __webpack_require__(58);
3058
3059    /**
3060     * Gets the value at `path` of `object`. If the resolved value is
3061     * `undefined`, the `defaultValue` is returned in its place.
3062     *
3063     * @static
3064     * @memberOf _
3065     * @since 3.7.0
3066     * @category Object
3067     * @param {Object} object The object to query.
3068     * @param {Array|string} path The path of the property to get.
3069     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
3070     * @returns {*} Returns the resolved value.
3071     * @example
3072     *
3073     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
3074     *
3075     * _.get(object, 'a[0].b.c');
3076     * // => 3
3077     *
3078     * _.get(object, ['a', '0', 'b', 'c']);
3079     * // => 3
3080     *
3081     * _.get(object, 'a.b.c', 'default');
3082     * // => 'default'
3083     */
3084    function get(object, path, defaultValue) {
3085      var result = object == null ? undefined : baseGet(object, path);
3086      return result === undefined ? defaultValue : result;
3087    }
3088
3089    module.exports = get;
3090
3091
3092    /***/
3093  }),
3094/* 58 */
3095/***/ (function (module, exports, __webpack_require__) {
3096
3097    var castPath = __webpack_require__(35),
3098      toKey = __webpack_require__(21);
3099
3100    /**
3101     * The base implementation of `_.get` without support for default values.
3102     *
3103     * @private
3104     * @param {Object} object The object to query.
3105     * @param {Array|string} path The path of the property to get.
3106     * @returns {*} Returns the resolved value.
3107     */
3108    function baseGet(object, path) {
3109      path = castPath(path, object);
3110
3111      var index = 0,
3112        length = path.length;
3113
3114      while (object != null && index < length) {
3115        object = object[toKey(path[index++])];
3116      }
3117      return (index && index == length) ? object : undefined;
3118    }
3119
3120    module.exports = baseGet;
3121
3122
3123    /***/
3124  }),
3125/* 59 */
3126/***/ (function (module, exports, __webpack_require__) {
3127
3128    var isArray = __webpack_require__(1),
3129      isSymbol = __webpack_require__(36);
3130
3131    /** Used to match property names within property paths. */
3132    var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
3133      reIsPlainProp = /^\w*$/;
3134
3135    /**
3136     * Checks if `value` is a property name and not a property path.
3137     *
3138     * @private
3139     * @param {*} value The value to check.
3140     * @param {Object} [object] The object to query keys on.
3141     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
3142     */
3143    function isKey(value, object) {
3144      if (isArray(value)) {
3145        return false;
3146      }
3147      var type = typeof value;
3148      if (type == 'number' || type == 'symbol' || type == 'boolean' ||
3149        value == null || isSymbol(value)) {
3150        return true;
3151      }
3152      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
3153        (object != null && value in Object(object));
3154    }
3155
3156    module.exports = isKey;
3157
3158
3159    /***/
3160  }),
3161/* 60 */
3162/***/ (function (module, exports) {
3163
3164    /**
3165     * This method returns the first argument it receives.
3166     *
3167     * @static
3168     * @since 0.1.0
3169     * @memberOf _
3170     * @category Util
3171     * @param {*} value Any value.
3172     * @returns {*} Returns `value`.
3173     * @example
3174     *
3175     * var object = { 'a': 1 };
3176     *
3177     * console.log(_.identity(object) === object);
3178     * // => true
3179     */
3180    function identity(value) {
3181      return value;
3182    }
3183
3184    module.exports = identity;
3185
3186
3187    /***/
3188  }),
3189/* 61 */
3190/***/ (function (module, exports, __webpack_require__) {
3191
3192    var isObject = __webpack_require__(6),
3193      isSymbol = __webpack_require__(36);
3194
3195    /** Used as references for various `Number` constants. */
3196    var NAN = 0 / 0;
3197
3198    /** Used to match leading and trailing whitespace. */
3199    var reTrim = /^\s+|\s+$/g;
3200
3201    /** Used to detect bad signed hexadecimal string values. */
3202    var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
3203
3204    /** Used to detect binary string values. */
vendor: 4,158 bytes, lines 3205-3305
3205    var reIsBinary = /^0b[01]+$/i;
3206
3207    /** Used to detect octal string values. */
3208    var reIsOctal = /^0o[0-7]+$/i;
3209
3210    /** Built-in method references without a dependency on `root`. */
3211    var freeParseInt = parseInt;
3212
3213    /**
3214     * Converts `value` to a number.
3215     *
3216     * @static
3217     * @memberOf _
3218     * @since 4.0.0
3219     * @category Lang
3220     * @param {*} value The value to process.
3221     * @returns {number} Returns the number.
3222     * @example
3223     *
3224     * _.toNumber(3.2);
3225     * // => 3.2
3226     *
3227     * _.toNumber(Number.MIN_VALUE);
3228     * // => 5e-324
3229     *
3230     * _.toNumber(Infinity);
3231     * // => Infinity
3232     *
3233     * _.toNumber('3.2');
3234     * // => 3.2
3235     */
3236    function toNumber(value) {
3237      if (typeof value == 'number') {
3238        return value;
3239      }
3240      if (isSymbol(value)) {
3241        return NAN;
3242      }
3243      if (isObject(value)) {
3244        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
3245        value = isObject(other) ? (other + '') : other;
3246      }
3247      if (typeof value != 'string') {
3248        return value === 0 ? value : +value;
3249      }
3250      value = value.replace(reTrim, '');
3251      var isBinary = reIsBinary.test(value);
3252      return (isBinary || reIsOctal.test(value))
3253        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
3254        : (reIsBadHex.test(value) ? NAN : +value);
3255    }
3256
3257    module.exports = toNumber;
3258
3259
3260    /***/
3261  }),
3262/* 62 */
3263/***/ (function (module, exports, __webpack_require__) {
3264
3265    "use strict";
3266
3267
3268    var _interopRequireDefault = __webpack_require__(0);
3269
3270    Object.defineProperty(exports, "__esModule", {
3271      value: true
3272    });
3273    exports.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;
3274
3275    var _extends2 = _interopRequireDefault(__webpack_require__(28));
3276
3277    var _constants = __webpack_require__(2);
3278
3279    var _shared = __webpack_require__(10);
3280
3281    var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
3282      IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
3283      IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
3284      IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
3285      IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
3286      IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
3287      IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
3288      IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
3289      IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED,
3290      IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
3291      IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
3292      IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
3293      IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
3294      IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED,
3295      IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
3296      IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
3297      IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
3298      IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED,
3299      IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
3300      IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
3301      IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
3302    var reifyState = _shared.IX2VanillaUtils.reifyState; // TODO: Figure out what this is and elevate it
3303
3304    var rawDataImported = function rawDataImported(rawData) {
3305      return {
3306        type: IX2_RAW_DATA_IMPORTED,
3307        payload: (0, _extends2["default"])({}, reifyState(rawData))
3308      };
3309    };
3310
3311    exports.rawDataImported = rawDataImported;
3312
3313    var sessionInitialized = function sessionInitialized(_ref) {
3314      var hasBoundaryNodes = _ref.hasBoundaryNodes;
3315      return {
3316        type: IX2_SESSION_INITIALIZED,
3317        payload: {
3318          hasBoundaryNodes: hasBoundaryNodes
3319        }
3320      };
3321    };
3322
3323    exports.sessionInitialized = sessionInitialized;
3324
3325    var sessionStarted = function sessionStarted() {
3326      return {
3327        type: IX2_SESSION_STARTED
3328      };
3329    };
3330
3331    exports.sessionStarted = sessionStarted;
3332
3333    var sessionStopped = function sessionStopped() {
3334      return {
3335        type: IX2_SESSION_STOPPED
3336      };
3337    };
3338
3339    exports.sessionStopped = sessionStopped;
3340
3341    var previewRequested = function previewRequested(_ref2) {
3342      var rawData = _ref2.rawData,
3343        defer = _ref2.defer;
3344      return {
3345        type: IX2_PREVIEW_REQUESTED,
3346        payload: {
3347          defer: defer,
3348          rawData: rawData
3349        }
3350      };
3351    };
3352
3353    exports.previewRequested = previewRequested;
3354
3355    var playbackRequested = function playbackRequested(_ref3) {
3356      var _ref3$actionTypeId = _ref3.actionTypeId,
3357        actionTypeId = _ref3$actionTypeId === void 0 ? _constants.ActionTypeConsts.GENERAL_START_ACTION : _ref3$actionTypeId,
3358        actionListId = _ref3.actionListId,
3359        actionItemId = _ref3.actionItemId,
3360        eventId = _ref3.eventId,
3361        allowEvents = _ref3.allowEvents,
3362        immediate = _ref3.immediate,
3363        testManual = _ref3.testManual,
3364        verbose = _ref3.verbose,
3365        rawData = _ref3.rawData;
3366      return {
3367        type: IX2_PLAYBACK_REQUESTED,
3368        payload: {
3369          actionTypeId: actionTypeId,
3370          actionListId: actionListId,
3371          actionItemId: actionItemId,
3372          testManual: testManual,
3373          eventId: eventId,
3374          allowEvents: allowEvents,
3375          immediate: immediate,
3376          verbose: verbose,
3377          rawData: rawData
3378        }
3379      };
3380    };
3381
3382    exports.playbackRequested = playbackRequested;
3383
3384    var stopRequested = function stopRequested(actionListId) {
3385      return {
3386        type: IX2_STOP_REQUESTED,
3387        payload: {
3388          actionListId: actionListId
3389        }
3390      };
3391    };
3392
3393    exports.stopRequested = stopRequested;
3394
3395    var clearRequested = function clearRequested() {
3396      return {
3397        type: IX2_CLEAR_REQUESTED
3398      };
3399    };
3400
3401    exports.clearRequested = clearRequested;
3402
3403    var eventListenerAdded = function eventListenerAdded(target, listenerParams) {
3404      return {
3405        type: IX2_EVENT_LISTENER_ADDED,
3406        payload: {
3407          target: target,
3408          listenerParams: listenerParams
3409        }
3410      };
3411    };
3412
3413    exports.eventListenerAdded = eventListenerAdded;
3414
3415    var testFrameRendered = function testFrameRendered() {
3416      var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
3417      return {
3418        type: IX2_TEST_FRAME_RENDERED,
3419        payload: {
3420          step: step
3421        }
3422      };
3423    };
3424
3425    exports.testFrameRendered = testFrameRendered;
3426
3427    var eventStateChanged = function eventStateChanged(stateKey, newState) {
3428      return {
3429        type: IX2_EVENT_STATE_CHANGED,
3430        payload: {
3431          stateKey: stateKey,
3432          newState: newState
3433        }
3434      };
3435    };
3436
3437    exports.eventStateChanged = eventStateChanged;
3438
3439    var animationFrameChanged = function animationFrameChanged(now, parameters) {
3440      return {
3441        type: IX2_ANIMATION_FRAME_CHANGED,
3442        payload: {
3443          now: now,
3444          parameters: parameters
3445        }
3446      };
3447    };
3448
3449    exports.animationFrameChanged = animationFrameChanged;
3450
3451    var parameterChanged = function parameterChanged(key, value) {
3452      return {
3453        type: IX2_PARAMETER_CHANGED,
3454        payload: {
3455          key: key,
3456          value: value
3457        }
3458      };
3459    };
3460
3461    exports.parameterChanged = parameterChanged;
3462
3463    var instanceAdded = function instanceAdded(options) {
3464      return {
3465        type: IX2_INSTANCE_ADDED,
3466        payload: (0, _extends2["default"])({}, options)
3467      };
3468    };
3469
3470    exports.instanceAdded = instanceAdded;
3471
3472    var instanceStarted = function instanceStarted(instanceId, time) {
3473      return {
3474        type: IX2_INSTANCE_STARTED,
3475        payload: {
3476          instanceId: instanceId,
3477          time: time
3478        }
3479      };
3480    };
3481
3482    exports.instanceStarted = instanceStarted;
3483
3484    var instanceRemoved = function instanceRemoved(instanceId) {
3485      return {
3486        type: IX2_INSTANCE_REMOVED,
3487        payload: {
3488          instanceId: instanceId
3489        }
3490      };
3491    };
3492
3493    exports.instanceRemoved = instanceRemoved;
3494
3495    var elementStateChanged = function elementStateChanged(elementId, actionTypeId, current, actionItem) {
3496      return {
3497        type: IX2_ELEMENT_STATE_CHANGED,
3498        payload: {
3499          elementId: elementId,
3500          actionTypeId: actionTypeId,
3501          current: current,
3502          actionItem: actionItem
3503        }
3504      };
3505    };
3506
3507    exports.elementStateChanged = elementStateChanged;
3508
3509    var actionListPlaybackChanged = function actionListPlaybackChanged(_ref4) {
3510      var actionListId = _ref4.actionListId,
3511        isPlaying = _ref4.isPlaying;
3512      return {
3513        type: IX2_ACTION_LIST_PLAYBACK_CHANGED,
3514        payload: {
3515          actionListId: actionListId,
3516          isPlaying: isPlaying
3517        }
3518      };
3519    };
3520
3521    exports.actionListPlaybackChanged = actionListPlaybackChanged;
3522
3523    var viewportWidthChanged = function viewportWidthChanged(_ref5) {
3524      var width = _ref5.width,
3525        mediaQueries = _ref5.mediaQueries;
3526      return {
3527        type: IX2_VIEWPORT_WIDTH_CHANGED,
3528        payload: {
3529          width: width,
3530          mediaQueries: mediaQueries
3531        }
3532      };
3533    };
3534
3535    exports.viewportWidthChanged = viewportWidthChanged;
3536
3537    var mediaQueriesDefined = function mediaQueriesDefined() {
3538      return {
3539        type: IX2_MEDIA_QUERIES_DEFINED
3540      };
3541    };
3542
3543    exports.mediaQueriesDefined = mediaQueriesDefined;
3544
3545    /***/
3546  }),
3547/* 63 */
3548/***/ (function (module, exports, __webpack_require__) {
3549
3550    var baseCreate = __webpack_require__(118),
3551      baseLodash = __webpack_require__(64);
3552
3553    /**
3554     * The base constructor for creating `lodash` wrapper objects.
3555     *
3556     * @private
3557     * @param {*} value The value to wrap.
3558     * @param {boolean} [chainAll] Enable explicit method chain sequences.
3559     */
3560    function LodashWrapper(value, chainAll) {
3561      this.__wrapped__ = value;
3562      this.__actions__ = [];
3563      this.__chain__ = !!chainAll;
3564      this.__index__ = 0;
3565      this.__values__ = undefined;
3566    }
3567
3568    LodashWrapper.prototype = baseCreate(baseLodash.prototype);
3569    LodashWrapper.prototype.constructor = LodashWrapper;
3570
3571    module.exports = LodashWrapper;
3572
3573
3574    /***/
3575  }),
3576/* 64 */
3577/***/ (function (module, exports) {
3578
3579    /**
3580     * The function whose prototype chain sequence wrappers inherit from.
3581     *
3582     * @private
3583     */
3584    function baseLodash() {
3585      // No operation performed.
3586    }
3587
3588    module.exports = baseLodash;
3589
3590
3591    /***/
3592  }),
3593/* 65 */
3594/***/ (function (module, exports, __webpack_require__) {
3595
3596    var baseCreate = __webpack_require__(118),
3597      baseLodash = __webpack_require__(64);
3598
3599    /** Used as references for the maximum length and index of an array. */
3600    var MAX_ARRAY_LENGTH = 4294967295;
3601
3602    /**
3603     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
3604     *
3605     * @private
3606     * @constructor
3607     * @param {*} value The value to wrap.
3608     */
3609    function LazyWrapper(value) {
3610      this.__wrapped__ = value;
3611      this.__actions__ = [];
3612      this.__dir__ = 1;
3613      this.__filtered__ = false;
3614      this.__iteratees__ = [];
3615      this.__takeCount__ = MAX_ARRAY_LENGTH;
3616      this.__views__ = [];
3617    }
3618
3619    // Ensure `LazyWrapper` is an instance of `baseLodash`.
3620    LazyWrapper.prototype = baseCreate(baseLodash.prototype);
3621    LazyWrapper.prototype.constructor = LazyWrapper;
3622
3623    module.exports = LazyWrapper;
3624
3625
3626    /***/
3627  }),
3628/* 66 */
3629/***/ (function (module, exports, __webpack_require__) {
3630
3631    "use strict";
3632    // @wf-will-never-add-flow-to-this-file
3633
3634    /* eslint-disable eslint-comments/no-unlimited-disable */
3635
3636    /* eslint-disable */
3637
3638    /*!
3639     * tram.js v0.8.2-global
3640     * Cross-browser CSS3 transitions in JavaScript
3641     * https://github.com/bkwld/tram
3642     * MIT License
3643     */
3644
3645    /* prettier-ignore */
3646
3647    var _interopRequireDefault = __webpack_require__(0);
3648
3649    var _typeof2 = _interopRequireDefault(__webpack_require__(13));
3650
3651    window.tram = function (a) {
3652      function b(a, b) {
3653        var c = new M.Bare();
3654        return c.init(a, b);
3655      }
3656
3657      function c(a) {
3658        return a.replace(/[A-Z]/g, function (a) {
3659          return "-" + a.toLowerCase();
3660        });
3661      }
3662
3663      function d(a) {
3664        var b = parseInt(a.slice(1), 16),
3665          c = b >> 16 & 255,
3666          d = b >> 8 & 255,
3667          e = 255 & b;
3668        return [c, d, e];
3669      }
3670
3671      function e(a, b, c) {
3672        return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1);
3673      }
3674
3675      function f() { }
3676
3677      function g(a, b) {
3678        j("Type warning: Expected: [" + a + "] Got: [" + (0, _typeof2["default"])(b) + "] " + b);
3679      }
3680
3681      function h(a, b, c) {
3682        j("Units do not match [" + a + "]: " + b + ", " + c);
3683      }
3684
3685      function i(a, b, c) {
3686        if (void 0 !== b && (c = b), void 0 === a) return c;
3687        var d = c;
3688        return $.test(a) || !_.test(a) ? d = parseInt(a, 10) : _.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c;
3689      }
3690
3691      function j(a) {
3692        U.debug && window && window.console.warn(a);
3693      }
3694
3695      function k(a) {
3696        for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) {
3697          var e = a[b];
3698          e && d.push(e);
3699        }
3700
3701        return d;
3702      }
3703
3704      var l = function (a, b, c) {
3705        function d(a) {
3706          return "object" == (0, _typeof2["default"])(a);
3707        }
3708
3709        function e(a) {
3710          return "function" == typeof a;
3711        }
3712
3713        function f() { }
3714
3715        function g(h, i) {
3716          function j() {
3717            var a = new k();
3718            return e(a.init) && a.init.apply(a, arguments), a;
3719          }
3720
3721          function k() { }
3722
3723          i === c && (i = h, h = Object), j.Bare = k;
3724          var l,
3725            m = f[a] = h[a],
3726            n = k[a] = j[a] = new f();
3727          return n.constructor = j, j.mixin = function (b) {
3728            return k[a] = j[a] = g(j, b)[a], j;
3729          }, j.open = function (a) {
3730            if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l)) for (var c in l) {
3731              b.call(l, c) && (n[c] = l[c]);
3732            }
3733            return e(n.init) || (n.init = h), j;
3734          }, j.open(i);
3735        }
3736
3737        return g;
3738      }("prototype", {}.hasOwnProperty),
3739        m = {
3740          ease: ["ease", function (a, b, c, d) {
3741            var e = (a /= d) * a,
3742              f = e * a;
3743            return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a);
3744          }],
3745          "ease-in": ["ease-in", function (a, b, c, d) {
3746            var e = (a /= d) * a,
3747              f = e * a;
3748            return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e);
3749          }],
3750          "ease-out": ["ease-out", function (a, b, c, d) {
3751            var e = (a /= d) * a,
3752              f = e * a;
3753            return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a);
3754          }],
3755          "ease-in-out": ["ease-in-out", function (a, b, c, d) {
3756            var e = (a /= d) * a,
3757              f = e * a;
3758            return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e);
3759          }],
3760          linear: ["linear", function (a, b, c, d) {
3761            return c * a / d + b;
3762          }],
3763          "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function (a, b, c, d) {
3764            return c * (a /= d) * a + b;
3765          }],
3766          "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function (a, b, c, d) {
3767            return -c * (a /= d) * (a - 2) + b;
3768          }],
3769          "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function (a, b, c, d) {
3770            return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b;
3771          }],
3772          "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function (a, b, c, d) {
3773            return c * (a /= d) * a * a + b;
3774          }],
3775          "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function (a, b, c, d) {
3776            return c * ((a = a / d - 1) * a * a + 1) + b;
3777          }],
3778          "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function (a, b, c, d) {
3779            return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b;
3780          }],
3781          "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function (a, b, c, d) {
3782            return c * (a /= d) * a * a * a + b;
3783          }],
3784          "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function (a, b, c, d) {
3785            return -c * ((a = a / d - 1) * a * a * a - 1) + b;
3786          }],
3787          "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function (a, b, c, d) {
3788            return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b;
3789          }],
3790          "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function (a, b, c, d) {
3791            return c * (a /= d) * a * a * a * a + b;
3792          }],
3793          "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function (a, b, c, d) {
3794            return c * ((a = a / d - 1) * a * a * a * a + 1) + b;
3795          }],
3796          "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function (a, b, c, d) {
3797            return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b;
3798          }],
3799          "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function (a, b, c, d) {
3800            return -c * Math.cos(a / d * (Math.PI / 2)) + c + b;
3801          }],
3802          "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function (a, b, c, d) {
3803            return c * Math.sin(a / d * (Math.PI / 2)) + b;
3804          }],
3805          "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function (a, b, c, d) {
3806            return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b;
3807          }],
3808          "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function (a, b, c, d) {
3809            return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b;
3810          }],
3811          "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function (a, b, c, d) {
3812            return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b;
3813          }],
3814          "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function (a, b, c, d) {
3815            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;
3816          }],
3817          "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function (a, b, c, d) {
3818            return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b;
3819          }],
3820          "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function (a, b, c, d) {
3821            return c * Math.sqrt(1 - (a = a / d - 1) * a) + b;
3822          }],
3823          "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function (a, b, c, d) {
3824            return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b;
3825          }],
3826          "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function (a, b, c, d, e) {
3827            return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b;
3828          }],
3829          "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function (a, b, c, d, e) {
3830            return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b;
3831          }],
3832          "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function (a, b, c, d, e) {
3833            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;
3834          }]
3835        },
3836        n = {
3837          "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)",
3838          "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)",
3839          "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)"
3840        },
3841        o = document,
3842        p = window,
3843        q = "bkwld-tram",
3844        r = /[\-\.0-9]/g,
3845        s = /[A-Z]/,
3846        t = "number",
3847        u = /^(rgb|#)/,
3848        v = /(em|cm|mm|in|pt|pc|px)$/,
3849        w = /(em|cm|mm|in|pt|pc|px|%)$/,
3850        x = /(deg|rad|turn)$/,
3851        y = "unitless",
3852        z = /(all|none) 0s ease 0s/,
3853        A = /^(width|height)$/,
3854        B = " ",
3855        C = o.createElement("a"),
3856        D = ["Webkit", "Moz", "O", "ms"],
3857        E = ["-webkit-", "-moz-", "-o-", "-ms-"],
3858        F = function F(a) {
3859          if (a in C.style) return {
3860            dom: a,
3861            css: a
3862          };
3863          var b,
3864            c,
3865            d = "",
3866            e = a.split("-");
3867
3868          for (b = 0; b < e.length; b++) {
3869            d += e[b].charAt(0).toUpperCase() + e[b].slice(1);
3870          }
3871
3872          for (b = 0; b < D.length; b++) {
3873            if (c = D[b] + d, c in C.style) return {
3874              dom: c,
3875              css: E[b] + a
3876            };
3877          }
3878        },
3879        G = b.support = {
3880          bind: Function.prototype.bind,
3881          transform: F("transform"),
3882          transition: F("transition"),
3883          backface: F("backface-visibility"),
3884          timing: F("transition-timing-function")
3885        };
3886
3887      if (G.transition) {
3888        var H = G.timing.dom;
3889        if (C.style[H] = m["ease-in-back"][0], !C.style[H]) for (var I in n) {
3890          m[I][0] = n[I];
3891        }
3892      }
3893
3894      var J = b.frame = function () {
3895        var a = p.requestAnimationFrame || p.webkitRequestAnimationFrame || p.mozRequestAnimationFrame || p.oRequestAnimationFrame || p.msRequestAnimationFrame;
3896        return a && G.bind ? a.bind(p) : function (a) {
3897          p.setTimeout(a, 16);
3898        };
3899      }(),
3900        K = b.now = function () {
3901          var a = p.performance,
3902            b = a && (a.now || a.webkitNow || a.msNow || a.mozNow);
3903          return b && G.bind ? b.bind(a) : Date.now || function () {
3904            return +new Date();
3905          };
3906        }(),
3907        L = l(function (b) {
3908          function d(a, b) {
3909            var c = k(("" + a).split(B)),
3910              d = c[0];
3911            b = b || {};
3912            var e = Y[d];
3913            if (!e) return j("Unsupported property: " + d);
3914
3915            if (!b.weak || !this.props[d]) {
3916              var f = e[0],
3917                g = this.props[d];
3918              return g || (g = this.props[d] = new f.Bare()), g.init(this.$el, c, e, b), g;
3919            }
3920          }
3921
3922          function e(a, b, c) {
3923            if (a) {
3924              var e = (0, _typeof2["default"])(a);
3925              if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new S({
3926                duration: a,
3927                context: this,
3928                complete: h
3929              }), void (this.active = !0);
3930
3931              if ("string" == e && b) {
3932                switch (a) {
3933                  case "hide":
3934                    o.call(this);
3935                    break;
3936
3937                  case "stop":
3938                    l.call(this);
3939                    break;
3940
3941                  case "redraw":
3942                    p.call(this);
3943                    break;
3944
3945                  default:
3946                    d.call(this, a, c && c[1]);
3947                }
3948
3949                return h.call(this);
3950              }
3951
3952              if ("function" == e) return void a.call(this, this);
3953
3954              if ("object" == e) {
3955                var f = 0;
3956                u.call(this, a, function (a, b) {
3957                  a.span > f && (f = a.span), a.stop(), a.animate(b);
3958                }, function (a) {
3959                  "wait" in a && (f = i(a.wait, 0));
3960                }), t.call(this), f > 0 && (this.timer = new S({
3961                  duration: f,
3962                  context: this
3963                }), this.active = !0, b && (this.timer.complete = h));
3964                var g = this,
3965                  j = !1,
3966                  k = {};
3967                J(function () {
3968                  u.call(g, a, function (a) {
3969                    a.active && (j = !0, k[a.name] = a.nextStyle);
3970                  }), j && g.$el.css(k);
3971                });
3972              }
3973            }
3974          }
3975
3976          function f(a) {
3977            a = i(a, 0), this.active ? this.queue.push({
3978              options: a
3979            }) : (this.timer = new S({
3980              duration: a,
3981              context: this,
3982              complete: h
3983            }), this.active = !0);
3984          }
3985
3986          function g(a) {
3987            return this.active ? (this.queue.push({
3988              options: a,
3989              args: arguments
3990            }), void (this.timer.complete = h)) : j("No active transition timer. Use start() or wait() before then().");
3991          }
3992
3993          function h() {
3994            if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) {
3995              var a = this.queue.shift();
3996              e.call(this, a.options, !0, a.args);
3997            }
3998          }
3999
4000          function l(a) {
4001            this.timer && this.timer.destroy(), this.queue = [], this.active = !1;
4002            var b;
4003            "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);
4004          }
4005
4006          function m(a) {
4007            l.call(this, a), u.call(this, a, w, x);
4008          }
4009
4010          function n(a) {
4011            "string" != typeof a && (a = "block"), this.el.style.display = a;
4012          }
4013
4014          function o() {
4015            l.call(this), this.el.style.display = "none";
4016          }
4017
4018          function p() {
4019            this.el.offsetHeight;
4020          }
4021
4022          function r() {
4023            l.call(this), a.removeData(this.el, q), this.$el = this.el = null;
4024          }
4025
4026          function t() {
4027            var a,
4028              b,
4029              c = [];
4030            this.upstream && c.push(this.upstream);
4031
4032            for (a in this.props) {
4033              b = this.props[a], b.active && c.push(b.string);
4034            }
4035
4036            c = c.join(","), this.style !== c && (this.style = c, this.el.style[G.transition.dom] = c);
4037          }
4038
4039          function u(a, b, e) {
4040            var f,
4041              g,
4042              h,
4043              i,
4044              j = b !== v,
4045              k = {};
4046
4047            for (f in a) {
4048              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));
4049            }
4050
4051            for (f in k) {
4052              if (h = k[f], g = this.props[f], !g) {
4053                if (!j) continue;
4054                g = d.call(this, f);
4055              }
4056
4057              b.call(this, g, h);
4058            }
4059
4060            e && i && e.call(this, i);
4061          }
4062
4063          function v(a) {
4064            a.stop();
4065          }
4066
4067          function w(a, b) {
4068            a.set(b);
4069          }
4070
4071          function x(a) {
4072            this.$el.css(a);
4073          }
4074
4075          function y(a, c) {
4076            b[a] = function () {
4077              return this.children ? A.call(this, c, arguments) : (this.el && c.apply(this, arguments), this);
4078            };
4079          }
4080
4081          function A(a, b) {
4082            var c,
4083              d = this.children.length;
4084
4085            for (c = 0; d > c; c++) {
4086              a.apply(this.children[c], b);
4087            }
4088
4089            return this;
4090          }
4091
4092          b.init = function (b) {
4093            if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, U.keepInherited && !U.fallback) {
4094              var c = W(this.el, "transition");
4095              c && !z.test(c) && (this.upstream = c);
4096            }
4097
4098            G.backface && U.hideBackface && V(this.el, G.backface.css, "hidden");
4099          }, 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);
4100        }),
4101        M = l(L, function (b) {
4102          function c(b, c) {
4103            var d = a.data(b, q) || a.data(b, q, new L.Bare());
4104            return d.el || d.init(b), c ? d.start(c) : d;
4105          }
4106
4107          b.init = function (b, d) {
4108            var e = a(b);
4109            if (!e.length) return this;
4110            if (1 === e.length) return c(e[0], d);
4111            var f = [];
4112            return e.each(function (a, b) {
4113              f.push(c(b, d));
4114            }), this.children = f, this;
4115          };
4116        }),
4117        N = l(function (a) {
4118          function b() {
4119            var a = this.get();
4120            this.update("auto");
4121            var b = this.get();
4122            return this.update(a), b;
4123          }
4124
4125          function c(a, b, c) {
4126            return void 0 !== b && (c = b), a in m ? a : c;
4127          }
4128
4129          function d(a) {
4130            var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a);
4131            return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3");
4132          }
4133
4134          var f = {
4135            duration: 500,
4136            ease: "ease",
4137            delay: 0
4138          };
4139          a.init = function (a, b, d, e) {
4140            this.$el = a, this.el = a[0];
4141            var g = b[0];
4142            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" : ""));
4143          }, a.set = function (a) {
4144            a = this.convert(a, this.type), this.update(a), this.redraw();
4145          }, a.transition = function (a) {
4146            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;
4147          }, a.fallback = function (a) {
4148            var c = this.el.style[this.name] || this.convert(this.get(), this.type);
4149            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({
4150              from: c,
4151              to: a,
4152              duration: this.duration,
4153              delay: this.delay,
4154              ease: this.ease,
4155              update: this.update,
4156              context: this
4157            });
4158          }, a.get = function () {
4159            return W(this.el, this.name);
4160          }, a.update = function (a) {
4161            V(this.el, this.name, a);
4162          }, a.stop = function () {
4163            (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, V(this.el, this.name, this.get()));
4164            var a = this.tween;
4165            a && a.context && a.destroy();
4166          }, a.convert = function (a, b) {
4167            if ("auto" == a && this.auto) return a;
4168            var c,
4169              e = "number" == typeof a,
4170              f = "string" == typeof a;
4171
4172            switch (b) {
4173              case t:
4174                if (e) return a;
4175                if (f && "" === a.replace(r, "")) return +a;
4176                c = "number(unitless)";
4177                break;
4178
4179              case u:
4180                if (f) {
4181                  if ("" === a && this.original) return this.original;
4182                  if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a);
4183                }
4184
4185                c = "hex or rgb string";
4186                break;
4187
4188              case v:
4189                if (e) return a + this.unit;
4190                if (f && b.test(a)) return a;
4191                c = "number(px) or string(unit)";
4192                break;
4193
4194              case w:
4195                if (e) return a + this.unit;
4196                if (f && b.test(a)) return a;
4197                c = "number(px) or string(unit or %)";
4198                break;
4199
4200              case x:
4201                if (e) return a + this.angle;
4202                if (f && b.test(a)) return a;
4203                c = "number(deg) or string(angle)";
4204                break;
4205
4206              case y:
4207                if (e) return a;
4208                if (f && w.test(a)) return a;
4209                c = "number(unitless) or string(unit or %)";
4210            }
4211
4212            return g(c, a), a;
4213          }, a.redraw = function () {
4214            this.el.offsetHeight;
4215          };
4216        }),
4217        O = l(N, function (a, b) {
4218          a.init = function () {
4219            b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), u));
4220          };
4221        }),
4222        P = l(N, function (a, b) {
4223          a.init = function () {
4224            b.init.apply(this, arguments), this.animate = this.fallback;
4225          }, a.get = function () {
4226            return this.$el[this.name]();
4227          }, a.update = function (a) {
4228            this.$el[this.name](a);
4229          };
4230        }),
4231        Q = l(N, function (a, b) {
4232          function c(a, b) {
4233            var c, d, e, f, g;
4234
4235            for (c in a) {
4236              f = Z[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e);
4237            }
4238          }
4239
4240          a.init = function () {
4241            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()));
4242          }, a.set = function (a) {
4243            c.call(this, a, function (a, b) {
4244              this.current[a] = b;
4245            }), V(this.el, this.name, this.style(this.current)), this.redraw();
4246          }, a.transition = function (a) {
4247            var b = this.values(a);
4248            this.tween = new T({
4249              current: this.current,
4250              values: b,
4251              duration: this.duration,
4252              delay: this.delay,
4253              ease: this.ease
4254            });
4255            var c,
4256              d = {};
4257
4258            for (c in this.current) {
4259              d[c] = c in b ? b[c] : this.current[c];
4260            }
4261
4262            this.active = !0, this.nextStyle = this.style(d);
4263          }, a.fallback = function (a) {
4264            var b = this.values(a);
4265            this.tween = new T({
4266              current: this.current,
4267              values: b,
4268              duration: this.duration,
4269              delay: this.delay,
4270              ease: this.ease,
4271              update: this.update,
4272              context: this
4273            });
4274          }, a.update = function () {
4275            V(this.el, this.name, this.style(this.current));
4276          }, a.style = function (a) {
4277            var b,
4278              c = "";
4279
4280            for (b in a) {
4281              c += b + "(" + a[b] + ") ";
4282            }
4283
4284            return c;
4285          }, a.values = function (a) {
4286            var b,
4287              d = {};
4288            return c.call(this, a, function (a, c, e) {
4289              d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e));
4290            }), d;
4291          };
4292        }),
4293        R = l(function (b) {
4294          function c(a) {
4295            1 === n.push(a) && J(g);
4296          }
4297
4298          function g() {
4299            var a,
4300              b,
4301              c,
4302              d = n.length;
4303            if (d) for (J(g), b = K(), a = d; a--;) {
4304              c = n[a], c && c.render(b);
4305            }
4306          }
4307
4308          function i(b) {
4309            var c,
4310              d = a.inArray(b, n);
4311            d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c)));
4312          }
4313
4314          function j(a) {
4315            return Math.round(a * o) / o;
4316          }
4317
4318          function k(a, b, c) {
4319            return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2]));
4320          }
4321
4322          var l = {
4323            ease: m.ease[1],
4324            from: 0,
4325            to: 1
4326          };
4327          b.init = function (a) {
4328            this.duration = a.duration || 0, this.delay = a.delay || 0;
4329            var b = a.ease || l.ease;
4330            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;
4331            var c = a.from,
4332              d = a.to;
4333            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();
4334          }, b.play = function () {
4335            this.active || (this.start || (this.start = K()), this.active = !0, c(this));
4336          }, b.stop = function () {
4337            this.active && (this.active = !1, i(this));
4338          }, b.render = function (a) {
4339            var b,
4340              c = a - this.start;
4341
4342            if (this.delay) {
4343              if (c <= this.delay) return;
4344              c -= this.delay;
4345            }
4346
4347            if (c < this.duration) {
4348              var d = this.ease(c, 0, 1, this.duration);
4349              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);
4350            }
4351
4352            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();
4353          }, b.format = function (a, b) {
4354            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);
4355
4356            if (!this.unit) {
4357              var c = b.replace(r, ""),
4358                e = a.replace(r, "");
4359              c !== e && h("tween", b, a), this.unit = c;
4360            }
4361
4362            b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b;
4363          }, b.destroy = function () {
4364            this.stop(), this.context = null, this.ease = this.update = this.complete = f;
4365          };
4366          var n = [],
4367            o = 1e3;
4368        }),
4369        S = l(R, function (a) {
4370          a.init = function (a) {
4371            this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play();
4372          }, a.render = function (a) {
4373            var b = a - this.start;
4374            b < this.duration || (this.complete.call(this.context), this.destroy());
4375          };
4376        }),
4377        T = l(R, function (a, b) {
4378          a.init = function (a) {
4379            this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current;
4380            var b, c;
4381
4382            for (b in a.values) {
4383              c = a.values[b], this.current[b] !== c && this.tweens.push(new R({
4384                name: b,
4385                from: this.current[b],
4386                to: c,
4387                duration: a.duration,
4388                delay: a.delay,
4389                ease: a.ease,
4390                autoplay: !1
4391              }));
4392            }
4393
4394            this.play();
4395          }, a.render = function (a) {
4396            var b,
4397              c,
4398              d = this.tweens.length,
4399              e = !1;
4400
4401            for (b = d; b--;) {
4402              c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0);
4403            }
4404
4405            return e ? void (this.update && this.update.call(this.context)) : this.destroy();
4406          }, a.destroy = function () {
4407            if (b.destroy.call(this), this.tweens) {
4408              var a,
4409                c = this.tweens.length;
4410
4411              for (a = c; a--;) {
4412                this.tweens[a].destroy();
4413              }
4414
4415              this.tweens = null, this.current = null;
4416            }
4417          };
4418        }),
4419        U = b.config = {
4420          debug: !1,
4421          defaultUnit: "px",
4422          defaultAngle: "deg",
4423          keepInherited: !1,
4424          hideBackface: !1,
4425          perspective: "",
4426          fallback: !G.transition,
4427          agentTests: []
4428        };
4429
4430      b.fallback = function (a) {
4431        if (!G.transition) return U.fallback = !0;
4432        U.agentTests.push("(" + a + ")");
4433        var b = new RegExp(U.agentTests.join("|"), "i");
4434        U.fallback = b.test(navigator.userAgent);
4435      }, b.fallback("6.0.[2-5] Safari"), b.tween = function (a) {
4436        return new R(a);
4437      }, b.delay = function (a, b, c) {
4438        return new S({
4439          complete: b,
4440          duration: a,
4441          context: c
4442        });
4443      }, a.fn.tram = function (a) {
4444        return b.call(null, this, a);
4445      };
4446      var V = a.style,
4447        W = a.css,
4448        X = {
4449          transform: G.transform && G.transform.css
4450        },
4451        Y = {
4452          color: [O, u],
4453          background: [O, u, "background-color"],
4454          "outline-color": [O, u],
4455          "border-color": [O, u],
4456          "border-top-color": [O, u],
4457          "border-right-color": [O, u],
4458          "border-bottom-color": [O, u],
4459          "border-left-color": [O, u],
4460          "border-width": [N, v],
4461          "border-top-width": [N, v],
4462          "border-right-width": [N, v],
4463          "border-bottom-width": [N, v],
4464          "border-left-width": [N, v],
4465          "border-spacing": [N, v],
4466          "letter-spacing": [N, v],
4467          margin: [N, v],
4468          "margin-top": [N, v],
4469          "margin-right": [N, v],
4470          "margin-bottom": [N, v],
4471          "margin-left": [N, v],
4472          padding: [N, v],
4473          "padding-top": [N, v],
4474          "padding-right": [N, v],
4475          "padding-bottom": [N, v],
4476          "padding-left": [N, v],
4477          "outline-width": [N, v],
4478          opacity: [N, t],
4479          top: [N, w],
4480          right: [N, w],
4481          bottom: [N, w],
4482          left: [N, w],
4483          "font-size": [N, w],
4484          "text-indent": [N, w],
4485          "word-spacing": [N, w],
4486          width: [N, w],
4487          "min-width": [N, w],
4488          "max-width": [N, w],
4489          height: [N, w],
4490          "min-height": [N, w],
4491          "max-height": [N, w],
4492          "line-height": [N, y],
4493          "scroll-top": [P, t, "scrollTop"],
4494          "scroll-left": [P, t, "scrollLeft"]
4495        },
4496        Z = {};
4497      G.transform && (Y.transform = [Q], Z = {
4498        x: [w, "translateX"],
4499        y: [w, "translateY"],
vendor: 6,158 bytes, lines 4500-4709
4500        rotate: [x],
4501        rotateX: [x],
4502        rotateY: [x],
4503        scale: [t],
4504        scaleX: [t],
4505        scaleY: [t],
4506        skew: [x],
4507        skewX: [x],
4508        skewY: [x]
4509      }), G.transform && G.backface && (Z.z = [w, "translateZ"], Z.rotateZ = [x], Z.scaleZ = [t], Z.perspective = [v]);
4510      var $ = /ms/,
4511        _ = /s|\./;
4512      return a.tram = b;
4513    }(window.jQuery);
4514
4515    /***/
4516  }),
4517/* 67 */
4518/***/ (function (module, exports, __webpack_require__) {
4519
4520    var DESCRIPTORS = __webpack_require__(15);
4521    var propertyIsEnumerableModule = __webpack_require__(132);
4522    var createPropertyDescriptor = __webpack_require__(68);
4523    var toIndexedObject = __webpack_require__(38);
4524    var toPrimitive = __webpack_require__(69);
4525    var has = __webpack_require__(17);
4526    var IE8_DOM_DEFINE = __webpack_require__(70);
4527
4528    var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
4529
4530    // `Object.getOwnPropertyDescriptor` method
4531    // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
4532    exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
4533      O = toIndexedObject(O);
4534      P = toPrimitive(P, true);
4535      if (IE8_DOM_DEFINE) try {
4536        return nativeGetOwnPropertyDescriptor(O, P);
4537      } catch (error) { /* empty */ }
4538      if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
4539    };
4540
4541
4542    /***/
4543  }),
4544/* 68 */
4545/***/ (function (module, exports) {
4546
4547    module.exports = function (bitmap, value) {
4548      return {
4549        enumerable: !(bitmap & 1),
4550        configurable: !(bitmap & 2),
4551        writable: !(bitmap & 4),
4552        value: value
4553      };
4554    };
4555
4556
4557    /***/
4558  }),
4559/* 69 */
4560/***/ (function (module, exports, __webpack_require__) {
4561
4562    var isObject = __webpack_require__(24);
4563
4564    // `ToPrimitive` abstract operation
4565    // https://tc39.github.io/ecma262/#sec-toprimitive
4566    // instead of the ES6 spec version, we didn't implement @@toPrimitive case
4567    // and the second argument - flag - preferred type is a string
4568    module.exports = function (input, PREFERRED_STRING) {
4569      if (!isObject(input)) return input;
4570      var fn, val;
4571      if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
4572      if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
4573      if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
4574      throw TypeError("Can't convert object to primitive value");
4575    };
4576
4577
4578    /***/
4579  }),
4580/* 70 */
4581/***/ (function (module, exports, __webpack_require__) {
4582
4583    var DESCRIPTORS = __webpack_require__(15);
4584    var fails = __webpack_require__(16);
4585    var createElement = __webpack_require__(71);
4586
4587    // Thank's IE8 for his funny defineProperty
4588    module.exports = !DESCRIPTORS && !fails(function () {
4589      return Object.defineProperty(createElement('div'), 'a', {
4590        get: function () { return 7; }
4591      }).a != 7;
4592    });
4593
4594
4595    /***/
4596  }),
4597/* 71 */
4598/***/ (function (module, exports, __webpack_require__) {
4599
4600    var global = __webpack_require__(4);
4601    var isObject = __webpack_require__(24);
4602
4603    var document = global.document;
4604    // typeof document.createElement is 'object' in old IE
4605    var EXISTS = isObject(document) && isObject(document.createElement);
4606
4607    module.exports = function (it) {
4608      return EXISTS ? document.createElement(it) : {};
4609    };
4610
4611
4612    /***/
4613  }),
4614/* 72 */
4615/***/ (function (module, exports, __webpack_require__) {
4616
4617    var shared = __webpack_require__(26);
4618
4619    module.exports = shared('native-function-to-string', Function.toString);
4620
4621
4622    /***/
4623  }),
4624/* 73 */
4625/***/ (function (module, exports, __webpack_require__) {
4626
4627    var shared = __webpack_require__(26);
4628    var uid = __webpack_require__(74);
4629
4630    var keys = shared('keys');
4631
4632    module.exports = function (key) {
4633      return keys[key] || (keys[key] = uid(key));
4634    };
4635
4636
4637    /***/
4638  }),
4639/* 74 */
4640/***/ (function (module, exports) {
4641
4642    var id = 0;
4643    var postfix = Math.random();
4644
4645    module.exports = function (key) {
4646      return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
4647    };
4648
4649
4650    /***/
4651  }),
4652/* 75 */
4653/***/ (function (module, exports, __webpack_require__) {
4654
4655    var path = __webpack_require__(142);
4656    var global = __webpack_require__(4);
4657
4658    var aFunction = function (variable) {
4659      return typeof variable == 'function' ? variable : undefined;
4660    };
4661
4662    module.exports = function (namespace, method) {
4663      return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
4664        : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
4665    };
4666
4667
4668    /***/
4669  }),
4670/* 76 */
4671/***/ (function (module, exports, __webpack_require__) {
4672
4673    var has = __webpack_require__(17);
4674    var toIndexedObject = __webpack_require__(38);
4675    var indexOf = __webpack_require__(77).indexOf;
4676    var hiddenKeys = __webpack_require__(41);
4677
4678    module.exports = function (object, names) {
4679      var O = toIndexedObject(object);
4680      var i = 0;
4681      var result = [];
4682      var key;
4683      for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
4684      // Don't enum bug & hidden keys
4685      while (names.length > i) if (has(O, key = names[i++])) {
4686        ~indexOf(result, key) || result.push(key);
4687      }
4688      return result;
4689    };
4690
4691
4692    /***/
4693  }),
4694/* 77 */
4695/***/ (function (module, exports, __webpack_require__) {
4696
4697    var toIndexedObject = __webpack_require__(38);
4698    var toLength = __webpack_require__(144);
4699    var toAbsoluteIndex = __webpack_require__(145);
4700
4701    // `Array.prototype.{ indexOf, includes }` methods implementation
4702    var createMethod = function (IS_INCLUDES) {
4703      return function ($this, el, fromIndex) {
4704        var O = toIndexedObject($this);
4705        var length = toLength(O.length);
4706        var index = toAbsoluteIndex(fromIndex, length);
4707        var value;
4708        // Array#includes uses SameValueZero equality algorithm
4709        // eslint-disable-next-line no-self-compare
4710        if (IS_INCLUDES && el != el) while (length > index) {
4711          value = O[index++];
4712          // eslint-disable-next-line no-self-compare
4713          if (value != value) return true;
4714          // Array#indexOf ignores holes, Array#includes - not
4715        } else for (; length > index; index++) {
4716          if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
4717        } return !IS_INCLUDES && -1;
4718      };
4719    };
4720
4721    module.exports = {
4722      // `Array.prototype.includes` method
4723      // https://tc39.github.io/ecma262/#sec-array.prototype.includes
4724      includes: createMethod(true),
4725      // `Array.prototype.indexOf` method
4726      // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
4727      indexOf: createMethod(false)
4728    };
4729
4730
4731    /***/
4732  }),
4733/* 78 */
4734/***/ (function (module, exports) {
4735
4736    var ceil = Math.ceil;
4737    var floor = Math.floor;
4738
4739    // `ToInteger` abstract operation
4740    // https://tc39.github.io/ecma262/#sec-tointeger
4741    module.exports = function (argument) {
4742      return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
4743    };
4744
4745
4746    /***/
4747  }),
4748/* 79 */
4749/***/ (function (module, __webpack_exports__, __webpack_require__) {
4750
4751    "use strict";
4752    __webpack_require__.r(__webpack_exports__);
4753/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43);
4754/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStore", function () { return _createStore__WEBPACK_IMPORTED_MODULE_0__["default"]; });
4755
4756/* harmony import */ var _combineReducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82);
4757/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function () { return _combineReducers__WEBPACK_IMPORTED_MODULE_1__["default"]; });
4758
4759/* harmony import */ var _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84);
4760/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function () { return _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__["default"]; });
4761
4762/* harmony import */ var _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85);
4763/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function () { return _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__["default"]; });
4764
4765/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44);
4766/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function () { return _compose__WEBPACK_IMPORTED_MODULE_4__["default"]; });
4767
4768/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83);
4769
4770
4771
4772
4773
4774
4775
4776    /*
4777    * This is a dummy function to check if the function name has been altered by minification.
4778    * If the function has been minified and NODE_ENV !== 'production', warn the user.
4779    */
4780    function isCrushed() { }
4781
4782    if (false) { }
4783
4784
4785
4786    /***/
4787  }),
4788/* 80 */
4789/***/ (function (module, __webpack_exports__, __webpack_require__) {
4790
4791    "use strict";
4792    __webpack_require__.r(__webpack_exports__);
4793/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(158);
4794/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(163);
4795/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(165);
4796
4797
4798
4799
4800    /** `Object#toString` result references. */
4801    var objectTag = '[object Object]';
4802
4803    /** Used for built-in method references. */
4804    var funcProto = Function.prototype,
4805      objectProto = Object.prototype;
4806
4807    /** Used to resolve the decompiled source of functions. */
4808    var funcToString = funcProto.toString;
4809
4810    /** Used to check objects for own properties. */
4811    var hasOwnProperty = objectProto.hasOwnProperty;
4812
4813    /** Used to infer the `Object` constructor. */
4814    var objectCtorString = funcToString.call(Object);
4815
4816    /**
4817     * Checks if `value` is a plain object, that is, an object created by the
4818     * `Object` constructor or one with a `[[Prototype]]` of `null`.
4819     *
4820     * @static
4821     * @memberOf _
4822     * @since 0.8.0
4823     * @category Lang
4824     * @param {*} value The value to check.
4825     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
4826     * @example
4827     *
4828     * function Foo() {
4829     *   this.a = 1;
4830     * }
4831     *
4832     * _.isPlainObject(new Foo);
4833     * // => false
4834     *
4835     * _.isPlainObject([1, 2, 3]);
4836     * // => false
4837     *
4838     * _.isPlainObject({ 'x': 0, 'y': 0 });
4839     * // => true
4840     *
4841     * _.isPlainObject(Object.create(null));
4842     * // => true
4843     */
4844    function isPlainObject(value) {
4845      if (!Object(_isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value) || Object(_baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) != objectTag) {
4846        return false;
4847      }
4848      var proto = Object(_getPrototype_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value);
4849      if (proto === null) {
4850        return true;
4851      }
4852      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
4853      return typeof Ctor == 'function' && Ctor instanceof Ctor &&
4854        funcToString.call(Ctor) == objectCtorString;
4855    }
4856
4857/* harmony default export */ __webpack_exports__["default"] = (isPlainObject);
4858
4859
4860    /***/
4861  }),
4862/* 81 */
4863/***/ (function (module, __webpack_exports__, __webpack_require__) {
4864
4865    "use strict";
4866    __webpack_require__.r(__webpack_exports__);
4867/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159);
4868
4869
4870    /** Built-in value references. */
4871    var Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__["default"].Symbol;
4872
4873/* harmony default export */ __webpack_exports__["default"] = (Symbol);
4874
4875
4876    /***/
4877  }),
4878/* 82 */
4879/***/ (function (module, __webpack_exports__, __webpack_require__) {
4880
4881    "use strict";
4882    __webpack_require__.r(__webpack_exports__);
4883/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return combineReducers; });
4884/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43);
4885/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80);
4886/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83);
4887
4888
4889
4890
4891    function getUndefinedStateErrorMessage(key, action) {
4892      var actionType = action && action.type;
4893      var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
4894
4895      return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';
4896    }
4897
4898    function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unex
4898pectedKeyCache) {
4899      var reducerKeys = Object.keys(reducers);
4900      var argumentName = action && action.type === _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
4901
4902      if (reducerKeys.length === 0) {
4903        return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
4904      }
4905
4906      if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(inputState)) {
4907        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('", "') + '"');
4908      }
4909
4910      var unexpectedKeys = Object.keys(inputState).filter(function (key) {
4911        return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
4912      });
4913
4914      unexpectedKeys.forEach(function (key) {
4915        unexpectedKeyCache[key] = true;
4916      });
4917
4918      if (unexpectedKeys.length > 0) {
4919        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.');
4920      }
4921    }
4922
4923    function assertReducerSanity(reducers) {
4924      Object.keys(reducers).forEach(function (key) {
4925        var reducer = reducers[key];
4926        var initialState = reducer(undefined, { type: _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT });
4927
4928        if (typeof initialState === 'undefined') {
4929          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.');
4930        }
4931
4932        var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');
4933        if (typeof reducer(undefined, { type: type }) === 'undefined') {
4934          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.');
4935        }
4936      });
4937    }
4938
4939    /**
4940     * Turns an object whose values are different reducer functions, into a single
4941     * reducer function. It will call every child reducer, and gather their results
4942     * into a single state object, whose keys correspond to the keys of the passed
4943     * reducer functions.
4944     *
4945     * @param {Object} reducers An object whose values correspond to different
4946     * reducer functions that need to be combined into one. One handy way to obtain
4947     * it is to use ES6 `import * as reducers` syntax. The reducers may never return
4948     * undefined for any action. Instead, they should return their initial state
4949     * if the state passed to them was undefined, and the current state for any
4950     * unrecognized action.
4951     *
4952     * @returns {Function} A reducer function that invokes every reducer inside the
4953     * passed object, and builds a state object with the same shape.
4954     */
4955    function combineReducers(reducers) {
4956      var reducerKeys = Object.keys(reducers);
4957      var finalReducers = {};
4958      for (var i = 0; i < reducerKeys.length; i++) {
4959        var key = reducerKeys[i];
4960
4961        if (false) { }
4962
4963        if (typeof reducers[key] === 'function') {
4964          finalReducers[key] = reducers[key];
4965        }
4966      }
4967      var finalReducerKeys = Object.keys(finalReducers);
4968
4969      if (false) { var unexpectedKeyCache; }
4970
4971      var sanityError;
4972      try {
4973        assertReducerSanity(finalReducers);
4974      } catch (e) {
4975        sanityError = e;
4976      }
4977
4978      return function combination() {
4979        var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
4980        var action = arguments[1];
4981
4982        if (sanityError) {
4983          throw sanityError;
4984        }
4985
4986        if (false) { var warningMessage; }
4987
4988        var hasChanged = false;
4989        var nextState = {};
4990        for (var i = 0; i < finalReducerKeys.length; i++) {
4991          var key = finalReducerKeys[i];
4992          var reducer = finalReducers[key];
4993          var previousStateForKey = state[key];
4994          var nextStateForKey = reducer(previousStateForKey, action);
4995          if (typeof nextStateForKey === 'undefined') {
4996            var errorMessage = getUndefinedStateErrorMessage(key, action);
4997            throw new Error(errorMessage);
4998          }
4999          nextState[key] = nextStateForKey;
5000          hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
5001        }
5002        return hasChanged ? nextState : state;
5003      };
5004    }
5005
5006    /***/
5007  }),
5008/* 83 */
5009/***/ (function (module, __webpack_exports__, __webpack_require__) {
5010
5011    "use strict";
5012    __webpack_require__.r(__webpack_exports__);
5013/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return warning; });
5014    /**
5015     * Prints a warning in the console if it exists.
5016     *
5017     * @param {String} message The warning message.
5018     * @returns {void}
5019     */
5020    function warning(message) {
5021      /* eslint-disable no-console */
5022      if (typeof console !== 'undefined' && typeof console.error === 'function') {
5023        console.error(message);
5024      }
5025      /* eslint-enable no-console */
5026      try {
5027        // This error was thrown as a convenience so that if you enable
5028        // "break on all exceptions" in your console,
5029        // it would pause the execution at this line.
5030        throw new Error(message);
5031        /* eslint-disable no-empty */
5032      } catch (e) { }
5033      /* eslint-enable no-empty */
5034    }
5035
5036    /***/
5037  }),
5038/* 84 */
5039/***/ (function (module, __webpack_exports__, __webpack_require__) {
5040
5041    "use strict";
5042    __webpack_require__.r(__webpack_exports__);
5043/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return bindActionCreators; });
5044    function bindActionCreator(actionCreator, dispatch) {
5045      return function () {
5046        return dispatch(actionCreator.apply(undefined, arguments));
5047      };
5048    }
5049
5050    /**
5051     * Turns an object whose values are action creators, into an object with the
5052     * same keys, but with every function wrapped into a `dispatch` call so they
5053     * may be invoked directly. This is just a convenience method, as you can call
5054     * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
5055     *
5056     * For convenience, you can also pass a single function as the first argument,
5057     * and get a function in return.
5058     *
5059     * @param {Function|Object} actionCreators An object whose values are action
5060     * creator functions. One handy way to obtain it is to use ES6 `import * as`
5061     * syntax. You may also pass a single function.
5062     *
5063     * @param {Function} dispatch The `dispatch` function available on your Redux
5064     * store.
5065     *
5066     * @returns {Function|Object} The object mimicking the original object, but with
5067     * every action creator wrapped into the `dispatch` call. If you passed a
5068     * function as `actionCreators`, the return value will also be a single
5069     * function.
5070     */
5071    function bindActionCreators(actionCreators, dispatch) {
5072      if (typeof actionCreators === 'function') {
5073        return bindActionCreator(actionCreators, dispatch);
5074      }
5075
5076      if (typeof actionCreators !== 'object' || actionCreators === null) {
5077        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"?');
5078      }
5079
5080      var keys = Object.keys(actionCreators);
5081      var boundActionCreators = {};
5082      for (var i = 0; i < keys.length; i++) {
5083        var key = keys[i];
5084        var actionCreator = actionCreators[key];
5085        if (typeof actionCreator === 'function') {
5086          boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
5087        }
5088      }
5089      return boundActionCreators;
5090    }
5091
5092    /***/
5093  }),
5094/* 85 */
5095/***/ (function (module, __webpack_exports__, __webpack_require__) {
5096
5097    "use strict";
5098    __webpack_require__.r(__webpack_exports__);
5099/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return applyMiddleware; });
5100/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44);
5101    var _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; };
5102
5103
5104
5105    /**
5106     * Creates a store enhancer that applies middleware to the dispatch method
5107     * of the Redux store. This is handy for a variety of tasks, such as expressing
5108     * asynchronous actions in a concise manner, or logging every action payload.
5109     *
5110     * See `redux-thunk` package as an example of the Redux middleware.
5111     *
5112     * Because middleware is potentially asynchronous, this should be the first
5113     * store enhancer in the composition chain.
5114     *
5115     * Note that each middleware will be given the `dispatch` and `getState` functions
5116     * as named arguments.
5117     *
5118     * @param {...Function} middlewares The middleware chain to be applied.
5119     * @returns {Function} A store enhancer applying the middleware.
5120     */
5121    function applyMiddleware() {
5122      for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
5123        middlewares[_key] = arguments[_key];
5124      }
5125
5126      return function (createStore) {
5127        return function (reducer, preloadedState, enhancer) {
5128          var store = createStore(reducer, preloadedState, enhancer);
5129          var _dispatch = store.dispatch;
5130          var chain = [];
5131
5132          var middlewareAPI = {
5133            getState: store.getState,
5134            dispatch: function dispatch(action) {
5135              return _dispatch(action);
5136            }
5137          };
5138          chain = middlewares.map(function (middleware) {
5139            return middleware(middlewareAPI);
5140          });
5141          _dispatch = _compose__WEBPACK_IMPORTED_MODULE_0__["default"].apply(undefined, chain)(store.dispatch);
5142
5143          return _extends({}, store, {
5144            dispatch: _dispatch
5145          });
5146        };
5147      };
5148    }
5149
5150    /***/
5151  }),
5152/* 86 */
5153/***/ (function (module, exports, __webpack_require__) {
5154
5155    var createFind = __webpack_require__(87),
5156      findIndex = __webpack_require__(243);
5157
5158    /**
5159     * Iterates over elements of `collection`, returning the first element
5160     * `predicate` returns truthy for. The predicate is invoked with three
5161     * arguments: (value, index|key, collection).
5162     *
5163     * @static
5164     * @memberOf _
5165     * @since 0.1.0
5166     * @category Collection
5167     * @param {Array|Object} collection The collection to inspect.
5168     * @param {Function} [predicate=_.identity] The function invoked per iteration.
5169     * @param {number} [fromIndex=0] The index to search from.
5170     * @returns {*} Returns the matched element, else `undefined`.
5171     * @example
5172     *
5173     * var users = [
5174     *   { 'user': 'barney',  'age': 36, 'active': true },
5175     *   { 'user': 'fred',    'age': 40, 'active': false },
5176     *   { 'user': 'pebbles', 'age': 1,  'active': true }
5177     * ];
5178     *
5179     * _.find(users, function(o) { return o.age < 40; });
5180     * // => object for 'barney'
5181     *
5182     * // The `_.matches` iteratee shorthand.
5183     * _.find(users, { 'age': 1, 'active': true });
5184     * // => object for 'pebbles'
5185     *
5186     * // The `_.matchesProperty` iteratee shorthand.
5187     * _.find(users, ['active', false]);
5188     * // => object for 'fred'
5189     *
5190     * // The `_.property` iteratee shorthand.
5191     * _.find(users, 'active');
5192     * // => object for 'barney'
5193     */
5194    var find = createFind(findIndex);
5195
5196    module.exports = find;
5197
5198
5199    /***/
5200  }),
5201/* 87 */
5202/***/ (function (module, exports, __webpack_require__) {
5203
5204    var baseIteratee = __webpack_require__(7),
5205      isArrayLike = __webpack_require__(12),
5206      keys = __webpack_require__(33);
5207
5208    /**
5209     * Creates a `_.find` or `_.findLast` function.
5210     *
5211     * @private
5212     * @param {Function} findIndexFunc The function to find the collection index.
5213     * @returns {Function} Returns the new find function.
5214     */
5215    function createFind(findIndexFunc) {
5216      return function (collection, predicate, fromIndex) {
5217        var iterable = Object(collection);
5218        if (!isArrayLike(collection)) {
5219          var iteratee = baseIteratee(predicate, 3);
5220          collection = keys(collection);
5221          predicate = function (key) { return iteratee(iterable[key], key, iterable); };
5222        }
5223        var index = findIndexFunc(collection, predicate, fromIndex);
5224        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
5225      };
5226    }
5227
5228    module.exports = createFind;
5229
5230
5231    /***/
5232  }),
5233/* 88 */
5234/***/ (function (module, exports, __webpack_require__) {
5235
5236    var ListCache = __webpack_require__(29),
5237      stackClear = __webpack_require__(185),
5238      stackDelete = __webpack_require__(186),
5239      stackGet = __webpack_require__(187),
5240      stackHas = __webpack_require__(188),
5241      stackSet = __webpack_require__(189);
5242
5243    /**
5244     * Creates a stack cache object to store key-value pairs.
5245     *
5246     * @private
5247     * @constructor
5248     * @param {Array} [entries] The key-value pairs to cache.
5249     */
5250    function Stack(entries) {
vendor: 5,167 bytes, lines 5251-5422
5251      var data = this.__data__ = new ListCache(entries);
5252      this.size = data.size;
5253    }
5254
5255    // Add methods to `Stack`.
5256    Stack.prototype.clear = stackClear;
5257    Stack.prototype['delete'] = stackDelete;
5258    Stack.prototype.get = stackGet;
5259    Stack.prototype.has = stackHas;
5260    Stack.prototype.set = stackSet;
5261
5262    module.exports = Stack;
5263
5264
5265    /***/
5266  }),
5267/* 89 */
5268/***/ (function (module, exports, __webpack_require__) {
5269
5270    var baseGetTag = __webpack_require__(11),
5271      isObject = __webpack_require__(6);
5272
5273    /** `Object#toString` result references. */
5274    var asyncTag = '[object AsyncFunction]',
5275      funcTag = '[object Function]',
5276      genTag = '[object GeneratorFunction]',
5277      proxyTag = '[object Proxy]';
5278
5279    /**
5280     * Checks if `value` is classified as a `Function` object.
5281     *
5282     * @static
5283     * @memberOf _
5284     * @since 0.1.0
5285     * @category Lang
5286     * @param {*} value The value to check.
5287     * @returns {boolean} Returns `true` if `value` is a function, else `false`.
5288     * @example
5289     *
5290     * _.isFunction(_);
5291     * // => true
5292     *
5293     * _.isFunction(/abc/);
5294     * // => false
5295     */
5296    function isFunction(value) {
5297      if (!isObject(value)) {
5298        return false;
5299      }
5300      // The use of `Object#toString` avoids issues with the `typeof` operator
5301      // in Safari 9 which returns 'object' for typed arrays and other constructors.
5302      var tag = baseGetTag(value);
5303      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
5304    }
5305
5306    module.exports = isFunction;
5307
5308
5309    /***/
5310  }),
5311/* 90 */
5312/***/ (function (module, exports, __webpack_require__) {
5313
5314/* WEBPACK VAR INJECTION */(function (global) {/** Detect free variable `global` from Node.js. */
5315      var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
5316
5317      module.exports = freeGlobal;
5318
5319      /* WEBPACK VAR INJECTION */
5320    }.call(this, __webpack_require__(23)))
5321
5322    /***/
5323  }),
5324/* 91 */
5325/***/ (function (module, exports) {
5326
5327    /** Used for built-in method references. */
5328    var funcProto = Function.prototype;
5329
5330    /** Used to resolve the decompiled source of functions. */
5331    var funcToString = funcProto.toString;
5332
5333    /**
5334     * Converts `func` to its source code.
5335     *
5336     * @private
5337     * @param {Function} func The function to convert.
5338     * @returns {string} Returns the source code.
5339     */
5340    function toSource(func) {
5341      if (func != null) {
5342        try {
5343          return funcToString.call(func);
5344        } catch (e) { }
5345        try {
5346          return (func + '');
5347        } catch (e) { }
5348      }
5349      return '';
5350    }
5351
5352    module.exports = toSource;
5353
5354
5355    /***/
5356  }),
5357/* 92 */
5358/***/ (function (module, exports, __webpack_require__) {
5359
5360    var baseIsEqualDeep = __webpack_require__(208),
5361      isObjectLike = __webpack_require__(9);
5362
5363    /**
5364     * The base implementation of `_.isEqual` which supports partial comparisons
5365     * and tracks traversed objects.
5366     *
5367     * @private
5368     * @param {*} value The value to compare.
5369     * @param {*} other The other value to compare.
5370     * @param {boolean} bitmask The bitmask flags.
5371     *  1 - Unordered comparison
5372     *  2 - Partial comparison
5373     * @param {Function} [customizer] The function to customize comparisons.
5374     * @param {Object} [stack] Tracks traversed `value` and `other` objects.
5375     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
5376     */
5377    function baseIsEqual(value, other, bitmask, customizer, stack) {
5378      if (value === other) {
5379        return true;
5380      }
5381      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
5382        return value !== value && other !== other;
5383      }
5384      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
5385    }
5386
5387    module.exports = baseIsEqual;
5388
5389
5390    /***/
5391  }),
5392/* 93 */
5393/***/ (function (module, exports, __webpack_require__) {
5394
5395    var SetCache = __webpack_require__(209),
5396      arraySome = __webpack_require__(212),
5397      cacheHas = __webpack_require__(213);
5398
5399    /** Used to compose bitmasks for value comparisons. */
5400    var COMPARE_PARTIAL_FLAG = 1,
5401      COMPARE_UNORDERED_FLAG = 2;
5402
5403    /**
5404     * A specialized version of `baseIsEqualDeep` for arrays with support for
5405     * partial deep comparisons.
5406     *
5407     * @private
5408     * @param {Array} array The array to compare.
5409     * @param {Array} other The other array to compare.
5410     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5411     * @param {Function} customizer The function to customize comparisons.
5412     * @param {Function} equalFunc The function to determine equivalents of values.
5413     * @param {Object} stack Tracks traversed `array` and `other` objects.
5414     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
5415     */
5416    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
5417      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
5418        arrLength = array.length,
5419        othLength = other.length;
5420
5421      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
5422        return false;
vendor: 1,348 bytes, lines 5423-5462
5423      }
5424      // Check that cyclic values are equal.
5425      var arrStacked = stack.get(array);
5426      var othStacked = stack.get(other);
5427      if (arrStacked && othStacked) {
5428        return arrStacked == other && othStacked == array;
5429      }
5430      var index = -1,
5431        result = true,
5432        seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
5433
5434      stack.set(array, other);
5435      stack.set(other, array);
5436
5437      // Ignore non-index properties.
5438      while (++index < arrLength) {
5439        var arrValue = array[index],
5440          othValue = other[index];
5441
5442        if (customizer) {
5443          var compared = isPartial
5444            ? customizer(othValue, arrValue, index, other, array, stack)
5445            : customizer(arrValue, othValue, index, array, other, stack);
5446        }
5447        if (compared !== undefined) {
5448          if (compared) {
5449            continue;
5450          }
5451          result = false;
5452          break;
5453        }
5454        // Recursively compare arrays (susceptible to call stack limits).
5455        if (seen) {
5456          if (!arraySome(other, function (othValue, othIndex) {
5457            if (!cacheHas(seen, othIndex) &&
5458              (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
5459              return seen.push(othIndex);
5460            }
5461          })) {
5462            result = false;
vendor: 11,471 bytes, lines 5463-5896
5463            break;
5464          }
5465        } else if (!(
5466          arrValue === othValue ||
5467          equalFunc(arrValue, othValue, bitmask, customizer, stack)
5468        )) {
5469          result = false;
5470          break;
5471        }
5472      }
5473      stack['delete'](array);
5474      stack['delete'](other);
5475      return result;
5476    }
5477
5478    module.exports = equalArrays;
5479
5480
5481    /***/
5482  }),
5483/* 94 */
5484/***/ (function (module, exports, __webpack_require__) {
5485
5486    var arrayPush = __webpack_require__(49),
5487      isArray = __webpack_require__(1);
5488
5489    /**
5490     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
5491     * `keysFunc` and `symbolsFunc` to get the enumerable property names and
5492     * symbols of `object`.
5493     *
5494     * @private
5495     * @param {Object} object The object to query.
5496     * @param {Function} keysFunc The function to get the keys of `object`.
5497     * @param {Function} symbolsFunc The function to get the symbols of `object`.
5498     * @returns {Array} Returns the array of property names and symbols.
5499     */
5500    function baseGetAllKeys(object, keysFunc, symbolsFunc) {
5501      var result = keysFunc(object);
5502      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
5503    }
5504
5505    module.exports = baseGetAllKeys;
5506
5507
5508    /***/
5509  }),
5510/* 95 */
5511/***/ (function (module, exports, __webpack_require__) {
5512
5513    var arrayFilter = __webpack_require__(220),
5514      stubArray = __webpack_require__(96);
5515
5516    /** Used for built-in method references. */
5517    var objectProto = Object.prototype;
5518
5519    /** Built-in value references. */
5520    var propertyIsEnumerable = objectProto.propertyIsEnumerable;
5521
5522    /* Built-in method references for those with the same name as other `lodash` methods. */
5523    var nativeGetSymbols = Object.getOwnPropertySymbols;
5524
5525    /**
5526     * Creates an array of the own enumerable symbols of `object`.
5527     *
5528     * @private
5529     * @param {Object} object The object to query.
5530     * @returns {Array} Returns the array of symbols.
5531     */
5532    var getSymbols = !nativeGetSymbols ? stubArray : function (object) {
5533      if (object == null) {
5534        return [];
5535      }
5536      object = Object(object);
5537      return arrayFilter(nativeGetSymbols(object), function (symbol) {
5538        return propertyIsEnumerable.call(object, symbol);
5539      });
5540    };
5541
5542    module.exports = getSymbols;
5543
5544
5545    /***/
5546  }),
5547/* 96 */
5548/***/ (function (module, exports) {
5549
5550    /**
5551     * This method returns a new empty array.
5552     *
5553     * @static
5554     * @memberOf _
5555     * @since 4.13.0
5556     * @category Util
5557     * @returns {Array} Returns the new empty array.
5558     * @example
5559     *
5560     * var arrays = _.times(2, _.stubArray);
5561     *
5562     * console.log(arrays);
5563     * // => [[], []]
5564     *
5565     * console.log(arrays[0] === arrays[1]);
5566     * // => false
5567     */
5568    function stubArray() {
5569      return [];
5570    }
5571
5572    module.exports = stubArray;
5573
5574
5575    /***/
5576  }),
5577/* 97 */
5578/***/ (function (module, exports, __webpack_require__) {
5579
5580    var baseTimes = __webpack_require__(221),
5581      isArguments = __webpack_require__(34),
5582      isArray = __webpack_require__(1),
5583      isBuffer = __webpack_require__(50),
5584      isIndex = __webpack_require__(51),
5585      isTypedArray = __webpack_require__(52);
5586
5587    /** Used for built-in method references. */
5588    var objectProto = Object.prototype;
5589
5590    /** Used to check objects for own properties. */
5591    var hasOwnProperty = objectProto.hasOwnProperty;
5592
5593    /**
5594     * Creates an array of the enumerable property names of the array-like `value`.
5595     *
5596     * @private
5597     * @param {*} value The value to query.
5598     * @param {boolean} inherited Specify returning inherited property names.
5599     * @returns {Array} Returns the array of property names.
5600     */
5601    function arrayLikeKeys(value, inherited) {
5602      var isArr = isArray(value),
5603        isArg = !isArr && isArguments(value),
5604        isBuff = !isArr && !isArg && isBuffer(value),
5605        isType = !isArr && !isArg && !isBuff && isTypedArray(value),
5606        skipIndexes = isArr || isArg || isBuff || isType,
5607        result = skipIndexes ? baseTimes(value.length, String) : [],
5608        length = result.length;
5609
5610      for (var key in value) {
5611        if ((inherited || hasOwnProperty.call(value, key)) &&
5612          !(skipIndexes && (
5613            // Safari 9 has enumerable `arguments.length` in strict mode.
5614            key == 'length' ||
5615            // Node.js 0.10 has enumerable non-index properties on buffers.
5616            (isBuff && (key == 'offset' || key == 'parent')) ||
5617            // PhantomJS 2 has enumerable non-index properties on typed arrays.
5618            (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
5619            // Skip index properties.
5620            isIndex(key, length)
5621          ))) {
5622          result.push(key);
5623        }
5624      }
5625      return result;
5626    }
5627
5628    module.exports = arrayLikeKeys;
5629
5630
5631    /***/
5632  }),
5633/* 98 */
5634/***/ (function (module, exports) {
5635
5636    module.exports = function (module) {
5637      if (!module.webpackPolyfill) {
5638        module.deprecate = function () { };
5639        module.paths = [];
5640        // module.parent = undefined by default
5641        if (!module.children) module.children = [];
5642        Object.defineProperty(module, "loaded", {
5643          enumerable: true,
5644          get: function () {
5645            return module.l;
5646          }
5647        });
5648        Object.defineProperty(module, "id", {
5649          enumerable: true,
5650          get: function () {
5651            return module.i;
5652          }
5653        });
5654        module.webpackPolyfill = 1;
5655      }
5656      return module;
5657    };
5658
5659
5660    /***/
5661  }),
5662/* 99 */
5663/***/ (function (module, exports) {
5664
5665    /**
5666     * Creates a unary function that invokes `func` with its argument transformed.
5667     *
5668     * @private
5669     * @param {Function} func The function to wrap.
5670     * @param {Function} transform The argument transform.
5671     * @returns {Function} Returns the new function.
5672     */
5673    function overArg(func, transform) {
5674      return function (arg) {
5675        return func(transform(arg));
5676      };
5677    }
5678
5679    module.exports = overArg;
5680
5681
5682    /***/
5683  }),
5684/* 100 */
5685/***/ (function (module, exports, __webpack_require__) {
5686
5687    var getNative = __webpack_require__(8),
5688      root = __webpack_require__(5);
5689
5690    /* Built-in method references that are verified to be native. */
5691    var WeakMap = getNative(root, 'WeakMap');
5692
5693    module.exports = WeakMap;
5694
5695
5696    /***/
5697  }),
5698/* 101 */
5699/***/ (function (module, exports, __webpack_require__) {
5700
5701    var isObject = __webpack_require__(6);
5702
5703    /**
5704     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
5705     *
5706     * @private
5707     * @param {*} value The value to check.
5708     * @returns {boolean} Returns `true` if `value` if suitable for strict
5709     *  equality comparisons, else `false`.
5710     */
5711    function isStrictComparable(value) {
5712      return value === value && !isObject(value);
5713    }
5714
5715    module.exports = isStrictComparable;
5716
5717
5718    /***/
5719  }),
5720/* 102 */
5721/***/ (function (module, exports) {
5722
5723    /**
5724     * A specialized version of `matchesProperty` for source values suitable
5725     * for strict equality comparisons, i.e. `===`.
5726     *
5727     * @private
5728     * @param {string} key The key of the property to get.
5729     * @param {*} srcValue The value to match.
5730     * @returns {Function} Returns the new spec function.
5731     */
5732    function matchesStrictComparable(key, srcValue) {
5733      return function (object) {
5734        if (object == null) {
5735          return false;
5736        }
5737        return object[key] === srcValue &&
5738          (srcValue !== undefined || (key in Object(object)));
5739      };
5740    }
5741
5742    module.exports = matchesStrictComparable;
5743
5744
5745    /***/
5746  }),
5747/* 103 */
5748/***/ (function (module, exports) {
5749
5750    /**
5751     * A specialized version of `_.map` for arrays without support for iteratee
5752     * shorthands.
5753     *
5754     * @private
5755     * @param {Array} [array] The array to iterate over.
5756     * @param {Function} iteratee The function invoked per iteration.
5757     * @returns {Array} Returns the new mapped array.
5758     */
5759    function arrayMap(array, iteratee) {
5760      var index = -1,
5761        length = array == null ? 0 : array.length,
5762        result = Array(length);
5763
5764      while (++index < length) {
5765        result[index] = iteratee(array[index], index, array);
5766      }
5767      return result;
5768    }
5769
5770    module.exports = arrayMap;
5771
5772
5773    /***/
5774  }),
5775/* 104 */
5776/***/ (function (module, exports) {
5777
5778    /**
5779     * The base implementation of `_.property` without support for deep paths.
5780     *
5781     * @private
5782     * @param {string} key The key of the property to get.
5783     * @returns {Function} Returns the new accessor function.
5784     */
5785    function baseProperty(key) {
5786      return function (object) {
5787        return object == null ? undefined : object[key];
5788      };
5789    }
5790
5791    module.exports = baseProperty;
5792
5793
5794    /***/
5795  }),
5796/* 105 */
5797/***/ (function (module, exports) {
5798
5799    /**
5800     * The base implementation of `_.findIndex` and `_.findLastIndex` without
5801     * support for iteratee shorthands.
5802     *
5803     * @private
5804     * @param {Array} array The array to inspect.
5805     * @param {Function} predicate The function invoked per iteration.
5806     * @param {number} fromIndex The index to search from.
5807     * @param {boolean} [fromRight] Specify iterating from right to left.
5808     * @returns {number} Returns the index of the matched value, else `-1`.
5809     */
5810    function baseFindIndex(array, predicate, fromIndex, fromRight) {
5811      var length = array.length,
5812        index = fromIndex + (fromRight ? 1 : -1);
5813
5814      while ((fromRight ? index-- : ++index < length)) {
5815        if (predicate(array[index], index, array)) {
5816          return index;
5817        }
5818      }
5819      return -1;
5820    }
5821
5822    module.exports = baseFindIndex;
5823
5824
5825    /***/
5826  }),
5827/* 106 */
5828/***/ (function (module, exports, __webpack_require__) {
5829
5830    var toFinite = __webpack_require__(244);
5831
5832    /**
5833     * Converts `value` to an integer.
5834     *
5835     * **Note:** This method is loosely based on
5836     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
5837     *
5838     * @static
5839     * @memberOf _
5840     * @since 4.0.0
5841     * @category Lang
5842     * @param {*} value The value to convert.
5843     * @returns {number} Returns the converted integer.
5844     * @example
5845     *
5846     * _.toInteger(3.2);
5847     * // => 3
5848     *
5849     * _.toInteger(Number.MIN_VALUE);
5850     * // => 0
5851     *
5852     * _.toInteger(Infinity);
5853     * // => 1.7976931348623157e+308
5854     *
5855     * _.toInteger('3.2');
5856     * // => 3
5857     */
5858    function toInteger(value) {
5859      var result = toFinite(value),
5860        remainder = result % 1;
5861
5862      return result === result ? (remainder ? result - remainder : result) : 0;
5863    }
5864
5865    module.exports = toInteger;
5866
5867
5868    /***/
5869  }),
5870/* 107 */
5871/***/ (function (module, exports, __webpack_require__) {
5872
5873    "use strict";
5874
5875
5876    var _interopRequireDefault = __webpack_require__(0);
5877
5878    Object.defineProperty(exports, "__esModule", {
5879      value: true
5880    });
5881    exports.inQuad = inQuad;
5882    exports.outQuad = outQuad;
5883    exports.inOutQuad = inOutQuad;
5884    exports.inCubic = inCubic;
5885    exports.outCubic = outCubic;
5886    exports.inOutCubic = inOutCubic;
5887    exports.inQuart = inQuart;
5888    exports.outQuart = outQuart;
5889    exports.inOutQuart = inOutQuart;
5890    exports.inQuint = inQuint;
5891    exports.outQuint = outQuint;
5892    exports.inOutQuint = inOutQuint;
5893    exports.inSine = inSine;
5894    exports.outSine = outSine;
5895    exports.inOutSine = inOutSine;
5896    exports.inExpo = inExpo;
5897    exports.outExpo = outExpo;
5898    exports.inOutExpo = inOutExpo;
5899    exports.inCirc = inCirc;
5900    exports.outCirc = outCirc;
5901    exports.inOutCirc = inOutCirc;
5902    exports.outBounce = outBounce;
5903    exports.inBack = inBack;
5904    exports.outBack = outBack;
5905    exports.inOutBack = inOutBack;
5906    exports.inElastic = inElastic;
5907    exports.outElastic = outElastic;
5908    exports.inOutElastic = inOutElastic;
5909    exports.swingFromTo = swingFromTo;
5910    exports.swingFrom = swingFrom;
5911    exports.swingTo = swingTo;
5912    exports.bounce = bounce;
5913    exports.bouncePast = bouncePast;
5914    exports.easeInOut = exports.easeOut = exports.easeIn = exports.ease = void 0;
5915
5916    var _bezierEasing = _interopRequireDefault(__webpack_require__(108)); // Easing functions adapted from Thomas Fuchs & Jeremy Kahn
5917    // Easing Equations (c) 2003 Robert Penner, BSD license
5918    // https://raw.github.com/danro/easing-js/master/LICENSE
5919
5920
5921    var magicSwing = 1.70158;
5922    var ease = (0, _bezierEasing["default"])(0.25, 0.1, 0.25, 1.0);
5923    exports.ease = ease;
5924    var easeIn = (0, _bezierEasing["default"])(0.42, 0.0, 1.0, 1.0);
5925    exports.easeIn = easeIn;
5926    var easeOut = (0, _bezierEasing["default"])(0.0, 0.0, 0.58, 1.0);
5927    exports.easeOut = easeOut;
5928    var easeInOut = (0, _bezierEasing["default"])(0.42, 0.0, 0.58, 1.0);
5929    exports.easeInOut = easeInOut;
5930
5931    function inQuad(pos) {
5932      return Math.pow(pos, 2);
5933    }
5934
5935    function outQuad(pos) {
5936      return -(Math.pow(pos - 1, 2) - 1);
5937    }
5938
5939    function inOutQuad(pos) {
5940      if ((pos /= 0.5) < 1) {
5941        return 0.5 * Math.pow(pos, 2);
5942      }
5943
5944      return -0.5 * ((pos -= 2) * pos - 2);
5945    }
5946
5947    function inCubic(pos) {
5948      return Math.pow(pos, 3);
5949    }
5950
5951    function outCubic(pos) {
5952      return Math.pow(pos - 1, 3) + 1;
5953    }
5954
5955    function inOutCubic(pos) {
5956      if ((pos /= 0.5) < 1) {
5957        return 0.5 * Math.pow(pos, 3);
5958      }
5959
5960      return 0.5 * (Math.pow(pos - 2, 3) + 2);
5961    }
5962
5963    function inQuart(pos) {
5964      return Math.pow(pos, 4);
5965    }
5966
5967    function outQuart(pos) {
5968      return -(Math.pow(pos - 1, 4) - 1);
5969    }
5970
5971    function inOutQuart(pos) {
5972      if ((pos /= 0.5) < 1) {
5973        return 0.5 * Math.pow(pos, 4);
5974      }
5975
5976      return -0.5 * ((pos -= 2) * Math.pow(pos, 3) - 2);
5977    }
5978
5979    function inQuint(pos) {
5980      return Math.pow(pos, 5);
5981    }
5982
5983    function outQuint(pos) {
5984      return Math.pow(pos - 1, 5) + 1;
5985    }
5986
5987    function inOutQuint(pos) {
5988      if ((pos /= 0.5) < 1) {
5989        return 0.5 * Math.pow(pos, 5);
5990      }
5991
5992      return 0.5 * (Math.pow(pos - 2, 5) + 2);
5993    }
5994
5995    function inSine(pos) {
5996      return -Math.cos(pos * (Math.PI / 2)) + 1;
5997    }
5998
5999    function outSine(pos) {
6000      return Math.sin(pos * (Math.PI / 2));
6001    }
6002
6003    function inOutSine(pos) {
6004      return -0.5 * (Math.cos(Math.PI * pos) - 1);
6005    }
6006
6007    function inExpo(pos) {
6008      return pos === 0 ? 0 : Math.pow(2, 10 * (pos - 1));
6009    }
6010
6011    function outExpo(pos) {
6012      return pos === 1 ? 1 : -Math.pow(2, -10 * pos) + 1;
6013    }
6014
6015    function inOutExpo(pos) {
6016      if (pos === 0) {
6017        return 0;
6018      }
6019
6020      if (pos === 1) {
6021        return 1;
6022      }
6023
6024      if ((pos /= 0.5) < 1) {
6025        return 0.5 * Math.pow(2, 10 * (pos - 1));
6026      }
6027
6028      return 0.5 * (-Math.pow(2, -10 * --pos) + 2);
6029    }
6030
6031    function inCirc(pos) {
6032      return -(Math.sqrt(1 - pos * pos) - 1);
6033    }
6034
6035    function outCirc(pos) {
6036      return Math.sqrt(1 - Math.pow(pos - 1, 2));
6037    }
6038
6039    function inOutCirc(pos) {
6040      if ((pos /= 0.5) < 1) {
6041        return -0.5 * (Math.sqrt(1 - pos * pos) - 1);
6042      }
6043
6044      return 0.5 * (Math.sqrt(1 - (pos -= 2) * pos) + 1);
6045    }
6046
6047    function outBounce(pos) {
6048      if (pos < 1 / 2.75) {
6049        return 7.5625 * pos * pos;
6050      } else if (pos < 2 / 2.75) {
6051        return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
6052      } else if (pos < 2.5 / 2.75) {
6053        return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
6054      } else {
6055        return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
6056      }
6057    }
6058
6059    function inBack(pos) {
6060      var s = magicSwing;
6061      return pos * pos * ((s + 1) * pos - s);
6062    }
6063
6064    function outBack(pos) {
6065      var s = magicSwing;
6066      return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
6067    }
6068
6069    function inOutBack(pos) {
6070      var s = magicSwing;
6071
6072      if ((pos /= 0.5) < 1) {
6073        return 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s));
6074      }
6075
6076      return 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
6077    }
6078
6079    function inElastic(pos) {
6080      var s = magicSwing;
6081      var p = 0;
6082      var a = 1;
6083
6084      if (pos === 0) {
6085        return 0;
6086      }
6087
6088      if (pos === 1) {
6089        return 1;
6090      }
6091
6092      if (!p) {
6093        p = 0.3;
6094      }
6095
6096      if (a < 1) {
6097        a = 1;
6098        s = p / 4;
6099      } else {
6100        s = p / (2 * Math.PI) * Math.asin(1 / a);
6101      }
6102
6103      return -(a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s
6103) * (2 * Math.PI) / p));
6104    }
6105
6106    function outElastic(pos) {
6107      var s = magicSwing;
6108      var p = 0;
6109      var a = 1;
6110
6111      if (pos === 0) {
6112        return 0;
6113      }
6114
6115      if (pos === 1) {
6116        return 1;
6117      }
6118
6119      if (!p) {
6120        p = 0.3;
6121      }
6122
6123      if (a < 1) {
6124        a = 1;
6125        s = p / 4;
6126      } else {
6127        s = p / (2 * Math.PI) * Math.asin(1 / a);
6128      }
6129
6130      return a * Math.pow(2, -10 * pos) * Math.sin((pos - s) * (2 * Math.PI) / p) + 1;
6131    }
6132
6133    function inOutElastic(pos) {
6134      var s = magicSwing;
6135      var p = 0;
6136      var a = 1;
6137
6138      if (pos === 0) {
6139        return 0;
6140      }
6141
6142      if ((pos /= 1 / 2) === 2) {
6143        return 1;
6144      }
6145
6146      if (!p) {
6147        p = 0.3 * 1.5;
6148      }
6149
6150      if (a < 1) {
6151        a = 1;
6152        s = p / 4;
6153      } else {
6154        s = p / (2 * Math.PI) * Math.asin(1 / a);
6155      }
6156
6157      if (pos < 1) {
6158        return -0.5 * (a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
6159      }
6160
6161      return a * Math.pow(2, -10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p) * 0.5 + 1;
6162    }
6163
6164    function swingFromTo(pos) {
6165      var s = magicSwing;
6166      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);
6167    }
6168
6169    function swingFrom(pos) {
6170      var s = magicSwing;
6171      return pos * pos * ((s + 1) * pos - s);
6172    }
6173
6174    function swingTo(pos) {
6175      var s = magicSwing;
6176      return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
6177    }
6178
6179    function bounce(pos) {
6180      if (pos < 1 / 2.75) {
6181        return 7.5625 * pos * pos;
6182      } else if (pos < 2 / 2.75) {
6183        return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
6184      } else if (pos < 2.5 / 2.75) {
6185        return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
6186      } else {
6187        return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
6188      }
6189    }
6190
6191    function bouncePast(pos) {
6192      if (pos < 1 / 2.75) {
6193        return 7.5625 * pos * pos;
6194      } else if (pos < 2 / 2.75) {
6195        return 2 - (7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75);
6196      } else if (pos < 2.5 / 2.75) {
6197        return 2 - (7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375);
6198      } else {
6199        return 2 - (7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375);
6200      }
6201    }
6202
6203    /***/
6204  }),
6205/* 108 */
6206/***/ (function (module, exports) {
6207
6208    /**
6209     * https://github.com/gre/bezier-easing
6210     * BezierEasing - use bezier curve for transition easing function
6211     * by Gaëtan Renaudeau 2014 - 2015 – MIT License
6212     */
6213
6214    // These values are established by empiricism with tests (tradeoff: performance VS precision)
6215    var NEWTON_ITERATIONS = 4;
6216    var NEWTON_MIN_SLOPE = 0.001;
6217    var SUBDIVISION_PRECISION = 0.0000001;
6218    var SUBDIVISION_MAX_ITERATIONS = 10;
6219
6220    var kSplineTableSize = 11;
6221    var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
6222
6223    var float32ArraySupported = typeof Float32Array === 'function';
6224
6225    function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
6226    function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
6227    function C(aA1) { return 3.0 * aA1; }
6228
6229    // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
6230    function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
6231
6232    // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
6233    function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
6234
6235    function binarySubdivide(aX, aA, aB, mX1, mX2) {
6236      var currentX, currentT, i = 0;
6237      do {
6238        currentT = aA + (aB - aA) / 2.0;
6239        currentX = calcBezier(currentT, mX1, mX2) - aX;
6240        if (currentX > 0.0) {
6241          aB = currentT;
6242        } else {
6243          aA = currentT;
6244        }
6245      } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
6246      return currentT;
6247    }
6248
6249    function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
6250      for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
6251        var currentSlope = getSlope(aGuessT, mX1, mX2);
6252        if (currentSlope === 0.0) {
6253          return aGuessT;
6254        }
6255        var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
6256        aGuessT -= currentX / currentSlope;
6257      }
6258      return aGuessT;
6259    }
6260
6261    module.exports = function bezier(mX1, mY1, mX2, mY2) {
6262      if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
6263        throw new Error('bezier x values must be in [0, 1] range');
6264      }
6265
6266      // Precompute samples table
6267      var sampleValues = float32ArraySupported ? new Float32Array(kS
6267plineTableSize) : new Array(kSplineTableSize);
6268      if (mX1 !== mY1 || mX2 !== mY2) {
6269        for (var i = 0; i < kSplineTableSize; ++i) {
6270          sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
6271        }
6272      }
6273
6274      function getTForX(aX) {
6275        var intervalStart = 0.0;
6276        var currentSample = 1;
6277        var lastSample = kSplineTableSize - 1;
6278
6279        for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
6280          intervalStart += kSampleStepSize;
6281        }
6282        --currentSample;
6283
6284        // Interpolate to provide an initial guess for t
6285        var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
6286        var guessForT = intervalStart + dist * kSampleStepSize;
6287
6288        var initialSlope = getSlope(guessForT, mX1, mX2);
6289        if (initialSlope >= NEWTON_MIN_SLOPE) {
6290          return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
6291        } else if (initialSlope === 0.0) {
6292          return guessForT;
6293        } else {
6294          return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
6295        }
6296      }
6297
6298      return function BezierEasing(x) {
6299        if (mX1 === mY1 && mX2 === mY2) {
6300          return x; // linear
6301        }
6302        // Because JavaScript number are imprecise, we should guarantee the extremes are right.
6303        if (x === 0) {
6304          return 0;
6305        }
6306        if (x === 1) {
6307          return 1;
6308        }
6309        return calcBezier(getTForX(x), mY1, mY2);
6310      };
6311    };
6312
6313
6314    /***/
6315  }),
6316/* 109 */
6317/***/ (function (module, exports, __webpack_require__) {
6318
6319    "use strict";
6320
6321
6322    var _interopRequireDefault2 = __webpack_require__(0);
6323
6324    var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(110));
6325
6326    var _interopRequireDefault = __webpack_require__(0);
6327
6328    var _interopRequireWildcard = __webpack_require__(14);
6329
6330    Object.defineProperty(exports, "__esModule", {
6331      value: true
6332    });
6333    exports.optimizeFloat = optimizeFloat;
6334    exports.createBezierEasing = createBezierEasing;
6335    exports.applyEasing = applyEasing;
6336
6337    var easings = _interopRequireWildcard(__webpack_require__(107));
6338
6339    var _bezierEasing = _interopRequireDefault(__webpack_require__(108));
6340
6341    function optimizeFloat(value) {
6342      var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
6343      var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
6344      var pow = Math.pow(base, digits);
6345
6346      var _float = Number(Math.round(value * pow) / pow);
6347
6348      return Math.abs(_float) > 0.0001 ? _float : 0;
6349    }
6350
6351    function createBezierEasing(easing) {
6352      return (0, _bezierEasing["default"]).apply(void 0, (0, _toConsumableArray2["default"])(easing));
6353    }
6354
6355    function applyEasing(easing, position, customEasingFn) {
6356      if (position === 0) {
6357        return 0;
6358      }
6359
6360      if (position === 1) {
6361        return 1;
6362      }
6363
6364      if (customEasingFn) {
6365        return optimizeFloat(position > 0 ? customEasingFn(position) : position);
6366      }
6367
6368      return optimizeFloat(position > 0 && easing && easings[easing] ? easings[easing](position) : position);
6369    }
6370
6371    /***/
6372  }),
6373/* 110 */
6374/***/ (function (module, exports, __webpack_require__) {
6375
6376    var arrayWithoutHoles = __webpack_require__(245);
6377
6378    var iterableToArray = __webpack_require__(246);
6379
6380    var nonIterableSpread = __webpack_require__(247);
6381
6382    function _toConsumableArray(arr) {
6383      return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
6384    }
6385
6386    module.exports = _toConsumableArray;
6387
6388    /***/
6389  }),
6390/* 111 */
6391/***/ (function (module, exports, __webpack_require__) {
6392
6393    "use strict";
6394
6395
6396    var _interopRequireDefault = __webpack_require__(0);
6397
6398    var _defineProperty2 = _interopRequireDefault(__webpack_require__(27));
6399
6400    Object.defineProperty(exports, "__esModule", {
6401      value: true
6402    });
6403    exports.isPluginType = isPluginType;
6404    exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginDuration = exports.getPluginOrigin = exports.getPluginConfig = void 0;
6405
6406    var _IX2LottieUtils = __webpack_require__(249);
6407
6408    var _constants = __webpack_require__(2);
6409
6410    var _IX2BrowserSupport = __webpack_require__(45); // eslint-disable-next-line webflow/module-top-level-imports, webflow/packages-must-be-defined
6411
6412
6413    var pluginMethodMap = (0, _defineProperty2["default"])({}, _constants.ActionTypeConsts.PLUGIN_LOTTIE, {
6414      getConfig: _IX2LottieUtils.getPluginConfig,
6415      getOrigin: _IX2LottieUtils.getPluginOrigin,
6416      getDuration: _IX2LottieUtils.getPluginDuration,
6417      getDestination: _IX2LottieUtils.getPluginDestination,
6418      createInstance: _IX2LottieUtils.createPluginInstance,
6419      render: _IX2LottieUtils.renderPlugin,
6420      clear: _IX2LottieUtils.clearPlugin
6421    });
6422
6423    function isPluginType(actionTypeId) {
6424      return actionTypeId === _constants.ActionTypeConsts.PLUGIN_LOTTIE;
6425    }
6426
6427    var pluginMethod = function pluginMethod(methodName) {
6428      return function (actionTypeId) {
6429        if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
6430          // IX2 plugins require browser libs for now
6431          return function () {
6432            return null;
6433          };
6434        }
6435
6436        var plugin = pluginMethodMap[actionTypeId];
6437
6438        if (!plugin) {
6439          throw new Error("IX2 no plugin configured for: ".concat(actionTypeId));
6440        }
6441
6442        var method = plugin[methodName];
6443
6444        if (!method) {
6445          throw new Error("IX2 invalid plugin method: ".concat(methodName));
6446        }
6447
6448        return method;
6449      };
6450    };
6451
6452    var getPluginConfig = pluginMethod('getConfig');
6453    exports.getPluginConfig = getPluginConfig;
6454    var getPluginOrigin = pluginMethod('getOrigin');
6455    exports.getPluginOrigin = getPluginOrigin;
6456    var getPluginDuration = pluginMethod('getDuration');
6457    exports.getPluginDuration = getPluginDuration;
6458    var getPluginDestination = pluginMethod('getDestination');
6459    exports.getPluginDestination = getPluginDestination;
6460    var createPluginInstance = pluginMethod('createInstance');
6461    exports.createPluginInstance = createPluginInstance;
6462    var renderPlugin = pluginMethod('render');
6463    exports.renderPlugin = renderPlugin;
6464    var clearPlugin = pluginMethod('clear');
6465    exports.clearPlugin = clearPlugin;
6466
6467    /***/
6468  }),
6469/* 112 */
6470/***/ (function (module, exports, __webpack_require__) {
6471
6472    var baseForOwn = __webpack_require__(113),
6473      createBaseEach = __webpack_require__(256);
6474
6475    /**
6476     * The base implementation of `_.forEach` without support for iteratee shorthands.
6477     *
6478     * @private
6479     * @param {Array|Object} collection The collection to iterate over.
6480     * @param {Function} iteratee The function invoked per iteration.
6481     * @returns {Array|Object} Returns `collection`.
6482     */
6483    var baseEach = createBaseEach(baseForOwn);
6484
6485    module.exports = baseEach;
6486
6487
6488    /***/
6489  }),
6490/* 113 */
6491/***/ (function (module, exports, __webpack_require__) {
6492
6493    var baseFor = __webpack_require__(254),
6494      keys = __webpack_require__(33);
6495
6496    /**
6497     * The base implementation of `_.forOwn` without support for iteratee shorthands.
6498     *
6499     * @private
6500     * @param {Object} object The object to iterate over.
6501     * @param {Function} iteratee The function invoked per iteration.
6502     * @returns {Object} Returns `object`.
6503     */
6504    function baseForOwn(object, iteratee) {
6505      return object && baseFor(object, iteratee, keys);
6506    }
6507
6508    module.exports = baseForOwn;
6509
6510
6511    /***/
6512  }),
6513/* 114 */
6514/***/ (function (module, exports, __webpack_require__) {
6515
6516    "use strict";
6517
6518
6519    var _interopRequireDefault = __webpack_require__(260);
6520
6521    exports.__esModule = true;
6522    exports.default = void 0;
6523
6524    var _shallowEqual = _interopRequireDefault(__webpack_require__(261));
6525
6526    var _default = _shallowEqual.default;
6527    exports.default = _default;
6528
6529    /***/
6530  }),
6531/* 115 */
6532/***/ (function (module, exports, __webpack_require__) {
6533
6534    "use strict";
6535
6536
6537    var _interopRequireDefault2 = __webpack_require__(0);
6538
6539    var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(110));
6540
6541    var _interopRequireWildcard = __webpack_require__(14);
6542
6543    var _interopRequireDefault = __webpack_require__(0);
6544
6545    Object.defineProperty(exports, "__esModule", {
6546      value: true
6547    });
6548    exports.observeRequests = observeRequests;
6549    exports.startEngine = startEngine;
6550    exports.stopEngine = stopEngine;
6551    exports.stopAllActionGroups = stopAllActionGroups;
6552    exports.stopActionGroup = stopActionGroup;
6553    exports.startActionGroup = startActionGroup;
6554
6555    var _extends2 = _interopRequireDefault(__webpack_require__(28));
6556
6557    var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(264));
6558
6559    var _find = _interopRequireDefault(__webpack_require__(86));
6560
6561    var _get = _interopRequireDefault(__webpack_require__(57));
6562
6563    var _size = _interopRequireDefault(__webpack_require__(265));
6564
6565    var _omitBy = _interopRequireDefault(__webpack_require__(271));
6566
6567    var _isEmpty = _interopRequireDefault(__webpack_require__(283));
6568
6569    var _mapValues = _interopRequireDefault(__webpack_require__(284));
6570
6571    var _forEach = _interopRequireDefault(__webpack_require__(285));
6572
6573    var _throttle = _interopRequireDefault(__webpack_require__(288));
6574
6575    var _shallowEqual = _interopRequireDefault(__webpack_require__(114));
6576
6577    var _constants = __webpack_require__(2);
6578
6579    var _shared = __webpack_require__(10);
6580
6581    var _IX2EngineActions = __webpack_require__(62);
6582
6583    var elementApi = _interopRequireWildcard(__webpack_require__(291));
6584
6585    var _IX2VanillaEvents = _interopRequireDefault(__webpack_require__(292));
6586    /* eslint-env browser */
6587
6588
6589    var QuickEffectsIdList = Object.keys(_constants.QuickEffectIds);
6590
6591    var isQuickEffect = function isQuickEffect(actionTypeId) {
6592      return QuickEffectsIdList.includes(actionTypeId);
6593    };
6594
6595    var _constants$IX2EngineC = _constants.IX2EngineConstants,
6596      COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
6597      BOUNDARY_SELECTOR = _constants$IX2EngineC.BOUNDARY_SELECTOR,
6598      HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
6599      RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
6600      W_MOD_IX = _constants$IX2EngineC.W_MOD_IX;
6601    var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
6602      getAffectedElements = _shared$IX2VanillaUti.getAffectedElements,
6603      getElementId = _shared$IX2VanillaUti.getElementId,
6604      getDestinationValues = _shared$IX2VanillaUti.getDestinationValues,
6605      observeStore = _shared$IX2VanillaUti.observeStore,
6606      getInstanceId = _shared$IX2VanillaUti.getInstanceId,
6607      renderHTMLElement = _shared$IX2VanillaUti.renderHTMLElement,
6608      clearAllStyles = _shared$IX2VanillaUti.clearAllStyles,
6609      getMaxDurationItemIndex = _shared$IX2VanillaUti.getMaxDurationItemIndex,
6610      getComputedStyle = _shared$IX2VanillaUti.getComputedStyle,
6611      getInstanceOrigin = _shared$IX2VanillaUti.getInstanceOrigin,
6612      reduceListToGroup = _shared$IX2VanillaUti.reduceListToGroup,
6613      shouldNamespaceEventParameter = _shared$IX2VanillaUti.shouldNamespaceEventParameter,
6614      getNamespacedParameterId = _shared$IX2VanillaUti.getNamespacedParameterId,
6615      shouldAllowMediaQuery = _shared$IX2VanillaUti.shouldAllowMediaQuery,
6616      cleanupHTMLElement = _shared$IX2VanillaUti.cleanupHTMLElement,
6617      stringifyTarget = _shared$IX2VanillaUti.stringifyTarget,
6618      mediaQueriesEqual = _shared$IX2VanillaUti.mediaQueriesEqual;
6619    var _shared$IX2VanillaPlu = _shared.IX2VanillaPlugins,
6620      isPluginType = _shared$IX2VanillaPlu.isPluginType,
6621      createPluginInstance = _shared$IX2VanillaPlu.createPluginInstance,
6622      getPluginDuration = _shared$IX2VanillaPlu.getPluginDuration;
6623    var ua = navigator.userAgent;
6624    var IS_MOBILE_SAFARI = ua.match(/iPad/i) || ua.match(/iPhone/); // Keep throttled events at ~80fps to reduce reflows while maintaining render accuracy
6625
6626    var THROTTLED_EVENT_WAIT = 12; // $FlowFixMe
6627
6628    function observeRequests(store) {
6629      observeStore({
6630        store: store,
6631        select: function select(_ref) {
6632          var ixRequest = _ref.ixRequest;
6633          return ixRequest.preview;
6634        },
6635        onChange: handlePreviewRequest
6636      });
6637      observeStore({
6638        store: store,
6639        select: function select(_ref2) {
6640          var ixRequest = _ref2.ixRequest;
6641          return ixRequest.playback;
6642        },
6643        onChange: handlePlaybackRequest
6644      });
6645      observeStore({
6646        store: store,
6647        select: function select(_ref3) {
6648          var ixRequest = _ref3.ixRequest;
6649          return ixRequest.stop;
6650        },
6651        onChange: handleStopRequest
6652      });
6653      observeStore({
6654        store: store,
6655        select: function select(_ref4) {
6656          var ixRequest = _ref4.ixRequest;
6657          return ixRequest.clear;
6658        },
6659        onChange: handleClearRequest
6660      });
6661    }
6662
6663    function observeMediaQueryChange(store) {
6664      observeStore({
6665        store: store,
6666        select: function select(_ref5) {
6667          var ixSession = _ref5.ixSession;
6668          return ixSession.mediaQueryKey;
6669        },
6670        onChange: function onChange() {
6671          stopEngine(store);
6672          clearAllStyles({
6673            store: store,
6674            elementApi: elementApi
6675          });
6676          startEngine({
6677            store: store,
6678            allowEvents: true
6679          });
6680          dispatchPageUpdateEvent();
6681        }
6682      });
6683    }
6684
6685    function observeOneRenderTick(store, onTick) {
6686      var unsubscribe = observeStore({
6687        store: store,
6688        select: function select(_ref6) {
6689          var ixSession = _ref6.ixSession;
6690          return ixSession.tick;
6691        },
6692        onChange: function onChange(tick) {
6693          onTick(tick);
6694          unsubscribe();
6695        }
6696      });
6697    }
6698
6699    function handlePreviewRequest(_ref7, store) {
6700      var rawData = _ref7.rawData,
6701        defer = _ref7.defer;
6702
6703      var start = function start() {
6704        startEngine({
6705          store: store,
6706          rawData: rawData,
6707          allowEvents: true
6708        });
6709        dispatchPageUpdateEvent();
6710      };
6711
6712      defer ? setTimeout(start, 0) : start();
6713    }
6714
6715    function dispatchPageUpdateEvent() {
6716      document.dispatchEvent(new CustomEvent('IX2_PAGE_UPDATE'));
6717    }
6718
6719    function handlePlaybackRequest(playback, store) {
6720      var actionTypeId = playback.actionTypeId,
6721        actionListId = playback.actionListId,
6722        actionItemId = playback.actionItemId,
6723        eventId = playback.eventId,
6724        allowEvents = playback.allowEvents,
6725        immediate = playback.immediate,
6726        testManual = playback.testManual,
6727        _playback$verbose = playback.verbose,
6728        verbose = _playback$verbose === void 0 ? true : _playback$verbose;
6729      var rawData = playback.rawData;
6730
6731      if (actionListId && actionItemId && rawData && immediate) {
6732        var actionList = rawData.actionLists[actionListId];
6733
6734        if (actionList) {
6735          rawData = reduceListToGroup({
6736            actionList: actionList,
6737            actionItemId: actionItemId,
6738            rawData: rawData
6739          });
6740        }
6741      }
6742
6743      startEngine({
6744        store: store,
6745        rawData: rawData,
6746        allowEvents: allowEvents,
6747        testManual: testManual
6748      });
6749
6750      if (actionListId && actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(actionTypeId)) {
6751        stopActionGroup({
6752          store: store,
6753          actionListId: actionListId
6754        });
6755        renderInitialGroup({
6756          store: store,
6757          actionListId: actionListId,
6758          eventId: eventId
6759        });
6760        var started = startActionGroup({
6761          store: store,
6762          eventId: eventId,
6763          actionListId: actionListId,
6764          immediate: immediate,
6765          verbose: verbose
6766        });
6767
6768        if (verbose && started) {
6769          store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
6770            actionListId: actionListId,
6771            isPlaying: !immediate
6772          }));
6773        }
6774      }
6775    }
6776
6777    function handleStopRequest(_ref8, store) {
6778      var actionListId = _ref8.actionListId;
6779
6780      if (actionListId) {
6781        stopActionGroup({
6782          store: store,
6783          actionListId: actionListId
6784        });
6785      } else {
6786        stopAllActionGroups({
6787          store: store
6788        });
6789      }
6790
6791      stopEngine(store);
6792    }
6793
6794    function handleClearRequest(state, store) {
6795      stopEngine(store);
6796      clearAllStyles({
6797        store: store,
6798        elementApi: elementApi
6799      });
6800    } // $FlowFixMe
6801
6802
6803    function startEngine(_ref9) {
6804      var store = _ref9.store,
6805        rawData = _ref9.rawData,
6806        allowEvents = _ref9.allowEvents,
6807        testManual = _ref9.testManual;
6808
6809      var _store$getState = store.getState(),
6810        ixSession = _store$getState.ixSession;
6811
6812      if (rawData) {
6813        store.dispatch((0, _IX2EngineActions.rawDataImported)(rawData));
6814      }
6815
6816      if (!ixSession.active) {
6817        store.dispatch((0, _IX2EngineActions.sessionInitialized)({
6818          hasBoundaryNodes: Boolean(document.querySelector(BOUNDARY_SELECTOR))
6819        }));
6820
6821        if (allowEvents) {
6822          bindEvents(store);
6823          addDocumentClass();
6824
6825          if (store.getState().ixSession.hasDefinedMediaQueries) {
6826            observeMediaQueryChange(store);
6827          }
6828        }
6829
6830        store.dispatch((0, _IX2EngineActions.sessionStarted)());
6831        startRenderLoop(store, testManual);
6832      }
6833    }
6834
6835    function addDocumentClass() {
6836      var _document = document,
6837        documentElement = _document.documentElement; // $FlowFixMe
6838
6839      if (documentElement.className.indexOf(W_MOD_IX) === -1) {
6840        // $FlowFixMe
6841        documentElement.className += " ".concat(W_MOD_IX);
6842      }
6843    }
6844
6845    function startRenderLoop(store, testManual) {
6846      var handleFrame = function handleFrame(now) {
6847        var _store$getState2 = store.getState(),
6848          ixSession = _store$getState2.ixSession,
6849          ixParameters = _store$getState2.ixParameters;
6850
6851        if (ixSession.active) {
6852          store.dispatch((0, _IX2EngineActions.animationFrameChanged)(now, ixParameters));
6853
6854          if (testManual) {
6855            observeOneRenderTick(store, handleFrame);
6856          } else {
6857            requestAnimationFrame(handleFrame);
6858          }
6859        }
6860      };
6861
6862      handleFrame(window.performance.now());
6863    } // $FlowFixMe
6864
6865
6866    function stopEngine(store) {
6867      var _store$getState3 = store.getState(),
6868        ixSession = _store$getState3.ixSession;
6869
6870      if (ixSession.active) {
6871        var eventListeners = ixSession.eventListeners;
6872        eventListeners.forEach(clearEventListener);
6873        store.dispatch((0, _IX2EngineActions.sessionStopped)());
6874      }
6875    }
6876
6877    function clearEventListener(_ref10) {
6878      var target = _ref10.target,
6879        listenerParams = _ref10.listenerParams;
6880      target.removeEventListener.apply(target, listenerParams);
6881    }
6882
6883    function createGroupInstances(_ref11) {
6884      var store = _ref11.store,
6885        eventStateKey = _ref11.eventStateKey,
6886        eventTarget = _ref11.eventTarget,
6887        eventId = _ref11.eventId,
6888        eventConfig = _ref11.eventConfig,
6889        actionListId = _ref11.actionListId,
6890        parameterGroup = _ref11.parameterGroup,
6891        smoothing = _ref11.smoothing,
6892        restingValue = _ref11.restingValue;
6893
6894      var _store$getState4 = store.getState(),
6895        ixData = _store$getState4.ixData,
6896        ixSession = _store$getState4.ixSession;
6897
6898      var events = ixData.events;
6899      var event = events[eventId];
6900      var eventTypeId = event.eventTypeId;
6901      var targetCache = {};
6902      var instanceActionGroups = {};
6903      var instanceConfigs = [];
6904      var continuousActionGroups = parameterGroup.continuousActionGroups;
6905      var parameterId = parameterGroup.id;
6906
6907      if (shouldNamespaceEventParameter(eventTypeId, eventConfig)) {
6908        parameterId = getNamespacedParameterId(eventStateKey, parameterId);
6909      } // Limit affected elements when event target is within a boundary node
6910
6911
6912      var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
6913      continuousActionGroups.forEach(function (actionGroup) {
6914        var keyframe = actionGroup.keyframe,
6915          actionItems = actionGroup.actionItems;
6916        actionItems.forEach(function (actionItem) {
6917          var actionTypeId = actionItem.actionTypeId;
6918          var target = actionItem.config.target;
6919
6920          if (!target) {
6921            return;
6922          }
6923
6924          var elementRoot = target.boundaryMode ? eventElementRoot : null;
6925          var key = stringifyTarget(target) + COLON_DELIMITER + actionTypeId;
6926          instanceActionGroups[key] = appendActionItem(instanceActionGroups[key], keyframe, actionItem);
6927
6928          if (!targetCache[key]) {
6929            targetCache[key] = true;
6930            var config = actionItem.config;
6931            getAffectedElements({
6932              config: config,
6933              event: event,
6934              eventTarget: eventTarget,
6935              elementRoot: elementRoot,
6936              elementApi: elementApi
6937            }).forEach(function (element) {
6938              instanceConfigs.push({
6939                element: element,
6940                key: key
6941              });
6942            });
6943          }
6944        });
6945      });
6946      instanceConfigs.forEach(function (_ref12) {
6947        var element = _ref12.element,
6948          key = _ref12.key;
6949        var actionGroups = instanceActionGroups[key];
6950        var actionItem = (0, _get["default"])(actionGroups, "[0].actionItems[0]", {});
6951        var actionTypeId = actionItem.actionTypeId;
6952        var pluginInstance = isPluginType(actionTypeId) ? // $FlowFixMe
6953          createPluginInstance(actionTypeId)(element, actionItem) : null;
6954        var destination = getDestinationValues({
6955          element: element,
6956          actionItem: actionItem,
6957          elementApi: elementApi
6958        }, // $FlowFixMe
6959          pluginInstance);
6960        createInstance({
6961          store: store,
6962          element: element,
6963          eventId: eventId,
6964          actionListId: actionListId,
6965          actionItem: actionItem,
6966          destination: destination,
6967          continuous: true,
6968          parameterId: parameterId,
6969          actionGroups: actionGroups,
6970          smoothing: smoothing,
6971          restingValue: restingValue,
6972          pluginInstance: pluginInstance
6973        });
6974      });
6975    }
6976
6977    function appendActionItem() {
6978      var actionGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6979      var keyframe = arguments.length > 1 ? arguments[1] : undefined;
6980      var actionItem = arguments.length > 2 ? arguments[2] : undefined;
6981      var newActionGroups = (0, _toConsumableArray2["default"])(actionGroups);
6982      var groupIndex;
6983      newActionGroups.some(function (group, index) {
6984        if (group.keyframe === keyframe) {
6985          groupIndex = index;
6986          return true;
6987        }
6988
6989        return false;
6990      });
6991
6992      if (groupIndex == null) {
6993        groupIndex = newActionGroups.length;
6994        newActionGroups.push({
6995          keyframe: keyframe,
6996          actionItems: []
6997        });
6998      }
6999
7000      newActionGroups[groupIndex].actionItems.push(actionItem);
7001      return newActionGroups;
7002    }
7003
7004    function bindEvents(store) {
7005      var _store$getState5 = store.getState(),
7006        ixData = _store$getState5.ixData;
7007
7008      var eventTypeMap = ixData.eventTypeMap;
7009      updateViewportWidth(store);
7010      (0, _forEach["default"])(eventTypeMap, function (events, key) {
7011        var logic = _IX2VanillaEvents["default"][key];
7012
7013        if (!logic) {
7014          console.warn("IX2 event type not configured: ".concat(key));
7015          return;
7016        }
7017
7018        bindEventType({
7019          logic: logic,
7020          store: store,
7021          events: events
7022        });
7023      });
7024
7025      var _store$getState6 = store.getState(),
7026        ixSession = _store$getState6.ixSession;
7027
7028      if (ixSession.eventListeners.length) {
7029        bindResizeEvents(store);
7030      }
7031    }
7032
7033    var WINDOW_RESIZE_EVENTS = ['resize', 'orientationchange'];
7034
7035    function bindResizeEvents(store) {
7036      var handleResize = function handleResize() {
7037        updateViewportWidth(store);
7038      };
7039
7040      WINDOW_RESIZE_EVENTS.forEach(function (type) {
7041        window.addEventListener(type, handleResize);
7042        store.dispatch((0, _IX2EngineActions.eventListenerAdded)(window, [type, handleResize]));
7043      });
7044      handleResize();
7045    }
7046
7047    function updateViewportWidth(store) {
7048      var _store$getState7 = store.getState(),
7049        ixSession = _store$getState7.ixSession,
7050        ixData = _store$getState7.ixData;
7051
7052      var width = window.innerWidth;
7053
7054      if (width !== ixSession.viewportWidth) {
7055        var mediaQueries = ixData.mediaQueries;
7056        store.dispatch((0, _IX2EngineActions.viewportWidthChanged)({
7057          width: width,
7058          mediaQueries: mediaQueries
7059        }));
7060      }
7061    }
7062
7063    var mapFoundValues = function mapFoundValues(object, iteratee) {
7064      return (0, _omitBy["default"])((0, _mapValues["default"])(object, iteratee), _isEmpty["default"]);
7065    };
7066
7067    var forEachEventTarget = function forEachEventTarget(eventTargets, eventCallback) {
7068      (0, _forEach["default"])(eventTargets, function (elements, eventId) {
7069        elements.forEach(function (element, index) {
7070          var eventStateKey = eventId + COLON_DELIMITER + index;
7071          eventCallback(element, eventId, eventStateKey);
7072        });
7073      });
7074    };
7075
7076    var getAffectedForEvent = function getAffectedForEvent(event) {
7077      var config = {
7078        target: event.target,
7079        targets: event.targets
7080      };
7081      return getAffectedElements({
7082        config: config,
7083        elementApi: elementApi
7084      });
7085    };
7086
7087    function bindEventType(_ref13) {
7088      var logic = _ref13.logic,
7089        store = _ref13.store,
7090        events = _ref13.events;
7091      injectBehaviorCSSFixes(events);
7092      var eventTypes = logic.types,
7093        eventHandler = logic.handler;
7094
7095      var _store$getState8 = store.getState(),
7096        ixData = _store$getState8.ixData;
7097
7098      var actionLists = ixData.actionLists;
7099      var eventTargets = mapFoundValues(events, getAffectedForEvent);
7100
7101      if (!(0, _size["default"])(eventTargets)) {
7102        return;
7103      }
7104
7105      (0, _forEach["default"])(eventTargets, function (elements, key) {
7106        var event = events[key];
7107        var eventAction = event.action,
7108          eventId = event.id,
7109          _event$mediaQueries = event.mediaQueries,
7110          mediaQueries = _event$mediaQueries === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries;
7111        var actionListId = eventAction.config.actionListId;
7112
7113        if (!mediaQueriesEqual(mediaQueries, ixData.mediaQueryKeys)) {
7114          store.dispatch((0, _IX2EngineActions.mediaQueriesDefined)());
7115        }
7116
7117        if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
7118          var configs = Array.isArray(event.config) ? event.config : [event.config];
7119          configs.forEach(function (eventConfig) {
7120            var continuousParameterGroupId = eventConfig.continuousParameterGroupId;
7121            var paramGroups = (0, _get["default"])(actionLists, "".concat(actionListId, ".continuousParameterGroups"), []);
7122            var parameterGroup = (0, _find["default"])(paramGroups, function (_ref14) {
7123              var id = _ref14.id;
7124              return id === continuousParameterGroupId;
7125            });
7126            var smoothing = (eventConfig.smoothing || 0) / 100;
7127            var restingValue = (eventConfig.restingState || 0) / 100;
7128
7129            if (!parameterGroup) {
7130              return;
7131            }
7132
7133            elements.forEach(function (eventTarget, index) {
7134              var eventStateKey = eventId + COLON_DELIMITER + index;
7135              createGroupInstances({
7136                store: store,
7137                eventStateKey: eventStateKey,
7138                eventTarget: eventTarget,
7139                eventId: eventId,
7140                eventConfig: eventConfig,
7141                actionListId: actionListId,
7142                parameterGroup: parameterGroup,
7143                smoothing: smoothing,
7144                restingValue: restingValue
7145              });
7146            });
7147          });
7148        }
7149
7150        if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(eventAction.actionTypeId)) {
7151          renderInitialGroup({
7152            store: store,
7153            actionListId: actionListId,
7154            eventId: eventId
7155          });
7156        }
7157      });
7158
7159      var handleEvent = function handleEvent(nativeEvent) {
7160        var _store$getState9 = store.getState(),
7161          ixSession = _store$getState9.ixSession;
7162
7163        forEachEventTarget(eventTargets, function (element, eventId, eventStateKey) {
7164          var event = events[eventId];
7165          var oldState = ixSession.eventState[eventStateKey];
7166          var eventAction = event.action,
7167            _event$mediaQueries2 = event.mediaQueries,
7168            mediaQueries = _event$mediaQueries2 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries2; // Bypass event handler if current media query is not listed in event config
7169
7170          if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7171            return;
7172          }
7173
7174          var handleEventWithConfig = function handleEventWithConfig() {
7175            var eventConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7176            var newState = eventHandler({
7177              store: store,
7178              element: element,
7179              event: event,
7180              eventConfig: eventConfig,
7181              nativeEvent: nativeEvent,
7182              eventStateKey: eventStateKey
7183            }, oldState);
7184
7185            if (!(0, _shallowEqual["default"])(newState, oldState)) {
7186              store.dispatch((0, _IX2EngineActions.eventStateChanged)(eventStateKey, newState));
7187            }
7188          };
7189
7190          if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
7191            var configs = Array.isArray(event.config) ? event.config : [event.config];
7192            configs.forEach(handleEventWithConfig);
7193          } else {
7194            handleEventWithConfig();
7195          }
7196        });
7197      };
7198
7199      var handleEventThrottled = (0, _throttle["default"])(handleEvent, THROTTLED_EVENT_WAIT);
7200
7201      var addListeners = function addListeners(_ref15) {
7202        var _ref15$target = _ref15.target,
7203          target = _ref15$target === void 0 ? document : _ref15$target,
7204          types = _ref15.types,
7205          shouldThrottle = _ref15.throttle;
7206        types.split(' ').filter(Boolean).forEach(function (type) {
7207          var handlerFunc = shouldThrottle ? handleEventThrottled : handleEvent; // $FlowFixMe
7208
7209          target.addEventListener(type, handlerFunc);
7210          store.dispatch((0, _IX2EngineActions.eventListenerAdded)(target, [type, handlerFunc]));
7211        });
7212      };
7213
7214      if (Array.isArray(eventTypes)) {
7215        eventTypes.forEach(addListeners);
7216      } else if (typeof eventTypes === 'string') {
7217        addListeners(logic);
7218      }
7219    }
7220    /**
7221     * Injects CSS into the document to fix behavior issues across
7222     * different devices.
7223     */
7224
7225
7226    function injectBehaviorCSSFixes(events) {
7227      if (!IS_MOBILE_SAFARI) {
7228        return;
7229      }
7230
7231      var injectedSelectors = {};
7232      var cssText = '';
7233
7234      for (var eventId in events) {
7235        var _events$eventId = events[eventId],
7236          eventTypeId = _events$eventId.eventTypeId,
7237          target = _events$eventId.target;
7238        var selector = elementApi.getQuerySelector(target); // $FlowFixMe
7239
7240        if (injectedSelectors[selector]) {
7241          continue;
7242        } // add a "cursor: pointer" style rule to ensure that CLICK events get fired for IOS devices
7243
7244
7245        if (eventTypeId === _constants.EventTypeConsts.MOUSE_CLICK || eventTypeId === _constants.EventTypeConsts.MOUSE_SECOND_CLICK) {
7246          // $FlowFixMe
7247          injectedSelectors[selector] = true;
7248          cssText += // $FlowFixMe
7249            selector + '{' + 'cursor: pointer;' + 'touch-action: manipulation;' + '}';
7250        }
7251      }
7252
7253      if (cssText) {
7254        var style = document.createElement('style');
7255        style.textContent = cssText; // $FlowFixMe
7256
7257        document.body.appendChild(style);
7258      }
7259    }
7260
7261    function renderInitialGroup(_ref16) {
7262      var store = _ref16.store,
7263        actionListId = _ref16.actionListId,
7264        eventId = _ref16.eventId;
7265
7266      var _store$getState10 = store.getState(),
7267        ixData = _store$getState10.ixData,
7268        ixSession = _store$getState10.ixSession;
7269
7270      var actionLists = ixData.actionLists,
7271        events = ixData.events;
7272      var event = events[eventId];
7273      var actionList = actionLists[actionListId];
7274
7275      if (actionList && actionList.useFirstGroupAsInitialState) {
7276        var initialStateItems = (0, _get["default"])(actionList, 'actionItemGroups[0].actionItems', []); // Bypass initial state render if current media query is not listed in event config
7277
7278        var mediaQueries = (0, _get["default"])(event, 'mediaQueries', ixData.mediaQueryKeys);
7279
7280        if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7281          return;
7282        }
7283
7284        initialStateItems.forEach(function (actionItem) {
7285          var _itemConfig$target;
7286
7287          var itemConfig = actionItem.config,
7288            actionTypeId = actionItem.actionTypeId;
7289          var config = // When useEventTarget is explicitly true, use event target/targets to query elements
7290            (itemConfig === null || itemConfig === void 0 ? void 0 : (_itemConfig$target = itemConfig.target) === null || _itemConfig$target === void 0 ? void 0 : _itemConfig$target.useEventTarget) === true ? {
7291              target: event.target,
7292              targets: event.targets
7293            } : itemConfig;
7294          var itemElements = getAffectedElements({
7295            config: config,
7296            event: event,
7297            elementApi: elementApi
7298          });
7299          var shouldUsePlugin = isPluginType(actionTypeId);
7300          itemElements.forEach(function (element) {
7301            var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7302              createPluginInstance(actionTypeId)(element, actionItem) : null;
7303            createInstance({
7304              destination: getDestinationValues({
7305                element: element,
7306                actionItem: actionItem,
7307                elementApi: elementApi
7308              }, // $FlowFixMe
7309                pluginInstance),
7310              immediate: true,
7311              store: store,
7312              element: element,
7313              eventId: eventId,
7314              actionItem: actionItem,
7315              actionListId: actionListId,
7316              pluginInstance: pluginInstance
7317            });
7318          });
7319        });
7320      }
7321    } // $FlowFixMe
7322
7323
7324    function stopAllActionGroups(_ref17) {
7325      var store = _ref17.store;
7326
7327      var _store$getState11 = store.getState(),
7328        ixInstances = _store$getState11.ixInstances;
7329
7330      (0, _forEach["default"])(ixInstances, function (instance) {
7331        if (!instance.continuous) {
7332          var actionListId = instance.actionListId,
7333            verbose = instance.verbose;
7334          removeInstance(instance, store);
7335
7336          if (verbose) {
7337            store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7338              actionListId: actionListId,
7339              isPlaying: false
7340            }));
7341          }
7342        }
7343      });
7344    } // $FlowFixMe
7345
7346
7347    function stopActionGroup(_ref18) {
7348      var store = _ref18.store,
7349        eventId = _ref18.eventId,
7350        eventTarget = _ref18.eventTarget,
7351        eventStateKey = _ref18.eventStateKey,
7352        actionListId = _ref18.actionListId;
7353
7354      var _store$getState12 = store.getState(),
7355        ixInstances = _store$getState12.ixInstances,
7356        ixSession = _store$getState12.ixSession; // Check for element boundary before stopping engine instances
7357
7358
7359      var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7360      (0, _forEach["default"])(ixInstances, function (instance) {
7361        var boundaryMode = (0, _get["default"])(instance, 'actionItem.config.target.boundaryMode'); // Validate event key if eventStateKey was provided, otherwise default to true
7362
7363        var validEventKey = eventStateKey ? instance.eventStateKey === eventStateKey : true; // Remove engine instances that match the required ids
7364
7365        if (instance.actionListId === actionListId && instance.eventId === eventId && validEventKey) {
7366          // Avoid removal when root boundary does not contain instance element
7367          if (eventElementRoot && boundaryMode && !elementApi.elementContains(eventElementRoot, instance.element)) {
7368            return;
7369          }
7370
7371          removeInstance(instance, store);
7372
7373          if (instance.verbose) {
7374            store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7375              actionListId: actionListId,
7376              isPlaying: false
7377            }));
7378          }
7379        }
7380      });
7381    } // $FlowFixMe
7382
7383
7384    function startActionGroup(_ref19) {
7385      var store = _ref19.store,
7386        eventId = _ref19.eventId,
7387        eventTarget = _ref19.eventTarget,
7388        eventStateKey = _ref19.eventStateKey,
7389        actionListId = _ref19.actionListId,
7390        _ref19$groupIndex = _ref19.groupIndex,
7391        groupIndex = _ref19$groupIndex === void 0 ? 0 : _ref19$groupIndex,
7392        immediate = _ref19.immediate,
7393        verbose = _ref19.verbose;
7394
7395      var _event$action;
7396
7397      var _store$getState13 = store.getState(),
7398        ixData = _store$getState13.ixData,
7399        ixSession = _store$getState13.ixSession;
7400
7401      var events = ixData.events;
7402      var event = events[eventId] || {};
7403      var _event$mediaQueries3 = event.mediaQueries,
7404        mediaQueries = _event$mediaQueries3 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries3;
7405      var actionList = (0, _get["default"])(ixData, "actionLists.".concat(actionListId), {});
7406      var actionItemGroups = actionList.actionItemGroups,
7407        useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; // Abort playback if no action groups
7408
7409      if (!actionItemGroups || !actionItemGroups.length) {
7410        return false;
7411      } // Reset to first group when event loop is configured
7412
7413
7414      if (groupIndex >= actionItemGroups.length && (0, _get["default"])(event, 'config.loop')) {
7415        groupIndex = 0;
7416      } // Skip initial state group during action list playback, as it should already be applied
7417
7418
7419      if (groupIndex === 0 && useFirstGroupAsInitialState) {
7420        groupIndex++;
7421      } // Identify first animated group and apply the initial QuickEffect delay
7422
7423
7424      var isFirstGroup = groupIndex === 0 || groupIndex === 1 && useFirstGroupAsInitialState;
7425      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
7426
7427      var actionItems = (0, _get["default"])(actionItemGroups, [groupIndex, 'actionItems'], []);
7428
7429      if (!actionItems.length) {
7430        return false;
7431      } // Abort playback if current media query is not listed in event config
7432
7433
7434      if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7435        return false;
7436      } // Limit affected elements when event target is within a boundary node
7437
7438
7439      var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7440      var carrierIndex = getMaxDurationItemIndex(actionItems);
7441      var groupStartResult = false;
7442      actionItems.forEach(function (actionItem, actionIndex) {
7443        var config = actionItem.config,
7444          actionTypeId = actionItem.actionTypeId;
7445        var shouldUsePlugin = isPluginType(actionTypeId);
7446        var target = config.target;
7447
7448        if (!target) {
7449          return;
7450        }
7451
7452        var elementRoot = target.boundaryMode ? eventElementRoot : null;
7453        var elements = getAffectedElements({
7454          config: config,
7455          event: event,
7456          eventTarget: eventTarget,
7457          elementRoot: elementRoot,
7458          elementApi: elementApi
7459        });
7460        elements.forEach(function (element, elementIndex) {
7461          var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7462            createPluginInstance(actionTypeId)(element, actionItem) : null;
7463          var pluginDuration = shouldUsePlugin ? // $FlowFixMe
7464            getPluginDuration(actionTypeId)(element, actionItem) : null;
7465          groupStartResult = true;
7466          var isCarrier = carrierIndex === actionIndex && elementIndex === 0;
7467          var computedStyle = getComputedStyle({
7468            element: element,
7469            actionItem: actionItem
7470          });
7471          var destination = getDestinationValues({
7472            element: element,
7473            actionItem: actionItem,
7474            elementApi: elementApi
7475          }, // $FlowFixMe
7476            pluginInstance);
7477          createInstance({
7478            store: store,
7479            element: element,
7480            actionItem: actionItem,
7481            eventId: eventId,
7482            eventTarget: eventTarget,
7483            eventStateKey: eventStateKey,
7484            actionListId: actionListId,
7485            groupIndex: groupIndex,
7486            isCarrier: isCarrier,
7487            computedStyle: computedStyle,
7488            destination: destination,
7489            immediate: immediate,
7490            verbose: verbose,
7491            pluginInstance: pluginInstance,
7492            pluginDuration: pluginDuration,
7493            instanceDelay: instanceDelay
7494          });
7495        });
7496      });
7497      return groupStartResult;
7498    }
7499
7500    function createInstance(options) {
7501      // $FlowFixMe
7502      var store = options.store,
7503        computedStyle = options.computedStyle,
7504        rest = (0, _objectWithoutPropertiesLoose2["default"])(options, ["store", "computedStyle"]); // $FlowFixMe
7505
7506      var autoStart = !rest.continuous; // $FlowFixMe
7507
7508      var element = rest.element,
7509        actionItem = rest.actionItem,
7510        immediate = rest.immediate,
7511        pluginInstance = rest.pluginInstance;
7512      var instanceId = getInstanceId();
7513
7514      var _store$getState14 = store.getState(),
7515        ixElements = _store$getState14.ixElements,
7516        ixSession = _store$getState14.ixSession;
7517
7518      var elementId = getElementId(ixElements, element);
7519
7520      var _ref20 = ixElements[elementId] || {},
7521        refState = _ref20.refState;
7522
7523      var refType = elementApi.getRefType(element);
7524      var origin = getInstanceOrigin(element, refState, computedStyle, actionItem, elementApi, // $FlowFixMe
7525        pluginInstance);
7526      store.dispatch((0, _IX2EngineActions.instanceAdded)((0, _extends2["default"])({
7527        instanceId: instanceId,
7528        elementId: elementId,
7529        origin: origin,
7530        refType: refType
7531      }, rest)));
7532      dispatchCustomEvent(document.body, 'ix2-animation-started', instanceId);
7533
7534      if (immediate) {
7535        renderImmediateInstance(store, instanceId);
7536        return;
7537      }
7538
7539      observeStore({
7540        store: store,
7541        select: function select(_ref21) {
7542          var ixInstances = _ref21.ixInstances;
7543          return ixInstances[instanceId];
7544        },
7545        onChange: handleInstanceChange
7546      });
7547
7548      if (autoStart) {
7549        store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, ixSession.tick));
7550      }
7551    }
7552
7553    function removeInstance(instance, store) {
7554      dispatchCustomEvent(document.body, 'ix2-animation-stopping', {
7555        instanceId: instance.id,
7556        state: store.getState()
7557      });
7558      var elementId = instance.elementId,
7559        actionItem = instance.actionItem;
7560
7561      var _store$getState15 = store.getState(),
7562        ixElements = _store$getState15.ixElements;
7563
7564      var _ref22 = ixElements[elementId] || {},
7565        ref = _ref22.ref,
7566        refType = _ref22.refType;
7567
7568      if (refType === HTML_ELEMENT) {
7569        cleanupHTMLElement(ref, actionItem, elementApi);
7570      }
7571
7572      store.dispatch((0, _IX2EngineActions.instanceRemoved)(instance.id));
7573    }
7574
7575    function dispatchCustomEvent(element, eventName, detail) {
7576      var event = document.createEvent('CustomEvent');
7577      event.initCustomEvent(eventName, true, true, detail); // $FlowFixMe
7578
7579      element.dispatchEvent(event);
7580    }
7581
7582    function renderImmediateInstance(store, instanceId) {
7583      var _store$getState16 = store.getState(),
7584        ixParameters = _store$getState16.ixParameters;
7585
7586      store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, 0));
7587      store.dispatch((0, _IX2EngineActions.animationFrameChanged)(performance.now(), ixParameters));
7588
7589      var _store$getState17 = store.getState(),
7590        ixInstances = _store$getState17.ixInstances;
7591
7592      handleInstanceChange(ixInstances[instanceId], store);
7593    }
7594
7595    function handleInstanceChange(instance, store) {
7596      var active = instance.active,
7597        continuous = instance.continuous,
7598        complete = instance.complete,
7599        elementId = instance.elementId,
7600        actionItem = instance.actionItem,
7601        actionTypeId = instance.actionTypeId,
7602        renderType = instance.renderType,
7603        current = instance.current,
7604        groupIndex = instance.groupIndex,
7605        eventId = instance.eventId,
7606        eventTarget = instance.eventTarget,
7607        eventStateKey = instance.eventStateKey,
7608        actionListId = instance.actionListId,
7609        isCarrier = instance.isCarrier,
7610        styleProp = instance.styleProp,
7611        verbose = instance.verbose,
7612        pluginInstance = instance.pluginInstance; // Bypass render if current media query is not listed in event config
7613
7614      var _store$getState18 = store.getState(),
7615        ixData = _store$getState18.ixData,
7616        ixSession = _store$getState18.ixSession;
7617
7618      var events = ixData.events;
7619      var event = events[eventId] || {};
7620      var _event$mediaQueries4 = event.mediaQueries,
7621        mediaQueries = _event$mediaQueries4 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries4;
7622
7623      if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7624        return;
7625      }
7626
7627      if (continuous || active || complete) {
7628        if (current || renderType === RENDER_GENERAL && complete) {
7629          // Render current values to ref state and grab latest
7630          store.dispatch((0, _IX2EngineActions.elementStateChanged)(elementId, actionTypeId, current, actionItem));
7631
7632          var _store$getState19 = store.getState(),
7633            ixElements = _store$getState19.ixElements;
7634
7635          var _ref23 = ixElements[elementId] || {},
7636            ref = _ref23.ref,
7637            refType = _ref23.refType,
7638            refState = _ref23.refState;
7639
7640          var actionState = refState && refState[actionTypeId]; // Choose render based on ref type
7641
7642          switch (refType) {
7643            case HTML_ELEMENT:
7644              {
7645                renderHTMLElement(ref, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance);
7646                break;
7647              }
7648          }
7649        }
7650
7651        if (complete) {
7652          if (isCarrier) {
7653            var started = startActionGroup({
7654              store: store,
7655              eventId: eventId,
7656              eventTarget: eventTarget,
7657              eventStateKey: eventStateKey,
7658              actionListId: actionListId,
7659              groupIndex: groupIndex + 1,
7660              verbose: verbose
7661            });
7662
7663            if (verbose && !started) {
7664              store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7665                actionListId: actionListId,
7666                isPlaying: false
7667              }));
7668            }
7669          }
7670
7671          removeInstance(instance, store);
7672        }
7673      }
7674    }
7675
7676    /***/
7677  }),
7678/* 116 */
7679/***/ (function (module, exports, __webpack_require__) {
7680
7681    var defineProperty = __webpack_require__(117);
7682
7683    /**
7684     * The base implementation of `assignValue` and `assignMergeValue` without
7685     * value checks.
7686     *
7687     * @private
7688     * @param {Object} object The object to modify.
7689     * @param {string} key The key of the property to assign.
7690     * @param {*} value The value to assign.
7691     */
7692    function baseAssignValue(object, key, value) {
7693      if (key == '__proto__' && defineProperty) {
7694        defineProperty(object, key, {
7695          'configurable': true,
7696          'enumerable': true,
7697          'value': value,
7698          'writable': true
7699        });
7700      } else {
7701        object[key] = value;
7702      }
7703    }
7704
7705    module.exports = baseAssignValue;
7706
7707
7708    /***/
7709  }),
7710/* 117 */
7711/***/ (function (module, exports, __webpack_require__) {
7712
7713    var getNative = __webpack_require__(8);
7714
7715    var defineProperty = (function () {
7716      try {
7717        var func = getNative(Object, 'defineProperty');
7718        func({}, '', {});
7719        return func;
7720      } catch (e) { }
7721    }());
7722
7723    module.exports = defineProperty;
7724
7725
7726    /***/
7727  }),
7728/* 118 */
7729/***/ (function (module, exports, __webpack_require__) {
7730
7731    var isObject = __webpack_require__(6);
7732
7733    /** Built-in value references. */
7734    var objectCreate = Object.create;
7735
7736    /**
7737     * The base implementation of `_.create` without support for assigning
7738     * properties to the created object.
7739     *
7740     * @private
7741     * @param {Object} proto The object to inherit from.
7742     * @returns {Object} Returns the new object.
7743     */
7744    var baseCreate = (function () {
7745      function object() { }
7746      return function (proto) {
7747        if (!isObject(proto)) {
7748          return {};
7749        }
7750        if (objectCreate) {
7751          return objectCreate(proto);
7752        }
7753        object.prototype = proto;
7754        var result = new object;
7755        object.prototype = undefined;
7756        return result;
7757      };
7758    }());
7759
7760    module.exports = baseCreate;
7761
7762
7763    /***/
7764  }),
7765/* 119 */
7766/***/ (function (module, exports, __webpack_require__) {
7767
7768    var metaMap = __webpack_require__(305),
7769      noop = __webpack_require__(306);
7770
7771    /**
7772     * Gets metadata for `func`.
7773     *
7774     * @private
7775     * @param {Function} func The function to query.
7776     * @returns {*} Returns the metadata for `func`.
7777     */
7778    var getData = !metaMap ? noop : function (func) {
7779      return metaMap.get(func);
7780    };
7781
7782    module.exports = getData;
7783
7784
7785    /***/
7786  }),
7787/* 120 */
7788/***/ (function (module, exports, __webpack_require__) {
7789
7790    var realNames = __webpack_require__(307);
7791
7792    /** Used for built-in method references. */
7793    var objectProto = Object.prototype;
7794
7795    /** Used to check objects for own properties. */
7796    var hasOwnProperty = objectProto.hasOwnProperty;
7797
7798    /**
7799     * Gets the name of `func`.
7800     *
7801     * @private
7802     * @param {Function} func The function to query.
7803     * @returns {string} Returns the function name.
7804     */
7805    function getFuncName(func) {
7806      var result = (func.name + ''),
7807        array = realNames[result],
7808        length = hasOwnProperty.call(realNames, result) ? array.length : 0;
7809
7810      while (length--) {
7811        var data = array[length],
7812          otherFunc = data.func;
7813        if (otherFunc == null || otherFunc == func) {
7814          return data.name;
7815        }
7816      }
7817      return result;
7818    }
7819
7820    module.exports = getFuncName;
7821
7822
7823    /***/
7824  }),
7825/* 121 */
7826/***/ (function (module, exports, __webpack_require__) {
7827
7828    __webpack_require__(122);
7829    __webpack_require__(123);
7830    __webpack_require__(37);
7831    __webpack_require__(125);
7832    __webpack_require__(22);
7833    __webpack_require__(126);
7834    __webpack_require__(314);
7835    __webpack_require__(315);
7836    __webpack_require__(316);
7837    __webpack_require__(317);
7838    __webpack_require__(318);
7839    __webpack_require__(323);
7840    __webpack_require__(324);
7841    module.exports = __webpack_require__(325);
7842
7843
7844    /***/
7845  }),
7846/* 122 */
7847/***/ (function (module, exports, __webpack_require__) {
7848
7849    "use strict";
7850    // @wf-will-never-add-flow-to-this-file
7851
7852    /*
7853     global
7854     window, document, Event
7855    */
7856
7857    /*----------------------------------------
7858     * objectFitPolyfill 2.3.0
7859     *
7860     * Basic, no-frills version -
7861     * Defaults to object-fit: cover and object-position: 50% 50%
7862     *
7863     * Made by Constance Chen
7864     * Released under the MIT license
7865     *
7866     * https://github.com/constancecchen/object-fit-polyfill
7867     *--------------------------------------*/
7868
7869    var _interopRequireDefault = __webpack_require__(0);
7870
7871    var _typeof2 = _interopRequireDefault(__webpack_require__(13));
7872
7873    (function () {
7874      // if the page is being rendered on the server, don't continue
7875      if (typeof window === 'undefined') return; // Workaround for Edge 16+, which only implemented object-fit for <img> tags
7876      // TODO: Keep an eye on Edge to determine which version has full final support
7877
7878      var edgeVersion = window.navigator.userAgent.match(/Edge\/(\d{2})\./);
7879      var edgePartialSupport = edgeVersion ? parseInt(edgeVersion[1], 10) >= 16 : false; // If the browser does support object-fit, we don't need to continue
7880
7881      var hasSupport = 'objectFit' in document.documentElement.style !== false;
7882
7883      if (hasSupport && !edgePartialSupport) {
7884        window.objectFitPolyfill = function () {
7885          return false;
7886        };
7887
7888        return;
7889      }
7890      /**
7891       * Check the container's parent element to make sure it will
7892       * correctly handle and clip absolutely positioned children
7893       *
7894       * @param {node} $container - parent element
7895       */
7896
7897
7898      var checkParentContainer = function checkParentContainer($container) {
7899        var styles = window.getComputedStyle($container, null);
7900        var position = styles.getPropertyValue('position');
7901        var overflow = styles.getPropertyValue('overflow');
7902        var display = styles.getPropertyValue('display');
7903
7904        if (!position || position === 'static') {
7905          $container.style.position = 'relative';
7906        }
7907
7908        if (overflow !== 'hidden') {
7909          $container.style.overflow = 'hidden';
7910        } // Guesstimating that people want the parent to act like full width/height wrapper here.
7911        // Mostly attempts to target <picture> elements, which default to inline.
7912
7913
7914        if (!display || display === 'inline') {
7915          $container.style.display = 'block';
7916        }
7917
7918        if ($container.clientHeight === 0) {
7919          $container.style.height = '100%';
7920        } // Add a CSS class hook, in case people need to override styles for any reason.
7921
7922
7923        if ($container.className.indexOf('object-fit-polyfill') === -1) {
7924          $container.className += ' object-fit-polyfill';
7925        }
7926      };
7927      /**
7928       * Check for pre-set max-width/height, min-width/height,
7929       * positioning, or margins, which can mess up image calculations
7930       *
7931       * @param {node} $media - img/video element
7932       */
7933
7934
7935      var checkMediaProperties = function checkMediaProperties($media) {
7936        var styles = window.getComputedStyle($media, null);
7937        var constraints = {
7938          'max-width': 'none',
7939          'max-height': 'none',
7940          'min-width': '0px',
7941          'min-height': '0px',
7942          top: 'auto',
7943          right: 'auto',
7944          bottom: 'auto',
7945          left: 'auto',
7946          'margin-top': '0px',
7947          'margin-right': '0px',
7948          'margin-bottom': '0px',
7949          'margin-left': '0px'
7950        };
7951
7952        for (var property in constraints) {
7953          var constraint = styles.getPropertyValue(property);
7954
7955          if (constraint !== constraints[property]) {
7956            $media.style[property] = constraints[property];
7957          }
7958        }
7959      };
7960      /**
7961       * Calculate & set object-fit
7962       *
7963       * @param {node} $media - img/video/picture element
7964       */
7965
7966
7967      var objectFit = function objectFit($media) {
7968        // If necessary, make the parent container work with absolutely positioned elements
7969        var $container = $media.parentNode;
7970        checkParentContainer($container); // Check for any pre-set CSS which could mess up image calculations
7971
7972        checkMediaProperties($media); // Mathematically figure out which side needs covering, and add CSS positioning & centering
7973
7974        $media.style.position = 'absolute';
7975        $media.style.height = '100%';
7976        $media.style.width = 'auto';
7977
7978        if ($media.clientWidth > $container.clientWidth) {
7979          $media.style.top = '0';
7980          $media.style.marginTop = '0';
7981          $media.style.left = '50%';
7982          $media.style.marginLeft = $media.clientWidth / -2 + 'px';
7983        } else {
7984          $media.style.width = '100%';
7985          $media.style.height = 'auto';
7986          $media.style.left = '0';
7987          $media.style.marginLeft = '0';
7988          $media.style.top = '50%';
7989          $media.style.marginTop = $media.clientHeight / -2 + 'px';
7990        }
7991      };
7992      /**
7993       * Initialize plugin
7994       *
7995       * @param {node} media - Optional specific DOM node(s) to be polyfilled
7996       */
7997
7998
7999      var objectFitPolyfill = function objectFitPolyfill(media) {
8000        if (typeof media === 'undefined' || media instanceof Event) {
8001          // If left blank, or a default event, all media on the page will be polyfilled.
8002          media = document.querySelectorAll('[data-object-fit]');
8003        } else if (media && media.nodeName) {
8004          // If it's a single node, wrap it in an array so it works.
8005          media = [media];
8006        } else if ((0, _typeof2["default"])(media) === 'object' && media.length && media[0].nodeName) {
8007          // If it's an array of DOM nodes (e.g. a jQuery selector), it's fine as-is.
8008          // eslint-disable-next-line no-self-assign
8009          media = media;
8010        } else {
8011          // Otherwise, if it's invalid or an incorrect type, return false to let people know.
8012          return false;
8013        }
8014
8015        for (var i = 0; i < media.length; i++) {
8016          if (!media[i].nodeName) continue;
8017          var mediaType = media[i].nodeName.toLowerCase();
8018
8019          if (mediaType === 'img') {
8020            if (edgePartialSupport) continue; // Edge supports object-fit for images (but nothing else), so no need to polyfill
8021
8022            if (media[i].complete) {
8023              objectFit(media[i]);
8024            } else {
8025              media[i].addEventListener('load', function () {
8026                objectFit(this);
8027              });
8028            }
8029          } else if (mediaType === 'video') {
8030            if (media[i].readyState > 0) {
8031              objectFit(media[i]);
8032            } else {
8033              media[i].addEventListener('loadedmetadata', function () {
8034                objectFit(this);
8035              });
8036            }
8037          } else {
8038            objectFit(media[i]);
8039          }
8040        }
8041
8042        return true;
8043      };
8044
8045      if (document.readyState === 'loading') {
8046        // Loading hasn't finished yet
8047        document.addEventListener('DOMContentLoaded', objectFitPolyfill);
8048      } else {
8049        // `DOMContentLoaded` has already fired
8050        objectFitPolyfill();
8051      }
8052
8053      window.addEventListener('resize', objectFitPolyfill);
8054      window.objectFitPolyfill = objectFitPolyfill;
8055    })();
8056
8057    /***/
8058  }),
8059/* 123 */
8060/***/ (function (module, exports, __webpack_require__) {
8061
8062    "use strict";
8063    // @wf-will-never-add-flow-to-this-file
8064
8065    /* globals document, window, navigator */
8066
8067    /* eslint-disable no-var */
8068
8069    /**
8070     * Webflow: Brand pages on the subdomain
8071     */
8072
8073    var Webflow = __webpack_require__(3);
8074
8075    Webflow.define('brand', module.exports = function ($) {
8076      var api = {};
8077      var doc = document;
8078      var $html = $('html');
8079      var $body = $('body');
8080      var namespace = '.w-webflow-badge';
8081      var location = window.location;
8082      var isPhantom = /PhantomJS/i.test(navigator.userAgent);
8083      var fullScreenEvents = 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange';
8084      var brandElement; // -----------------------------------
8085      // Module methods
8086
8087      api.ready = function () {
8088        var shouldBrand = $html.attr('data-wf-status');
8089        var publishedDomain = $html.attr('data-wf-domain') || '';
8090
8091        if (/\.webflow\.io$/i.test(publishedDomain) && location.hostname !== publishedDomain) {
8092          shouldBrand = true;
8093        }
8094
8095        if (shouldBrand && !isPhantom) {
8096          brandElement = brandElement || createBadge();
8097          ensureBrand();
8098          setTimeout(ensureBrand, 500);
8099          $(doc).off(fullScreenEvents, onFullScreenChange).on(fullScreenEvents, onFullScreenChange);
8100        }
8101      };
8102
8103      function onFullScreenChange() {
8104        var fullScreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen || doc.msFullscreenElement || Boolean(doc.webkitFullscreenElement);
8105        $(brandElement).attr('style', fullScreen ? 'display: none !important;' : '');
8106      }
8107
8108      function createBadge() {
8109        var $brand = $('<a class="w-webflow-badge"></a>').attr('href', 'https://webflow.com?utm_campaign=brandjs');
8110        var $logoArt = $('<img>').attr('src', 'https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon.f67cd735e3.svg').attr('alt', '').css({
8111          marginRight: '8px',
8112          width: '16px'
8113        });
8114        var $logoText = $('<img>').attr('src', 'https://d1otoma47x30pg.cloudfront.net/img/webflow-badge-text.6faa6a38cd.svg').attr('alt', 'Made in Webflow');
8115        $brand.append($logoArt, $logoText);
8116        return $brand[0];
8117      }
8118
8119      function ensureBrand() {
8120        var found = $body.children(namespace);
8121        var match = found.length && found.get(0) === brandElement;
8122        var inEditor = Webflow.env('editor');
8123
8124        if (match) {
8125          // Remove brand when Editor is active
8126          if (inEditor) {
8127            found.remove();
8128          } // Exit early, brand is in place
8129
8130
8131          return;
8132        } // Remove any invalid brand elements
8133
8134
8135        if (found.length) {
8136          found.remove();
8137        } // Append the brand (unless Editor is active)
8138
8139
8140        if (!inEditor) {
8141          $body.append(brandElement);
8142        }
8143      } // Export module
8144
8145
8146      return api;
8147    });
8148
8149    /***/
8150  }),
8151/* 124 */
8152/***/ (function (module, exports, __webpack_require__) {
8153
8154    "use strict";
8155    // @wf-will-never-add-flow-to-this-file
8156    // Include tram for frame-throttling
8157
8158    /* globals window */
8159
8160    /* eslint-disable no-var */
8161
8162    var $ = window.$;
8163    var tram = __webpack_require__(66) && $.tram;
8164    /*!
8165     * Webflow._ (aka) Underscore.js 1.6.0 (custom build)
8166     * _.each
8167     * _.map
8168     * _.find
8169     * _.filter
8170     * _.any
8171     * _.contains
8172     * _.delay
8173     * _.defer
8174     * _.throttle (webflow)
8175     * _.debounce
8176     * _.keys
8177     * _.has
8178     * _.now
8179     *
8180     * http://underscorejs.org
8181     * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
8182     * Underscore may be freely distributed under the MIT license.
8183     * @license MIT
8184     */
8185
8186    module.exports = function () {
8187      var _ = {}; // Current version.
8188
8189      _.VERSION = '1.6.0-Webflow'; // Establish the object that gets returned to break out of a loop iteration.
8190
8191      var breaker = {}; // Save bytes in the minified (but not gzipped) version:
8192
8193      /* eslint-disable one-var */
8194
8195      var ArrayProto = Array.prototype,
8196        ObjProto = Object.prototype,
8197        FuncProto = Function.prototype;
8198      /* eslint-enable one-var */
8199      // Create quick reference variables for speed access to core prototypes.
8200
8201      /* eslint-disable one-var, no-unused-vars */
8202
8203      var push = ArrayProto.push,
8204        slice = ArrayProto.slice,
8205        concat = ArrayProto.concat,
8206        toString = ObjProto.toString,
8207        hasOwnProperty = ObjProto.hasOwnProperty;
8208      /* eslint-enable one-var, no-unused-vars */
8209      // All **ECMAScript 5** native function implementations that we hope to use
8210      // are declared here.
8211
8212      /* eslint-disable one-var, no-unused-vars */
8213
8214      var nativeForEach = ArrayProto.forEach,
8215        nativeMap = ArrayProto.map,
8216        nativeReduce = ArrayProto.reduce,
8217        nativeReduceRight = ArrayProto.reduceRight,
8218        nativeFilter = ArrayProto.filter,
8219        nativeEvery = ArrayProto.every,
8220        nativeSome = ArrayProto.some,
8221        nativeIndexOf = ArrayProto.indexOf,
8222        nativeLastIndexOf = ArrayProto.lastIndexOf,
8223        nativeIsArray = Array.isArray,
8224        nativeKeys = Object.keys,
8225        nativeBind = FuncProto.bind;
8226      /* eslint-enable one-var, no-unused-vars */
8227      // Collection Functions
8228      // --------------------
8229      // The cornerstone, an `each` implementation, aka `forEach`.
8230      // Handles objects with the built-in `forEach`, arrays, and raw objects.
8231      // Delegates to **ECMAScript 5**'s native `forEach` if available.
8232
8233      var each = _.each = _.forEach = function (obj, iterator, context) {
8234        /* jshint shadow:true */
8235        if (obj == null) return obj;
8236
8237        if (nativeForEach && obj.forEach === nativeForEach) {
8238          obj.forEach(iterator, context); // eslint-disable-next-line no-implicit-coercion
8239        } else if (obj.length === +obj.length) {
8240          for (var i = 0, length = obj.length; i < length; i++) {
8241            if (iterator.call(context, obj[i], i, obj) === breaker) return;
8242          }
8243        } else {
8244          var keys = _.keys(obj); // eslint-disable-next-line no-redeclare
8245
8246
8247          for (var i = 0, length = keys.length; i < length; i++) {
8248            if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
8249          }
8250        }
8251
8252        return obj;
8253      }; // Return the results of applying the iterator to each element.
8254      // Delegates to **ECMAScript 5**'s native `map` if available.
8255
8256
8257      _.map = _.collect = function (obj, iterator, context) {
8258        var results = [];
8259        if (obj == null) return results;
8260        if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
8261        each(obj, function (value, index, list) {
8262          results.push(iterator.call(context, value, index, list));
8263        });
8264        return results;
8265      }; // Return the first value which passes a truth test. Aliased as `detect`.
8266
8267
8268      _.find = _.detect = function (obj, predicate, context) {
8269        var result;
8270        any(obj, function (value, index, list) {
8271          if (predicate.call(context, value, index, list)) {
8272            result = value;
8273            return true;
8274          }
8275        });
8276        return result;
8277      }; // Return all the elements that pass a truth test.
8278      // Delegates to **ECMAScript 5**'s native `filter` if available.
8279      // Aliased as `select`.
8280
8281
8282      _.filter = _.select = function (obj, predicate, context) {
8283        var results = [];
8284        if (obj == null) return results;
8285        if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
8286        each(obj, function (value, index, list) {
8287          if (predicate.call(context, value, index, list)) results.push(value);
8288        });
8289        return results;
8290      }; // Determine if at least one element in the object matches a truth test.
8291      // Delegates to **ECMAScript 5**'s native `some` if available.
8292      // Aliased as `any`.
8293
8294
8295      var any = _.some = _.any = function (obj, predicate, context) {
8296        predicate || (predicate = _.identity);
8297        var result = false;
8298        if (obj == null) return result;
8299        if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
8300        each(obj, function (value, index, list) {
8301          if (result || (result = predicate.call(context, value, index, list))) return breaker;
8302        });
8303        return !!result; // eslint-disable-line no-implicit-coercion
8304      }; // Determine if the array or object contains a given value (using `===`).
8305      // Aliased as `include`.
8306
8307
8308      _.contains = _.include = function (obj, target) {
8309        if (obj == null) return false;
8310        if (nativeIndexOf && obj.indexOf === nativeIndexOf) // eslint-disable-next-line eqeqeq
8311          return obj.indexOf(target) != -1;
8312        return any(obj, function (value) {
8313          return value === target;
8314        });
8315      }; // Function (ahem) Functions
8316      // --------------------
8317      // Delays a function for the given number of milliseconds, and then calls
8318      // it with the arguments supplied.
8319
8320
8321      _.delay = function (func, wait) {
8322        var args = slice.call(arguments, 2);
8323        return setTimeout(function () {
8324          return func.apply(null, args);
8325        }, wait);
8326      }; // Defers a function, scheduling it to run after the current call stack has
8327      // cleared.
8328
8329
8330      _.defer = function (func) {
8331        return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
8332      }; // Returns a function, that, when invoked, will only be triggered once every
8333      // browser animation frame - using tram's requestAnimationFrame polyfill.
8334
8335
8336      _.throttle = function (func) {
8337        // eslint-disable-next-line one-var
8338        var wait, args, context;
8339        return function () {
8340          if (wait) return;
8341          wait = true;
8342          args = arguments;
8343          context = this;
8344          tram.frame(function () {
8345            wait = false;
8346            func.apply(context, args);
8347          });
8348        };
8349      }; // Returns a function, that, as long as it continues to be invoked, will not
8350      // be triggered. The function will be called after it stops being called for
8351      // N milliseconds. If `immediate` is passed, trigger the function on the
8352      // leading edge, instead of the trailing.
8353
8354
8355      _.debounce = function (func, wait, immediate) {
8356        // eslint-disable-next-line one-var
8357        var timeout, args, context, timestamp, result;
8358
8359        var later = function later() {
8360          var last = _.now() - timestamp;
8361
8362          if (last < wait) {
8363            timeout = setTimeout(later, wait - last);
8364          } else {
8365            timeout = null;
8366
8367            if (!immediate) {
8368              result = func.apply(context, args);
8369              context = args = null;
8370            }
8371          }
8372        };
8373
8374        return function () {
8375          context = this;
8376          args = arguments;
8377          timestamp = _.now();
8378          var callNow = immediate && !timeout;
8379
8380          if (!timeout) {
8381            timeout = setTimeout(later, wait);
8382          }
8383
8384          if (callNow) {
8385            result = func.apply(context, args);
8386            context = args = null;
8387          }
8388
8389          return result;
8390        };
8391      }; // Object Functions
8392      // ----------------
8393      // Fill in a given object with default properties.
8394
8395
8396      _.defaults = function (obj) {
8397        if (!_.isObject(obj)) return obj;
8398
8399        for (var i = 1, length = arguments.length; i < length; i++) {
8400          var source = arguments[i];
8401
8402          for (var prop in source) {
8403            // eslint-disable-next-line no-void
8404            if (obj[prop] === void 0) obj[prop] = source[prop];
8405          }
8406        }
8407
8408        return obj;
8409      }; // Retrieve the names of an object's properties.
8410      // Delegates to **ECMAScript 5**'s native `Object.keys`
8411
8412
8413      _.keys = function (obj) {
8414        if (!_.isObject(obj)) return [];
8415        if (nativeKeys) return nativeKeys(obj);
8416        var keys = [];
8417
8418        for (var key in obj) {
8419          if (_.has(obj, key)) keys.push(key);
8420        }
8421
8422        return keys;
8423      }; // Shortcut function for checking if an object has a given property directly
8424      // on itself (in other words, not on a prototype).
8425
8426
8427      _.has = function (obj, key) {
8428        return hasOwnProperty.call(obj, key);
8429      }; // Is a given variable an object?
8430
8431
8432      _.isObject = function (obj) {
8433        return obj === Object(obj);
8434      }; // Utility Functions
8435      // -----------------
8436      // A (possibly faster) way to get the current timestamp as an integer.
8437
8438
8439      _.now = Date.now || function () {
8440        return new Date().getTime();
8441      }; // By default, Underscore uses ERB-style template delimiters, change the
8442      // following template settings to use alternative delimiters.
8443
8444
8445      _.templateSettings = {
8446        evaluate: /<%([\s\S]+?)%>/g,
8447        interpolate: /<%=([\s\S]+?)%>/g,
8448        escape: /<%-([\s\S]+?)%>/g
8449      }; // When customizing `templateSettings`, if you don't want to define an
8450      // interpolation, evaluation or escaping regex, we need one that is
8451      // guaranteed not to match.
8452
8453      var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a
8454      // string literal.
8455
8456      var escapes = {
8457        "'": "'",
8458        '\\': '\\',
8459        '\r': 'r',
8460        '\n': 'n',
8461        "\u2028": 'u2028',
8462        "\u2029": 'u2029'
8463      };
8464      var escaper = /\\|'|\r|\n|\u2028|\u2029/g;
8465
8466      var escapeChar = function escapeChar(match) {
8467        return '\\' + escapes[match];
8468      }; // JavaScript micro-templating, similar to John Resig's implementation.
8469      // Underscore templating handles arbitrary delimiters, preserves whitespace,
8470      // and correctly escapes quotes within interpolated code.
8471      // NB: `oldSettings` only exists for backwards compatibility.
8472
8473
8474      _.template = function (text, settings, oldSettings) {
8475        if (!settings && oldSettings) settings = oldSettings;
8476        settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation.
8477
8478        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.
8479
8480        var index = 0;
8481        var source = "__p+='";
8482        text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
8483          source += text.slice(index, offset).replace(escaper, escapeChar);
8484          index = offset + match.length;
8485
8486          if (escape) {
8487            source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
8488          } else if (interpolate) {
8489            source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
8490          } else if (evaluate) {
8491            source += "';\n" + evaluate + "\n__p+='";
8492          } // Adobe VMs need the match returned to produce the correct offest.
8493
8494
8495          return match;
8496        });
8497        source += "';\n"; // If a variable is not specified, place data values in local scope.
8498
8499        if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
8500        source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n';
8501
8502        try {
8503          // eslint-disable-next-line no-new-func
8504          var render = new Function(settings.variable || 'obj', '_', source);
8505        } catch (e) {
8506          e.source = source;
8507          throw e;
8508        }
8509
8510        var template = function template(data) {
8511          return render.call(this, data, _);
8512        }; // Provide the compiled source as a convenience for precompilation.
8513
8514
8515        var argument = settings.variable || 'obj';
8516        template.source = 'function(' + argument + '){\n' + source + '}';
8517        return template;
8518      }; // Export underscore
8519
8520
8521      return _;
8522    }();
8523    /* eslint-enable */
8524
8525    /***/
8526  }),
8527/* 125 */
8528/***/ (function (module, exports, __webpack_require__) {
8529
8530    "use strict";
8531    // @wf-will-never-add-flow-to-this-file
8532
8533    /* globals window */
8534
8535    /* eslint-disable no-var */
8536
8537    /**
8538     * Webflow: Interactions
8539     */
8540
8541    var Webflow = __webpack_require__(3);
8542
8543    var IXEvents = __webpack_require__(37);
8544
8545    Webflow.define('ix', module.exports = function ($, _) {
8546      var api = {};
8547      var designer;
8548      var $win = $(window);
8549      var namespace = '.w-ix';
8550      var tram = $.tram;
8551      var env = Webflow.env;
8552      var inApp = env();
8553      var emptyFix = env.chrome && env.chrome < 35;
8554      var transNone = 'none 0s ease 0s';
8555      var $subs = $();
8556      var config = {};
8557      var anchors = [];
8558      var loads = [];
8559      var readys = [];
8560      var destroyed;
8561      var readyDelay = 1; // Component types and proxy selectors
8562
8563      var components = {
8564        tabs: '.w-tab-link, .w-tab-pane',
8565        dropdown: '.w-dropdown',
8566        slider: '.w-slide',
8567        navbar: '.w-nav'
8568      }; // -----------------------------------
8569      // Module methods
8570
8571      api.init = function (list) {
8572        setTimeout(function () {
8573          configure(list);
8574        }, 1);
8575      };
8576
8577      api.preview = function () {
8578        designer = false;
8579        readyDelay = 100;
8580        setTimeout(function () {
8581          configure(window.__wf_ix);
8582        }, 1);
8583      };
8584
8585      api.design = function () {
8586        designer = true;
8587        api.destroy();
8588      };
8589
8590      api.destroy = function () {
8591        destroyed = true;
8592        $subs.each(teardown);
8593        Webflow.scroll.off(scroll);
8594        IXEvents.async();
8595        anchors = [];
8596        loads = [];
8597        readys = [];
8598      };
8599
8600      api.ready = function () {
8601        // Redirect IX init while in design/preview modes
8602        if (inApp) {
8603          return env('design') ? api.design() : api.preview();
8604        } // Ready should only be used after destroy, as a way to re-init
8605
8606
8607        if (config && destroyed) {
8608          destroyed = false;
8609          init();
8610        }
8611      };
8612
8613      api.run = run;
8614      api.style = inApp ? styleApp : stylePub; // -----------------------------------
8615      // Private methods
8616
8617      function configure(list) {
8618        if (!list) {
8619          return;
8620        } // Map all interactions by slug
8621
8622
8623        config = {};
8624
8625        _.each(list, function (item) {
8626          config[item.slug] = item.value;
8627        }); // Init ix after config
8628
8629
8630        init();
8631      }
8632
8633      function init() {
8634        initIX1Engine(); // Need init IXEvents regardless if IX1 events exist since
8635        // IXEvents _also_ dispatch IX2 events.
8636        // Trigger queued events, must happen after init
8637
8638        IXEvents.init(); // Trigger a redraw to ensure all IX intros play
8639
8640        Webflow.redraw.up();
8641      }
8642
8643      function initIX1Engine() {
8644        // Build each element's interaction keying from data attribute
8645        var els = $('[data-ix]');
8646
8647        if (!els.length) {
8648          return;
8649        }
8650
8651        els.each(teardown);
8652        els.each(build); // Listen for scroll events if any anchors exist
8653
8654        if (anchors.length) {
8655          Webflow.scroll.on(scroll);
8656          setTimeout(scroll, 1);
8657        } // Handle loads or readys if they exist
8658
8659
8660        if (loads.length) {
8661          Webflow.load(runLoads);
8662        }
8663
8664        if (readys.length) {
8665          setTimeout(runReadys, readyDelay);
8666        }
8667      }
8668
8669      function build(i, el) {
8670        var $el = $(el);
8671        var id = $el.attr('data-ix');
8672        var ix = config[id];
8673
8674        if (!ix) {
8675          return;
8676        }
8677
8678        var triggers = ix.triggers;
8679
8680        if (!triggers) {
8681          return;
8682        } // Set styles immediately to provide tram with starting transform values
8683
8684
8685        api.style($el, ix.style);
8686
8687        _.each(triggers, function (trigger) {
8688          var state = {};
8689          var type = trigger.type;
8690          var stepsB = trigger.stepsB && trigger.stepsB.length;
8691
8692          function runA() {
8693            run(trigger, $el, {
8694              group: 'A'
8695            });
8696          }
8697
8698          function runB() {
8699            run(trigger, $el, {
8700              group: 'B'
8701            });
8702          }
8703
8704          if (type === 'load') {
8705            trigger.preload && !inApp ? loads.push(runA) : readys.push(runA);
8706            return;
8707          }
8708
8709          if (type === 'click') {
8710            $el.on('click' + namespace, function (evt) {
8711              // Avoid late clicks on touch devices
8712              if (!Webflow.validClick(evt.currentTarget)) {
8713                return;
8714              } // Prevent default on empty hash urls
8715
8716
8717              if ($el.attr('href') === '#') {
8718                evt.preventDefault();
8719              }
8720
8721              run(trigger, $el, {
8722                group: state.clicked ? 'B' : 'A'
8723              });
8724
8725              if (stepsB) {
8726                state.clicked = !state.clicked;
8727              }
8728            });
8729            $subs = $subs.add($el);
8730            return;
8731          }
8732
8733          if (type === 'hover') {
8734            $el.on('mouseenter' + namespace, runA);
8735            $el.on('mouseleave' + namespace, runB);
8736            $subs = $subs.add($el);
8737            return;
8738          }
8739
8740          if (type === 'scroll') {
8741            anchors.push({
8742              el: $el,
8743              trigger: trigger,
8744              state: {
8745                active: false
8746              },
8747              offsetTop: convert(trigger.offsetTop),
8748              offsetBot: convert(trigger.offsetBot)
8749            });
8750            return;
8751          } // Check for a proxy component selector
8752          // type == [tabs, dropdown, slider, navbar]
8753
8754
8755          var proxy = components[type];
8756
8757          if (proxy) {
8758            var $proxy = $el.closest(proxy);
8759            $proxy.on(IXEvents.types.INTRO, runA).on(IXEvents.types.OUTRO, runB);
8760            $subs = $subs.add($proxy);
8761            return;
8762          }
8763        });
8764      }
8765
8766      function convert(offset) {
8767        if (!offset) {
8768          return 0;
8769        }
8770
8771        offset = String(offset);
8772        var result = parseInt(offset, 10); // eslint-disable-next-line no-self-compare
8773
8774        if (result !== result) {
8775          return 0;
8776        }
8777
8778        if (offset.indexOf('%') > 0) {
8779          result /= 100;
8780
8781          if (result >= 1) {
8782            result = 0.999;
8783          }
8784        }
8785
8786        return result;
8787      }
8788
8789      function teardown(i, el) {
8790        $(el).off(namespace);
8791      }
8792
8793      function scroll() {
8794        var viewTop = $win.scrollTop();
8795        var viewHeight = $win.height(); // Check each anchor for a valid scroll trigger
8796
8797        var count = anchors.length;
8798
8799        for (var i = 0; i < count; i++) {
8800          var anchor = anchors[i];
8801          var $el = anchor.el;
8802          var trigger = anchor.trigger;
8803          var stepsB = trigger.stepsB && trigger.stepsB.length;
8804          var state = anchor.state;
8805          var top = $el.offset().top;
8806          var height = $el.outerHeight();
8807          var offsetTop = anchor.offsetTop;
8808          var offsetBot = anchor.offsetBot;
8809
8810          if (offsetTop < 1 && offsetTop > 0) {
8811            offsetTop *= viewHeight;
8812          }
8813
8814          if (offsetBot < 1 && offsetBot > 0) {
8815            offsetBot *= viewHeight;
8816          }
8817
8818          var active = top + height - offsetTop >= viewTop && top + offsetBot <= viewTop + viewHeight;
8819
8820          if (active === state.active) {
8821            continue;
8822          }
8823
8824          if (active === false && !stepsB) {
8825            continue;
8826          }
8827
8828          state.active = active;
8829          run(trigger, $el, {
8830            group: active ? 'A' : 'B'
8831          });
8832        }
8833      }
8834
8835      function runLoads() {
8836        var count = loads.length;
8837
8838        for (var i = 0; i < count; i++) {
8839          loads[i]();
8840        }
8841      }
8842
8843      function runReadys() {
8844        var count = readys.length;
8845
8846        for (var i = 0; i < count; i++) {
8847          readys[i]();
8848        }
8849      }
8850
8851      function run(trigger, $el, opts, replay) {
8852        opts = opts || {};
8853        var done = opts.done;
8854        var preserve3d = trigger.preserve3d;
8854 // Do not run in designer unless forced
8855
8856        if (designer && !opts.force) {
8857          return;
8858        } // Operate on a set of grouped steps
8859
8860
8861        var group = opts.group || 'A';
8862        var loop = trigger['loop' + group];
8863        var steps = trigger['steps' + group];
8864
8865        if (!steps || !steps.length) {
8866          return;
8867        }
8868
8869        if (steps.length < 2) {
8870          loop = false;
8871        } // One-time init before any loops
8872
8873
8874        if (!replay) {
8875          // Find selector within element descendants, siblings, or query whole document
8876          var selector = trigger.selector;
8877
8878          if (selector) {
8879            if (trigger.descend) {
8880              $el = $el.find(selector);
8881            } else if (trigger.siblings) {
8882              $el = $el.siblings(selector);
8883            } else {
8884              $el = $(selector);
8885            }
8886
8887            if (inApp) {
8888              $el.attr('data-ix-affect', 1);
8889            }
8890          } // Apply empty fix for certain Chrome versions
8891
8892
8893          if (emptyFix) {
8894            $el.addClass('w-ix-emptyfix');
8895          } // Set preserve3d for triggers with 3d transforms
8896
8897
8898          if (preserve3d) {
8899            $el.css('transform-style', 'preserve-3d');
8900          }
8901        }
8902
8903        var _tram = tram($el); // Add steps
8904
8905
8906        var meta = {
8907          omit3d: !preserve3d
8908        };
8909
8910        for (var i = 0; i < steps.length; i++) {
8911          addStep(_tram, steps[i], meta);
8912        }
8913
8914        function fin() {
8915          // Run trigger again if looped
8916          if (loop) {
8917            return run(trigger, $el, opts, true);
8918          } // Reset any 'auto' values
8919
8920
8921          if (meta.width === 'auto') {
8922            _tram.set({
8923              width: 'auto'
8924            });
8925          }
8926
8927          if (meta.height === 'auto') {
8928            _tram.set({
8929              height: 'auto'
8930            });
8931          } // Run callback
8932
8933
8934          done && done();
8935        } // Add final step to queue if tram has started
8936
8937
8938        meta.start ? _tram.then(fin) : fin();
8939      }
8940
8941      function addStep(_tram, step, meta) {
8942        var addMethod = 'add';
8943        var startMethod = 'start'; // Once the transition has started, we will always use then() to add to the queue.
8944
8945        if (meta.start) {
8946          addMethod = startMethod = 'then';
8947        } // Parse transitions string on the current step
8948
8949
8950        var transitions = step.transition;
8951
8952        if (transitions) {
8953          transitions = transitions.split(',');
8954
8955          for (var i = 0; i < transitions.length; i++) {
8956            var transition = transitions[i];
8957
8958            _tram[addMethod](transition);
8959          }
8960        } // Build a clean object to pass to the tram method
8961
8962
8963        var clean = tramify(step, meta) || {}; // Store last width and height values
8964
8965        if (clean.width != null) {
8966          meta.width = clean.width;
8967        }
8968
8969        if (clean.height != null) {
8970          meta.height = clean.height;
8971        } // When transitions are not present, set values immediately and continue queue.
8972
8973
8974        if (transitions == null) {
8975          // If we have started, wrap set() in then() and reset queue
8976          if (meta.start) {
8977            _tram.then(function () {
8978              var queue = this.queue;
8979              this.set(clean);
8980
8981              if (clean.display) {
8982                _tram.redraw();
8983
8984                Webflow.redraw.up();
8985              }
8986
8987              this.queue = queue;
8988              this.next();
8989            });
8990          } else {
8991            _tram.set(clean); // Always redraw after setting display
8992
8993
8994            if (clean.display) {
8995              _tram.redraw();
8996
8997              Webflow.redraw.up();
8998            }
8999          } // Use the wait() method to kick off queue in absence of transitions.
9000
9001
9002          var wait = clean.wait;
9003
9004          if (wait != null) {
9005            _tram.wait(wait);
9006
9007            meta.start = true;
9008          } // Otherwise, when transitions are present
9009
9010        } else {
9011          // If display is present, handle it separately
9012          if (clean.display) {
9013            var display = clean.display; // eslint-disable-next-line webflow/no-delete
9014
9015            delete clean.display; // If we've already started, we need to wrap it in a then()
9016
9017            if (meta.start) {
9018              _tram.then(function () {
9019                var queue = this.queue;
9020                this.set({
9021                  display: display
9022                }).redraw();
9023                Webflow.redraw.up();
9024                this.queue = queue;
9025                this.next();
9026              });
9027            } else {
9028              _tram.set({
9029                display: display
9030              }).redraw();
9031
9032              Webflow.redraw.up();
9033            }
9034          } // Otherwise, start a transition using the current start method.
9035
9036
9037          _tram[startMethod](clean);
9038
9039          meta.start = true;
9040        }
9041      } // (In app) Set styles immediately and manage upstream transition
9042
9043
9044      function styleApp(el, data) {
9045        var _tram = tram(el); // Exit early when data is empty to avoid clearing upstream
9046
9047
9048        if ($.isEmptyObject(data)) {
9049          return;
9050        } // Get computed transition value
9051
9052
9053        el.css('transition', '');
9054        var computed = el.css('transition'); // If computed is set to none, clear upstream
9055
9056        if (computed === transNone) {
9057          computed = _tram.upstream = null;
9058        } // Set upstream transition to none temporarily
9059
9060
9061        _tram.upstream = transNone; // Set values immediately
9062
9063        _tram.set(tramify(data)); // Only restore upstream in preview mode
9064
9065
9066        _tram.upstream = computed;
9067      } // (Published) Set styles immediately on specified jquery element
9068
9069
9070      function stylePub(el, data) {
9071        tram(el).set(tramify(data));
9072      } // Build a clean object for tram
9073
9074
9075      function tramify(obj, meta) {
9076        var omit3d = meta && meta.omit3d;
9077        var result = {};
9078        var found = false;
9079
9080        for (var key in obj) {
9081          if (key === 'transition') {
9082            continue;
9083          }
9084
9085          if (key === 'keysort') {
9086            continue;
9087          }
9088
9089          if (omit3d) {
9090            if (key === 'z' || key === 'rotateX' || key === 'rotateY' || key === 'scaleZ') {
9091              continue;
9092            }
9093          }
9094
9095          result[key] = obj[key];
9096          found = true;
9097        } // If empty, return null for tram.set/stop compliance
9098
9099
9100        return found ? result : null;
9101      } // Export module
9102
9103
9104      return api;
9105    });
9106
9107    /***/
9108  }),
9109/* 126 */
9110/***/ (function (module, exports, __webpack_require__) {
9111
9112    "use strict";
9113    // @wf-will-never-add-flow-to-this-file
9114
9115    /* eslint-disable no-var */
9116
9117    /**
9118     * Webflow: Interactions 2
9119     */
9120
9121    var Webflow = __webpack_require__(3);
9122
9123    var ix2 = __webpack_require__(127);
9124
9125    ix2.setEnv(Webflow.env);
9126    Webflow.define('ix2', module.exports = function () {
9127      return ix2;
9128    });
9129
9130    /***/
9131  }),
9132/* 127 */
9133/***/ (function (module, exports, __webpack_require__) {
9134
9135    "use strict";
9136
9137
9138    var _interopRequireWildcard = __webpack_require__(14);
9139
9140    var _interopRequireDefault = __webpack_require__(0);
9141
9142    Object.defineProperty(exports, "__esModule", {
9143      value: true
9144    });
9145    exports.setEnv = setEnv;
9146    exports.init = init;
9147    exports.destroy = destroy;
9148    exports.actions = exports.store = void 0;
9149
9150    __webpack_require__(128);
9151
9152    var _redux = __webpack_require__(79);
9153
9154    var _IX2Reducer = _interopRequireDefault(__webpack_require__(169));
9155
9156    var _IX2VanillaEngine = __webpack_require__(115);
9157
9158    var actions = _interopRequireWildcard(__webpack_require__(62));
9159
9160    exports.actions = actions; // Array.includes needed for IE11 @packages/systems/ix2/shared/utils/quick-effects
9161
9162    var store = (0, _redux.createStore)(_IX2Reducer["default"]);
9163    exports.store = store;
9164
9165    function setEnv(env) {
9166      if (env()) {
9167        (0, _IX2VanillaEngine.observeRequests)(store);
9168      }
9169    }
9170
9171    function init(rawData) {
9172      destroy();
9173      (0, _IX2VanillaEngine.startEngine)({
9174        store: store,
9175        rawData: rawData,
9176        allowEvents: true
9177      });
9178    }
9179
9180    function destroy() {
9181      (0, _IX2VanillaEngine.stopEngine)(store);
9182    }
9183
9184    /***/
9185  }),
9186/* 128 */
9187/***/ (function (module, exports, __webpack_require__) {
9188
9189    module.exports = __webpack_require__(129);
9190
9191
9192    /***/
9193  }),
9194/* 129 */
9195/***/ (function (module, exports, __webpack_require__) {
9196
9197    __webpack_require__(130);
9198    var entryUnbind = __webpack_require__(155);
9199
9200    module.exports = entryUnbind('Array', 'includes');
9201
9202
9203    /***/
9204  }),
9205/* 130 */
9206/***/ (function (module, exports, __webpack_require__) {
9207
9208    "use strict";
9209
9210    var $ = __webpack_require__(131);
9211    var $includes = __webpack_require__(77).includes;
9212    var addToUnscopables = __webpack_require__(148);
9213
9214    // `Array.prototype.includes` method
9215    // https://tc39.github.io/ecma262/#sec-array.prototype.includes
9216    $({ target: 'Array', proto: true }, {
9217      includes: function includes(el /* , fromIndex = 0 */) {
9218        return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
9219      }
9220    });
9221
9222    // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
9223    addToUnscopables('includes');
9224
9225
9226    /***/
9227  }),
9228/* 131 */
9229/***/ (function (module, exports, __webpack_require__) {
9230
9231    var global = __webpack_require__(4);
9232    var getOwnPropertyDescriptor = __webpack_require__(67).f;
9233    var hide = __webpack_require__(18);
9234    var redefine = __webpack_require__(136);
9235    var setGlobal = __webpack_require__(40);
9236    var copyConstructorProperties = __webpack_require__(140);
9237    var isForced = __webpack_require__(147);
9238
9239    /*
9240      options.target      - name of the target object
9241      options.global      - target is the global object
9242      options.stat        - export as static methods of target
9243      options.proto       - export as prototype methods of target
9244      options.real        - real prototype method for the `pure` version
9245      options.forced      - export even if the native feature is available
vendor: 4,464 bytes, lines 9246-9375
9246      options.bind        - bind methods to the target, required for the `pure` version
9247      options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
9248      options.unsafe      - use the simple assignment of property instead of delete + defineProperty
9249      options.sham        - add a flag to not completely full polyfills
9250      options.enumerable  - export as enumerable property
9251      options.noTargetGet - prevent calling a getter on target
9252    */
9253    module.exports = function (options, source) {
9254      var TARGET = options.target;
9255      var GLOBAL = options.global;
9256      var STATIC = options.stat;
9257      var FORCED, target, key, targetProperty, sourceProperty, descriptor;
9258      if (GLOBAL) {
9259        target = global;
9260      } else if (STATIC) {
9261        target = global[TARGET] || setGlobal(TARGET, {});
9262      } else {
9263        target = (global[TARGET] || {}).prototype;
9264      }
9265      if (target) for (key in source) {
9266        sourceProperty = source[key];
9267        if (options.noTargetGet) {
9268          descriptor = getOwnPropertyDescriptor(target, key);
9269          targetProperty = descriptor && descriptor.value;
9270        } else targetProperty = target[key];
9271        FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
9272        // contained in target
9273        if (!FORCED && targetProperty !== undefined) {
9274          if (typeof sourceProperty === typeof targetProperty) continue;
9275          copyConstructorProperties(sourceProperty, targetProperty);
9276        }
9277        // add a flag to not completely full polyfills
9278        if (options.sham || (targetProperty && targetProperty.sham)) {
9279          hide(sourceProperty, 'sham', true);
9280        }
9281        // extend global
9282        redefine(target, key, sourceProperty, options);
9283      }
9284    };
9285
9286
9287    /***/
9288  }),
9289/* 132 */
9290/***/ (function (module, exports, __webpack_require__) {
9291
9292    "use strict";
9293
9294    var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
9295    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
9296
9297    // Nashorn ~ JDK8 bug
9298    var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
9299
9300    // `Object.prototype.propertyIsEnumerable` method implementation
9301    // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
9302    exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
9303      var descriptor = getOwnPropertyDescriptor(this, V);
9304      return !!descriptor && descriptor.enumerable;
9305    } : nativePropertyIsEnumerable;
9306
9307
9308    /***/
9309  }),
9310/* 133 */
9311/***/ (function (module, exports, __webpack_require__) {
9312
9313    var fails = __webpack_require__(16);
9314    var classof = __webpack_require__(134);
9315
9316    var split = ''.split;
9317
9318    // fallback for non-array-like ES3 and non-enumerable old V8 strings
9319    module.exports = fails(function () {
9320      // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
9321      // eslint-disable-next-line no-prototype-builtins
9322      return !Object('z').propertyIsEnumerable(0);
9323    }) ? function (it) {
9324      return classof(it) == 'String' ? split.call(it, '') : Object(it);
9325    } : Object;
9326
9327
9328    /***/
9329  }),
9330/* 134 */
9331/***/ (function (module, exports) {
9332
9333    var toString = {}.toString;
9334
9335    module.exports = function (it) {
9336      return toString.call(it).slice(8, -1);
9337    };
9338
9339
9340    /***/
9341  }),
9342/* 135 */
9343/***/ (function (module, exports) {
9344
9345    // `RequireObjectCoercible` abstract operation
9346    // https://tc39.github.io/ecma262/#sec-requireobjectcoercible
9347    module.exports = function (it) {
9348      if (it == undefined) throw TypeError("Can't call method on " + it);
9349      return it;
9350    };
9351
9352
9353    /***/
9354  }),
9355/* 136 */
9356/***/ (function (module, exports, __webpack_require__) {
9357
9358    var global = __webpack_require__(4);
9359    var shared = __webpack_require__(26);
9360    var hide = __webpack_require__(18);
9361    var has = __webpack_require__(17);
9362    var setGlobal = __webpack_require__(40);
9363    var nativeFunctionToString = __webpack_require__(72);
9364    var InternalStateModule = __webpack_require__(138);
9365
9366    var getInternalState = InternalStateModule.get;
9367    var enforceInternalState = InternalStateModule.enforce;
9368    var TEMPLATE = String(nativeFunctionToString).split('toString');
9369
9370    shared('inspectSource', function (it) {
9371      return nativeFunctionToString.call(it);
9372    });
9373
9374    (module.exports = function (O, key, value, options) {
9375      var unsafe = options ? !!options.unsafe : false;
vendor: 12,142 bytes, lines 9376-9805
9376      var simple = options ? !!options.enumerable : false;
9377      var noTargetGet = options ? !!options.noTargetGet : false;
9378      if (typeof value == 'function') {
9379        if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);
9380        enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
9381      }
9382      if (O === global) {
9383        if (simple) O[key] = value;
9384        else setGlobal(key, value);
9385        return;
9386      } else if (!unsafe) {
9387        delete O[key];
9388      } else if (!noTargetGet && O[key]) {
9389        simple = true;
9390      }
9391      if (simple) O[key] = value;
9392      else hide(O, key, value);
9393      // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
9394    })(Function.prototype, 'toString', function toString() {
9395      return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
9396    });
9397
9398
9399    /***/
9400  }),
9401/* 137 */
9402/***/ (function (module, exports) {
9403
9404    module.exports = false;
9405
9406
9407    /***/
9408  }),
9409/* 138 */
9410/***/ (function (module, exports, __webpack_require__) {
9411
9412    var NATIVE_WEAK_MAP = __webpack_require__(139);
9413    var global = __webpack_require__(4);
9414    var isObject = __webpack_require__(24);
9415    var hide = __webpack_require__(18);
9416    var objectHas = __webpack_require__(17);
9417    var sharedKey = __webpack_require__(73);
9418    var hiddenKeys = __webpack_require__(41);
9419
9420    var WeakMap = global.WeakMap;
9421    var set, get, has;
9422
9423    var enforce = function (it) {
9424      return has(it) ? get(it) : set(it, {});
9425    };
9426
9427    var getterFor = function (TYPE) {
9428      return function (it) {
9429        var state;
9430        if (!isObject(it) || (state = get(it)).type !== TYPE) {
9431          throw TypeError('Incompatible receiver, ' + TYPE + ' required');
9432        } return state;
9433      };
9434    };
9435
9436    if (NATIVE_WEAK_MAP) {
9437      var store = new WeakMap();
9438      var wmget = store.get;
9439      var wmhas = store.has;
9440      var wmset = store.set;
9441      set = function (it, metadata) {
9442        wmset.call(store, it, metadata);
9443        return metadata;
9444      };
9445      get = function (it) {
9446        return wmget.call(store, it) || {};
9447      };
9448      has = function (it) {
9449        return wmhas.call(store, it);
9450      };
9451    } else {
9452      var STATE = sharedKey('state');
9453      hiddenKeys[STATE] = true;
9454      set = function (it, metadata) {
9455        hide(it, STATE, metadata);
9456        return metadata;
9457      };
9458      get = function (it) {
9459        return objectHas(it, STATE) ? it[STATE] : {};
9460      };
9461      has = function (it) {
9462        return objectHas(it, STATE);
9463      };
9464    }
9465
9466    module.exports = {
9467      set: set,
9468      get: get,
9469      has: has,
9470      enforce: enforce,
9471      getterFor: getterFor
9472    };
9473
9474
9475    /***/
9476  }),
9477/* 139 */
9478/***/ (function (module, exports, __webpack_require__) {
9479
9480    var global = __webpack_require__(4);
9481    var nativeFunctionToString = __webpack_require__(72);
9482
9483    var WeakMap = global.WeakMap;
9484
9485    module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));
9486
9487
9488    /***/
9489  }),
9490/* 140 */
9491/***/ (function (module, exports, __webpack_require__) {
9492
9493    var has = __webpack_require__(17);
9494    var ownKeys = __webpack_require__(141);
9495    var getOwnPropertyDescriptorModule = __webpack_require__(67);
9496    var definePropertyModule = __webpack_require__(39);
9497
9498    module.exports = function (target, source) {
9499      var keys = ownKeys(source);
9500      var defineProperty = definePropertyModule.f;
9501      var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
9502      for (var i = 0; i < keys.length; i++) {
9503        var key = keys[i];
9504        if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
9505      }
9506    };
9507
9508
9509    /***/
9510  }),
9511/* 141 */
9512/***/ (function (module, exports, __webpack_require__) {
9513
9514    var getBuiltIn = __webpack_require__(75);
9515    var getOwnPropertyNamesModule = __webpack_require__(143);
9516    var getOwnPropertySymbolsModule = __webpack_require__(146);
9517    var anObject = __webpack_require__(25);
9518
9519    // all object keys, includes non-enumerable and symbols
9520    module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
9521      var keys = getOwnPropertyNamesModule.f(anObject(it));
9522      var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
9523      return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
9524    };
9525
9526
9527    /***/
9528  }),
9529/* 142 */
9530/***/ (function (module, exports, __webpack_require__) {
9531
9532    module.exports = __webpack_require__(4);
9533
9534
9535    /***/
9536  }),
9537/* 143 */
9538/***/ (function (module, exports, __webpack_require__) {
9539
9540    var internalObjectKeys = __webpack_require__(76);
9541    var enumBugKeys = __webpack_require__(42);
9542
9543    var hiddenKeys = enumBugKeys.concat('length', 'prototype');
9544
9545    // `Object.getOwnPropertyNames` method
9546    // https://tc39.github.io/ecma262/#sec-object.getownpropertynames
9547    exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
9548      return internalObjectKeys(O, hiddenKeys);
9549    };
9550
9551
9552    /***/
9553  }),
9554/* 144 */
9555/***/ (function (module, exports, __webpack_require__) {
9556
9557    var toInteger = __webpack_require__(78);
9558
9559    var min = Math.min;
9560
9561    // `ToLength` abstract operation
9562    // https://tc39.github.io/ecma262/#sec-tolength
9563    module.exports = function (argument) {
9564      return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
9565    };
9566
9567
9568    /***/
9569  }),
9570/* 145 */
9571/***/ (function (module, exports, __webpack_require__) {
9572
9573    var toInteger = __webpack_require__(78);
9574
9575    var max = Math.max;
9576    var min = Math.min;
9577
9578    // Helper for a popular repeating case of the spec:
9579    // Let integer be ? ToInteger(index).
9580    // If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).
9581    module.exports = function (index, length) {
9582      var integer = toInteger(index);
9583      return integer < 0 ? max(integer + length, 0) : min(integer, length);
9584    };
9585
9586
9587    /***/
9588  }),
9589/* 146 */
9590/***/ (function (module, exports) {
9591
9592    exports.f = Object.getOwnPropertySymbols;
9593
9594
9595    /***/
9596  }),
9597/* 147 */
9598/***/ (function (module, exports, __webpack_require__) {
9599
9600    var fails = __webpack_require__(16);
9601
9602    var replacement = /#|\.prototype\./;
9603
9604    var isForced = function (feature, detection) {
9605      var value = data[normalize(feature)];
9606      return value == POLYFILL ? true
9607        : value == NATIVE ? false
9608          : typeof detection == 'function' ? fails(detection)
9609            : !!detection;
9610    };
9611
9612    var normalize = isForced.normalize = function (string) {
9613      return String(string).replace(replacement, '.').toLowerCase();
9614    };
9615
9616    var data = isForced.data = {};
9617    var NATIVE = isForced.NATIVE = 'N';
9618    var POLYFILL = isForced.POLYFILL = 'P';
9619
9620    module.exports = isForced;
9621
9622
9623    /***/
9624  }),
9625/* 148 */
9626/***/ (function (module, exports, __webpack_require__) {
9627
9628    var wellKnownSymbol = __webpack_require__(149);
9629    var create = __webpack_require__(151);
9630    var hide = __webpack_require__(18);
9631
9632    var UNSCOPABLES = wellKnownSymbol('unscopables');
9633    var ArrayPrototype = Array.prototype;
9634
9635    // Array.prototype[@@unscopables]
9636    // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
9637    if (ArrayPrototype[UNSCOPABLES] == undefined) {
9638      hide(ArrayPrototype, UNSCOPABLES, create(null));
9639    }
9640
9641    // add a key to Array.prototype[@@unscopables]
9642    module.exports = function (key) {
9643      ArrayPrototype[UNSCOPABLES][key] = true;
9644    };
9645
9646
9647    /***/
9648  }),
9649/* 149 */
9650/***/ (function (module, exports, __webpack_require__) {
9651
9652    var global = __webpack_require__(4);
9653    var shared = __webpack_require__(26);
9654    var uid = __webpack_require__(74);
9655    var NATIVE_SYMBOL = __webpack_require__(150);
9656
9657    var Symbol = global.Symbol;
9658    var store = shared('wks');
9659
9660    module.exports = function (name) {
9661      return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]
9662        || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));
9663    };
9664
9665
9666    /***/
9667  }),
9668/* 150 */
9669/***/ (function (module, exports, __webpack_require__) {
9670
9671    var fails = __webpack_require__(16);
9672
9673    module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
9674      // Chrome 38 Symbol has incorrect toString conversion
9675      // eslint-disable-next-line no-undef
9676      return !String(Symbol());
9677    });
9678
9679
9680    /***/
9681  }),
9682/* 151 */
9683/***/ (function (module, exports, __webpack_require__) {
9684
9685    var anObject = __webpack_require__(25);
9686    var defineProperties = __webpack_require__(152);
9687    var enumBugKeys = __webpack_require__(42);
9688    var hiddenKeys = __webpack_require__(41);
9689    var html = __webpack_require__(154);
9690    var documentCreateElement = __webpack_require__(71);
9691    var sharedKey = __webpack_require__(73);
9692    var IE_PROTO = sharedKey('IE_PROTO');
9693
9694    var PROTOTYPE = 'prototype';
9695    var Empty = function () { /* empty */ };
9696
9697    // Create object with fake `null` prototype: use iframe Object with cleared prototype
9698    var createDict = function () {
9699      // Thrash, waste and sodomy: IE GC bug
9700      var iframe = documentCreateElement('iframe');
9701      var length = enumBugKeys.length;
9702      var lt = '<';
9703      var script = 'script';
9704      var gt = '>';
9705      var js = 'java' + script + ':';
9706      var iframeDocument;
9707      iframe.style.display = 'none';
9708      html.appendChild(iframe);
9709      iframe.src = String(js);
9710      iframeDocument = iframe.contentWindow.document;
9711      iframeDocument.open();
9712      iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);
9713      iframeDocument.close();
9714      createDict = iframeDocument.F;
9715      while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];
9716      return createDict();
9717    };
9718
9719    // `Object.create` method
9720    // https://tc39.github.io/ecma262/#sec-object.create
9721    module.exports = Object.create || function create(O, Properties) {
9722      var result;
9723      if (O !== null) {
9724        Empty[PROTOTYPE] = anObject(O);
9725        result = new Empty();
9726        Empty[PROTOTYPE] = null;
9727        // add "__proto__" for Object.getPrototypeOf polyfill
9728        result[IE_PROTO] = O;
9729      } else result = createDict();
9730      return Properties === undefined ? result : defineProperties(result, Properties);
9731    };
9732
9733    hiddenKeys[IE_PROTO] = true;
9734
9735
9736    /***/
9737  }),
9738/* 152 */
9739/***/ (function (module, exports, __webpack_require__) {
9740
9741    var DESCRIPTORS = __webpack_require__(15);
9742    var definePropertyModule = __webpack_require__(39);
9743    var anObject = __webpack_require__(25);
9744    var objectKeys = __webpack_require__(153);
9745
9746    // `Object.defineProperties` method
9747    // https://tc39.github.io/ecma262/#sec-object.defineproperties
9748    module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
9749      anObject(O);
9750      var keys = objectKeys(Properties);
9751      var length = keys.length;
9752      var index = 0;
9753      var key;
9754      while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
9755      return O;
9756    };
9757
9758
9759    /***/
9760  }),
9761/* 153 */
9762/***/ (function (module, exports, __webpack_require__) {
9763
9764    var internalObjectKeys = __webpack_require__(76);
9765    var enumBugKeys = __webpack_require__(42);
9766
9767    // `Object.keys` method
9768    // https://tc39.github.io/ecma262/#sec-object.keys
9769    module.exports = Object.keys || function keys(O) {
9770      return internalObjectKeys(O, enumBugKeys);
9771    };
9772
9773
9774    /***/
9775  }),
9776/* 154 */
9777/***/ (function (module, exports, __webpack_require__) {
9778
9779    var getBuiltIn = __webpack_require__(75);
9780
9781    module.exports = getBuiltIn('document', 'documentElement');
9782
9783
9784    /***/
9785  }),
9786/* 155 */
9787/***/ (function (module, exports, __webpack_require__) {
9788
9789    var global = __webpack_require__(4);
9790    var bind = __webpack_require__(156);
9791
9792    var call = Function.call;
9793
9794    module.exports = function (CONSTRUCTOR, METHOD, length) {
9795      return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);
9796    };
9797
9798
9799    /***/
9800  }),
9801/* 156 */
9802/***/ (function (module, exports, __webpack_require__) {
9803
9804    var aFunction = __webpack_require__(157);
9805
9806    // optional / simple context binding
9807    module.exports = function (fn, that, length) {
9808      aFunction(fn);
9809      if (that === undefined) return fn;
9810      switch (length) {
9811        case 0: return function () {
9812          return fn.call(that);
9813        };
9814        case 1: return function (a) {
9815          return fn.call(that, a);
9816        };
9817        case 2: return function (a, b) {
9818          return fn.call(that, a, b);
9819        };
9820        case 3: return function (a, b, c) {
9821          return fn.call(that, a, b, c);
9822        };
9823      }
9824      return function (/* ...args */) {
9825        return fn.apply(that, arguments);
9826      };
9827    };
9828
9829
9830    /***/
9831  }),
9832/* 157 */
9833/***/ (function (module, exports) {
9834
9835    module.exports = function (it) {
9836      if (typeof it != 'function') {
9837        throw TypeError(String(it) + ' is not a function');
9838      } return it;
9839    };
9840
9841
9842    /***/
9843  }),
9844/* 158 */
9845/***/ (function (module, __webpack_exports__, __webpack_require__) {
9846
9847    "use strict";
9848    __webpack_require__.r(__webpack_exports__);
9849/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81);
9850/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161);
9851/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(162);
9852
9853
9854
9855
9856    /** `Object#toString` result references. */
9857    var nullTag = '[object Null]',
9858      undefinedTag = '[object Undefined]';
9859
9860    /** Built-in value references. */
9861    var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
9862
9863    /**
9864     * The base implementation of `getTag` without fallbacks for buggy environments.
9865     *
9866     * @private
9867     * @param {*} value The value to query.
9868     * @returns {string} Returns the `toStringTag`.
9869     */
9870    function baseGetTag(value) {
9871      if (value == null) {
9872        return value === undefined ? undefinedTag : nullTag;
9873      }
9874      return (symToStringTag && symToStringTag in Object(value))
9875        ? Object(_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value)
9876        : Object(_objectToString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value);
9877    }
9878
9879/* harmony default export */ __webpack_exports__["default"] = (baseGetTag);
9880
9881
9882    /***/
9883  }),
9884/* 159 */
9885/***/ (function (module, __webpack_exports__, __webpack_require__) {
9886
9887    "use strict";
9888    __webpack_require__.r(__webpack_exports__);
9889/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(160);
9890
9891
9892    /** Detect free variable `self`. */
9893    var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
9894
9895    /** Used as a reference to the global object. */
9896    var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__["default"] || freeSelf || Function('return this')();
9897
9898/* harmony default export */ __webpack_exports__["default"] = (root);
9899
9900
9901    /***/
9902  }),
9903/* 160 */
9904/***/ (function (module, __webpack_exports__, __webpack_require__) {
9905
9906    "use strict";
9907    __webpack_require__.r(__webpack_exports__);
9908/* WEBPACK VAR INJECTION */(function (global) {/** Detect free variable `global` from Node.js. */
9909      var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
9910
9911/* harmony default export */ __webpack_exports__["default"] = (freeGlobal);
9912
9913      /* WEBPACK VAR INJECTION */
9914    }.call(this, __webpack_require__(23)))
9915
9916    /***/
9917  }),
9918/* 161 */
9919/***/ (function (module, __webpack_exports__, __webpack_require__) {
9920
9921    "use strict";
9922    __webpack_require__.r(__webpack_exports__);
9923/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81);
9924
9925
9926    /** Used for built-in method references. */
9927    var objectProto = Object.prototype;
9928
9929    /** Used to check objects for own properties. */
9930    var hasOwnProperty = objectProto.hasOwnProperty;
9931
9932    /**
9933     * Used to resolve the
9934     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
9935     * of values.
9936     */
9937    var nativeObjectToString = objectProto.toString;
9938
9939    /** Built-in value references. */
9940    var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
9941
9942    /**
9943     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
9944     *
9945     * @private
9946     * @param {*} value The value to query.
9947     * @returns {string} Returns the raw `toStringTag`.
9948     */
9949    function getRawTag(value) {
9950      var isOwn = hasOwnProperty.call(value, symToStringTag),
9951        tag = value[symToStringTag];
9952
9953      try {
9954        value[symToStringTag] = undefined;
9955        var unmasked = true;
9956      } catch (e) { }
9957
9958      var result = nativeObjectToString.call(value);
9959      if (unmasked) {
9960        if (isOwn) {
9961          value[symToStringTag] = tag;
9962        } else {
9963          delete value[symToStringTag];
9964        }
9965      }
9966      return result;
9967    }
9968
9969/* harmony default export */ __webpack_exports__["default"] = (getRawTag);
9970
9971
9972    /***/
9973  }),
9974/* 162 */
9975/***/ (function (module, __webpack_exports__, __webpack_require__) {
9976
9977    "use strict";
9978    __webpack_require__.r(__webpack_exports__);
9979    /** Used for built-in method references. */
9980    var objectProto = Object.prototype;
9981
9982    /**
9983     * Used to resolve the
9984     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
9985     * of values.
9986     */
9987    var nativeObjectToString = objectProto.toString;
9988
9989    /**
9990     * Converts `value` to a string using `Object.prototype.toString`.
9991     *
9992     * @private
9993     * @param {*} value The value to convert.
9994     * @returns {string} Returns the converted string.
9995     */
9996    function objectToString(value) {
9997      return nativeObjectToString.call(value);
9998    }
9999
10000/* harmony default export */ __webpack_exports__["default"] = (objectToString);
10001
10002
10003    /***/
10004  }),
10005/* 163 */
10006/***/ (function (module, __webpack_exports__, __webpack_require__) {
10007
10008    "use strict";
10009    __webpack_require__.r(__webpack_exports__);
10010/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(164);
10011
10012
10013    /** Built-in value references. */
10014    var getPrototype = Object(_overArg_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object.getPrototypeOf, Object);
10015
10016/* harmony default export */ __webpack_exports__["default"] = (getPrototype);
10017
10018
10019    /***/
10020  }),
10021/* 164 */
10022/***/ (function (module, __webpack_exports__, __webpack_require__) {
10023
10024    "use strict";
10025    __webpack_require__.r(__webpack_exports__);
10026    /**
10027     * Creates a unary function that invokes `func` with its argument transformed.
10028     *
10029     * @private
10030     * @param {Function} func The function to wrap.
10031     * @param {Function} transform The argument transform.
10032     * @returns {Function} Returns the new function.
10033     */
10034    function overArg(func, transform) {
10035      return function (arg) {
10036        return func(transform(arg));
10037      };
10038    }
10039
10040/* harmony default export */ __webpack_exports__["default"] = (overArg);
10041
10042
10043    /***/
10044  }),
10045/* 165 */
10046/***/ (function (module, __webpack_exports__, __webpack_require__) {
10047
10048    "use strict";
10049    __webpack_require__.r(__webpack_exports__);
10050    /**
10051     * Checks if `value` is object-like. A value is object-like if it's not `null`
10052     * and has a `typeof` result of "object".
10053     *
10054     * @static
10055     * @memberOf _
10056     * @since 4.0.0
10057     * @category Lang
10058     * @param {*} value The value to check.
10059     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
10060     * @example
10061     *
10062     * _.isObjectLike({});
10063     * // => true
10064     *
10065     * _.isObjectLike([1, 2, 3]);
10066     * // => true
10067     *
10068     * _.isObjectLike(_.noop);
10069     * // => false
10070     *
10071     * _.isObjectLike(null);
10072     * // => false
10073     */
10074    function isObjectLike(value) {
10075      return value != null && typeof value == 'object';
10076    }
10077
10078/* harmony default export */ __webpack_exports__["default"] = (isObjectLike);
10079
10080
10081    /***/
10082  }),
10083/* 166 */
10084/***/ (function (module, __webpack_exports__, __webpack_require__) {
10085
10086    "use strict";
10087    __webpack_require__.r(__webpack_exports__);
10088/* WEBPACK VAR INJECTION */(function (global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(168);
10089      /* global window */
10090
10091
10092      var root;
10093
10094      if (typeof self !== 'undefined') {
10095        root = self;
10096      } else if (typeof window !== 'undefined') {
10097        root = window;
10098      } else if (typeof global !== 'undefined') {
10099        root = global;
10100      } else if (true) {
10101        root = module;
10102      } else { }
10103
10104      var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__["default"])(root);
10105/* harmony default export */ __webpack_exports__["default"] = (result);
10106
10107      /* WEBPACK VAR INJECTION */
10108    }.call(this, __webpack_require__(23), __webpack_require__(167)(module)))
10109
10110    /***/
10111  }),
10112/* 167 */
10113/***/ (function (module, exports) {
10114
10115    module.exports = function (originalModule) {
10116      if (!originalModule.webpackPolyfill) {
10117        var module = Object.create(originalModule);
10118        // module.parent = undefined by default
10119        if (!module.children) module.children = [];
10120        Object.defineProperty(module, "loaded", {
10121          enumerable: true,
10122          get: function () {
10123            return module.l;
10124          }
10125        });
10126        Object.defineProperty(module, "id", {
10127          enumerable: true,
10128          get: function () {
10129            return module.i;
10130          }
10131        });
10132        Object.defineProperty(module, "exports", {
10133          enumerable: true
10134        });
10135        module.webpackPolyfill = 1;
10136      }
10137      return module;
10138    };
10139
10140
10141    /***/
10142  }),
10143/* 168 */
10144/***/ (function (module, __webpack_exports__, __webpack_require__) {
10145
10146    "use strict";
10147    __webpack_require__.r(__webpack_exports__);
10148/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return symbolObservablePonyfill; });
10149    function symbolObservablePonyfill(root) {
10150      var result;
10151      var Symbol = root.Symbol;
10152
10153      if (typeof Symbol === 'function') {
10154        if (Symbol.observable) {
10155          result = Symbol.observable;
10156        } else {
10157          result = Symbol('observable');
10158          Symbol.observable = result;
10159        }
10160      } else {
10161        result = '@@observable';
10162      }
10163
10164      return result;
10165    };
10166
10167
10168    /***/
10169  }),
10170/* 169 */
10171/***/ (function (module, exports, __webpack_require__) {
10172
10173    "use strict";
10174
10175
10176    Object.defineProperty(exports, "__esModule", {
10177      value: true
10178    });
10179    exports["default"] = void 0;
10180
10181    var _redux = __webpack_require__(79);
10182
10183    var _IX2DataReducer = __webpack_require__(170);
10184
10185    var _IX2RequestReducer = __webpack_require__(176);
10186
10187    var _IX2SessionReducer = __webpack_require__(177);
10188
10189    var _shared = __webpack_require__(10);
10190
10191    var _IX2InstancesReducer = __webpack_require__(262);
10192
10193    var _IX2ParametersReducer = __webpack_require__(263);
10194
10195    var ixElements = _shared.IX2ElementsReducer.ixElements;
10196
10197    var _default = (0, _redux.combineReducers)({
10198      ixData: _IX2DataReducer.ixData,
10199      ixRequest: _IX2RequestReducer.ixRequest,
10200      ixSession: _IX2SessionReducer.ixSession,
10201      ixElements: ixElements,
10202      ixInstances: _IX2InstancesReducer.ixInstances,
10203      ixParameters: _IX2ParametersReducer.ixParameters
10204    });
10205
10206    exports["default"] = _default;
10207
10208    /***/
10209  }),
10210/* 170 */
10211/***/ (function (module, exports, __webpack_require__) {
10212
10213    "use strict";
10214
10215
10216    Object.defineProperty(exports, "__esModule", {
10217      value: true
10218    });
10219    exports.ixData = void 0;
10220
10221    var _constants = __webpack_require__(2);
10222
10223    var IX2_RAW_DATA_IMPORTED = _constants.IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED;
10224
10225    var ixData = function ixData() {
10226      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
10227      var action = arguments.length > 1 ? arguments[1] : undefined;
10228
10229      switch (action.type) {
10230        case IX2_RAW_DATA_IMPORTED:
10231          {
10232            return action.payload.ixData || Object.freeze({});
10233          }
10234
10235        default:
10236          {
10237            return state;
10238          }
10239      }
10240    };
10241
10242    exports.ixData = ixData;
10243
10244    /***/
10245  }),
10246/* 171 */
10247/***/ (function (module, exports, __webpack_require__) {
10248
10249    "use strict";
10250
10251
10252    Object.defineProperty(exports, "__esModule", {
10253      value: true
10254    });
10255    exports.QuickEffectDirectionConsts = exports.QuickEffectIds = exports.EventLimitAffectedElements = exports.EventContinuousMouseAxes = exports.EventBasedOn = exports.EventAppliesTo = exports.EventTypeConsts = void 0;
10256    /**
10257     * Event Type IDs
10258     */
10259
10260    var EventTypeConsts = {
10261      NAVBAR_OPEN: 'NAVBAR_OPEN',
10262      NAVBAR_CLOSE: 'NAVBAR_CLOSE',
10263      TAB_ACTIVE: 'TAB_ACTIVE',
10264      TAB_INACTIVE: 'TAB_INACTIVE',
10265      SLIDER_ACTIVE: 'SLIDER_ACTIVE',
10266      SLIDER_INACTIVE: 'SLIDER_INACTIVE',
10267      DROPDOWN_OPEN: 'DROPDOWN_OPEN',
10268      DROPDOWN_CLOSE: 'DROPDOWN_CLOSE',
10269      MOUSE_CLICK: 'MOUSE_CLICK',
10270      MOUSE_SECOND_CLICK: 'MOUSE_SECOND_CLICK',
10271      MOUSE_DOWN: 'MOUSE_DOWN',
10272      MOUSE_UP: 'MOUSE_UP',
10273      MOUSE_OVER: 'MOUSE_OVER',
10274      MOUSE_OUT: 'MOUSE_OUT',
10275      MOUSE_MOVE: 'MOUSE_MOVE',
10276      MOUSE_MOVE_IN_VIEWPORT: 'MOUSE_MOVE_IN_VIEWPORT',
10277      SCROLL_INTO_VIEW: 'SCROLL_INTO_VIEW',
10278      SCROLL_OUT_OF_VIEW: 'SCROLL_OUT_OF_VIEW',
10279      SCROLLING_IN_VIEW: 'SCROLLING_IN_VIEW',
10280      ECOMMERCE_CART_OPEN: 'ECOMMERCE_CART_OPEN',
10281      ECOMMERCE_CART_CLOSE: 'ECOMMERCE_CART_CLOSE',
10282      PAGE_START: 'PAGE_START',
10283      PAGE_FINISH: 'PAGE_FINISH',
10284      PAGE_SCROLL_UP: 'PAGE_SCROLL_UP',
10285      PAGE_SCROLL_DOWN: 'PAGE_SCROLL_DOWN',
10286      PAGE_SCROLL: 'PAGE_SCROLL'
10287    };
10288    /**
10289     * Event Config Enums
10290     */
10291
10292    exports.EventTypeConsts = EventTypeConsts;
10293    var EventAppliesTo = {
10294      ELEMENT: 'ELEMENT',
10295      CLASS: 'CLASS',
10296      PAGE: 'PAGE'
10297    };
10298    exports.EventAppliesTo = EventAppliesTo;
10299    var EventBasedOn = {
10300      ELEMENT: 'ELEMENT',
10301      VIEWPORT: 'VIEWPORT'
10302    };
10303    exports.EventBasedOn = EventBasedOn;
10304    var EventContinuousMouseAxes = {
10305      X_AXIS: 'X_AXIS',
10306      Y_AXIS: 'Y_AXIS'
10307    };
10308    exports.EventContinuousMouseAxes = EventContinuousMouseAxes;
10309    var EventLimitAffectedElements = {
10310      CHILDREN: 'CHILDREN',
10311      SIBLINGS: 'SIBLINGS',
10312      IMMEDIATE_CHILDREN: 'IMMEDIATE_CHILDREN'
10313    };
10314    /**
10315     * Quick Effect Enums
10316     */
10317
10318    exports.EventLimitAffectedElements = EventLimitAffectedElements;
10319    var QuickEffectIds = {
10320      FADE_EFFECT: 'FADE_EFFECT',
10321      SLIDE_EFFECT: 'SLIDE_EFFECT',
10322      GROW_EFFECT: 'GROW_EFFECT',
10323      SHRINK_EFFECT: 'SHRINK_EFFECT',
10324      SPIN_EFFECT: 'SPIN_EFFECT',
10325      FLY_EFFECT: 'FLY_EFFECT',
10326      POP_EFFECT: 'POP_EFFECT',
10327      FLIP_EFFECT: 'FLIP_EFFECT',
10328      JIGGLE_EFFECT: 'JIGGLE_EFFECT',
10329      PULSE_EFFECT: 'PULSE_EFFECT',
10330      DROP_EFFECT: 'DROP_EFFECT',
10331      BLINK_EFFECT: 'BLINK_EFFECT',
10332      BOUNCE_EFFECT: 'BOUNCE_EFFECT',
10333      FLIP_LEFT_TO_RIGHT_EFFECT: 'FLIP_LEFT_TO_RIGHT_EFFECT',
10334      FLIP_RIGHT_TO_LEFT_EFFECT: 'FLIP_RIGHT_TO_LEFT_EFFECT',
10335      RUBBER_BAND_EFFECT: 'RUBBER_BAND_EFFECT',
10336      JELLO_EFFECT: 'JELLO_EFFECT',
10337      GROW_BIG_EFFECT: 'GROW_BIG_EFFECT',
10338      SHRINK_BIG_EFFECT: 'SHRINK_BIG_EFFECT',
10339      PLUGIN_LOTTIE_EFFECT: 'PLUGIN_LOTTIE_EFFECT'
10340    };
10341    /**
10342     * Quick Effect Direction Enums
10343     */
10344
10345    exports.QuickEffectIds = QuickEffectIds;
10346    var QuickEffectDirectionConsts = {
10347      LEFT: 'LEFT',
10348      RIGHT: 'RIGHT',
10349      BOTTOM: 'BOTTOM',
10350      TOP: 'TOP',
10351      BOTTOM_LEFT: 'BOTTOM_LEFT',
10352      BOTTOM_RIGHT: 'BOTTOM_RIGHT',
10353      TOP_RIGHT: 'TOP_RIGHT',
10354      TOP_LEFT: 'TOP_LEFT',
10355      CLOCKWISE: 'CLOCKWISE',
10356      COUNTER_CLOCKWISE: 'COUNTER_CLOCKWISE'
10357    };
10358    exports.QuickEffectDirectionConsts = QuickEffectDirectionConsts;
10359
10360    /***/
10361  }),
10362/* 172 */
10363/***/ (function (module, exports, __webpack_require__) {
10364
10365    "use strict";
10366
10367
10368    Object.defineProperty(exports, "__esModule", {
10369      value: true
10370    });
10371    exports.ActionAppliesTo = exports.ActionTypeConsts = void 0;
10372    var ActionTypeConsts = {
10373      TRANSFORM_MOVE: 'TRANSFORM_MOVE',
10374      TRANSFORM_SCALE: 'TRANSFORM_SCALE',
10375      TRANSFORM_ROTATE: 'TRANSFORM_ROTATE',
10376      TRANSFORM_SKEW: 'TRANSFORM_SKEW',
10377      STYLE_OPACITY: 'STYLE_OPACITY',
10378      STYLE_SIZE: 'STYLE_SIZE',
10379      STYLE_FILTER: 'STYLE_FILTER',
10380      STYLE_BACKGROUND_COLOR: 'STYLE_BACKGROUND_COLOR',
10381      STYLE_BORDER: 'STYLE_BORDER',
10382      STYLE_TEXT_COLOR: 'STYLE_TEXT_COLOR',
10383      PLUGIN_LOTTIE: 'PLUGIN_LOTTIE',
10384      GENERAL_DISPLAY: 'GENERAL_DISPLAY',
10385      GENERAL_START_ACTION: 'GENERAL_START_ACTION',
10386      GENERAL_CONTINUOUS_ACTION: 'GENERAL_CONTINUOUS_ACTION',
10387      // TODO: Clean these up below because they're not used at this time
10388      GENERAL_COMBO_CLASS: 'GENERAL_COMBO_CLASS',
10389      GENERAL_STOP_ACTION: 'GENERAL_STOP_ACTION',
10390      GENERAL_LOOP: 'GENERAL_LOOP',
10391      STYLE_BOX_SHADOW: 'STYLE_BOX_SHADOW'
10392    };
10393    exports.ActionTypeConsts = ActionTypeConsts;
10394    var ActionAppliesTo = {
10395      ELEMENT: 'ELEMENT',
10396      ELEMENT_CLASS: 'ELEMENT_CLASS',
10397      TRIGGER_ELEMENT: 'TRIGGER_ELEMENT'
10398    };
10399    exports.ActionAppliesTo = ActionAppliesTo;
10400
10401    /***/
10402  }),
10403/* 173 */
10404/***/ (function (module, exports, __webpack_require__) {
10405
10406    "use strict";
10407
10408
10409    Object.defineProperty(exports, "__esModule", {
10410      value: true
10411    });
10412    exports.InteractionTypeConsts = void 0;
10413    var InteractionTypeConsts = {
10414      MOUSE_CLICK_INTERACTION: 'MOUSE_CLICK_INTERACTION',
10415      MOUSE_HOVER_INTERACTION: 'MOUSE_HOVER_INTERACTION',
10416      MOUSE_MOVE_INTERACTION: 'MOUSE_MOVE_INTERACTION',
10417      SCROLL_INTO_VIEW_INTERACTION: 'SCROLL_INTO_VIEW_INTERACTION',
10418      SCROLLING_IN_VIEW_INTERACTION: 'SCROLLING_IN_VIEW_INTERACTION',
10419      MOUSE_MOVE_IN_VIEWPORT_INTERACTION: 'MOUSE_MOVE_IN_VIEWPORT_INTERACTION',
10420      PAGE_IS_SCROLLING_INTERACTION: 'PAGE_IS_SCROLLING_INTERACTION',
10421      PAGE_LOAD_INTERACTION: 'PAGE_LOAD_INTERACTION',
10422      PAGE_SCROLLED_INTERACTION: 'PAGE_SCROLLED_INTERACTION',
10423      NAVBAR_INTERACTION: 'NAVBAR_INTERACTION',
10424      DROPDOWN_INTERACTION: 'DROPDOWN_INTERACTION',
10425      ECOMMERCE_CART_INTERACTION: 'ECOMMERCE_CART_INTERACTION',
10426      TAB_INTERACTION: 'TAB_INTERACTION',
10427      SLIDER_INTERACTION: 'SLIDER_INTERACTION'
10428    };
10429    exports.InteractionTypeConsts = InteractionTypeConsts;
10430
10431    /***/
10432  }),
10433/* 174 */
10434/***/ (function (module, exports, __webpack_require__) {
10435
10436    "use strict";
10437
10438
10439    Object.defineProperty(exports, "__esModule", {
10440      value: true
10441    });
10442    exports.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;
10443    var IX2_RAW_DATA_IMPORTED = 'IX2_RAW_DATA_IMPORTED';
10444    exports.IX2_RAW_DATA_IMPORTED = IX2_RAW_DATA_IMPORTED;
10445    var IX2_SESSION_INITIALIZED = 'IX2_SESSION_INITIALIZED';
10446    exports.IX2_SESSION_INITIALIZED = IX2_SESSION_INITIALIZED;
10447    var IX2_SESSION_STARTED = 'IX2_SESSION_STARTED';
10448    exports.IX2_SESSION_STARTED = IX2_SESSION_STARTED;
10449    var IX2_SESSION_STOPPED = 'IX2_SESSION_STOPPED';
10450    exports.IX2_SESSION_STOPPED = IX2_SESSION_STOPPED;
10451    var IX2_PREVIEW_REQUESTED = 'IX2_PREVIEW_REQUESTED';
10452    exports.IX2_PREVIEW_REQUESTED = IX2_PREVIEW_REQUESTED;
10453    var IX2_PLAYBACK_REQUESTED = 'IX2_PLAYBACK_REQUESTED';
10454    exports.IX2_PLAYBACK_REQUESTED = IX2_PLAYBACK_REQUESTED;
10455    var IX2_STOP_REQUESTED = 'IX2_STOP_REQUESTED';
10456    exports.IX2_STOP_REQUESTED = IX2_STOP_REQUESTED;
10457    var IX2_CLEAR_REQUESTED = 'IX2_CLEAR_REQUESTED';
10458    exports.IX2_CLEAR_REQUESTED = IX2_CLEAR_REQUESTED;
10459    var IX2_EVENT_LISTENER_ADDED = 'IX2_EVENT_LISTENER_ADDED';
10460    exports.IX2_EVENT_LISTENER_ADDED = IX2_EVENT_LISTENER_ADDED;
10461    var IX2_EVENT_STATE_CHANGED = 'IX2_EVENT_STATE_CHANGED';
10462    exports.IX2_EVENT_STATE_CHANGED = IX2_EVENT_STATE_CHANGED;
10463    var IX2_ANIMATION_FRAME_CHANGED = 'IX2_ANIMATION_FRAME_CHANGED';
10464    exports.IX2_ANIMATION_FRAME_CHANGED = IX2_ANIMATION_FRAME_CHANGED;
10465    var IX2_PARAMETER_CHANGED = 'IX2_PARAMETER_CHANGED';
10466    exports.IX2_PARAMETER_CHANGED = IX2_PARAMETER_CHANGED;
10467    var IX2_INSTANCE_ADDED = 'IX2_INSTANCE_ADDED';
10468    exports.IX2_INSTANCE_ADDED = IX2_INSTANCE_ADDED;
10469    var IX2_INSTANCE_STARTED = 'IX2_INSTANCE_STARTED';
10470    exports.IX2_INSTANCE_STARTED = IX2_INSTANCE_STARTED;
10471    var IX2_INSTANCE_REMOVED = 'IX2_INSTANCE_REMOVED';
10472    exports.IX2_INSTANCE_REMOVED = IX2_INSTANCE_REMOVED;
10473    var IX2_ELEMENT_STATE_CHANGED = 'IX2_ELEMENT_STATE_CHANGED';
10474    exports.IX2_ELEMENT_STATE_CHANGED = IX2_ELEMENT_STATE_CHANGED;
10475    var IX2_ACTION_LIST_PLAYBACK_CHANGED = 'IX2_ACTION_LIST_PLAYBACK_CHANGED';
10476    exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = IX2_ACTION_LIST_PLAYBACK_CHANGED;
10477    var IX2_VIEWPORT_WIDTH_CHANGED = 'IX2_VIEWPORT_WIDTH_CHANGED';
10478    exports.IX2_VIEWPORT_WIDTH_CHANGED = IX2_VIEWPORT_WIDTH_CHANGED;
10479    var IX2_MEDIA_QUERIES_DEFINED = 'IX2_MEDIA_QUERIES_DEFINED';
10480    exports.IX2_MEDIA_QUERIES_DEFINED = IX2_MEDIA_QUERIES_DEFINED;
10481    var IX2_TEST_FRAME_RENDERED = 'IX2_TEST_FRAME_RENDERED';
10482    exports.IX2_TEST_FRAME_RENDERED = IX2_TEST_FRAME_RENDERED;
10483
10484    /***/
10485  }),
10486/* 175 */
10487/***/ (function (module, exports, __webpack_require__) {
10488
10489    "use strict";
10490
10491
10492    Object.defineProperty(exports, "__esModule", {
10493      value: true
10494    });
10495    exports.RENDER_PLUGIN = exports.RENDER_STYLE = exports.RENDER_GENERAL = exports.RENDER_TRANSFORM = exp
10495orts.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;
10496    var IX2_ID_DELIMITER = '|';
10497    exports.IX2_ID_DELIMITER = IX2_ID_DELIMITER;
10498    var WF_PAGE = 'data-wf-page';
10499    exports.WF_PAGE = WF_PAGE;
10500    var W_MOD_JS = 'w-mod-js';
10501    exports.W_MOD_JS = W_MOD_JS;
10502    var W_MOD_IX = 'w-mod-ix';
10503    exports.W_MOD_IX = W_MOD_IX;
10504    var BOUNDARY_SELECTOR = '.w-dyn-item';
10505    exports.BOUNDARY_SELECTOR = BOUNDARY_SELECTOR;
10506    var CONFIG_X_VALUE = 'xValue';
10507    exports.CONFIG_X_VALUE = CONFIG_X_VALUE;
10508    var CONFIG_Y_VALUE = 'yValue';
10509    exports.CONFIG_Y_VALUE = CONFIG_Y_VALUE;
10510    var CONFIG_Z_VALUE = 'zValue';
10511    exports.CONFIG_Z_VALUE = CONFIG_Z_VALUE;
10512    var CONFIG_VALUE = 'value';
10513    exports.CONFIG_VALUE = CONFIG_VALUE;
10514    var CONFIG_X_UNIT = 'xUnit';
10515    exports.CONFIG_X_UNIT = CONFIG_X_UNIT;
10516    var CONFIG_Y_UNIT = 'yUnit';
10517    exports.CONFIG_Y_UNIT = CONFIG_Y_UNIT;
10518    var CONFIG_Z_UNIT = 'zUnit';
10519    exports.CONFIG_Z_UNIT = CONFIG_Z_UNIT;
10520    var CONFIG_UNIT = 'unit';
10521    exports.CONFIG_UNIT = CONFIG_UNIT;
10522    var TRANSFORM = 'transform';
10523    exports.TRANSFORM = TRANSFORM;
10524    var TRANSLATE_X = 'translateX';
10525    exports.TRANSLATE_X = TRANSLATE_X;
10526    var TRANSLATE_Y = 'translateY';
10527    exports.TRANSLATE_Y = TRANSLATE_Y;
10528    var TRANSLATE_Z = 'translateZ';
10529    exports.TRANSLATE_Z = TRANSLATE_Z;
10530    var TRANSLATE_3D = 'translate3d';
10531    exports.TRANSLATE_3D = TRANSLATE_3D;
10532    var SCALE_X = 'scaleX';
10533    exports.SCALE_X = SCALE_X;
10534    var SCALE_Y = 'scaleY';
10535    exports.SCALE_Y = SCALE_Y;
10536    var SCALE_Z = 'scaleZ';
10537    exports.SCALE_Z = SCALE_Z;
10538    var SCALE_3D = 'scale3d';
10539    exports.SCALE_3D = SCALE_3D;
10540    var ROTATE_X = 'rotateX';
10541    exports.ROTATE_X = ROTATE_X;
10542    var ROTATE_Y = 'rotateY';
10543    exports.ROTATE_Y = ROTATE_Y;
10544    var ROTATE_Z = 'rotateZ';
10545    exports.ROTATE_Z = ROTATE_Z;
10546    var SKEW = 'skew';
10547    exports.SKEW = SKEW;
10548    var SKEW_X = 'skewX';
10549    exports.SKEW_X = SKEW_X;
10550    var SKEW_Y = 'skewY';
10551    exports.SKEW_Y = SKEW_Y;
10552    var OPACITY = 'opacity';
10553    exports.OPACITY = OPACITY;
10554    var FILTER = 'filter';
10555    exports.FILTER = FILTER;
10556    var WIDTH = 'width';
10557    exports.WIDTH = WIDTH;
10558    var HEIGHT = 'height';
10559    exports.HEIGHT = HEIGHT;
10560    var BACKGROUND_COLOR = 'backgroundColor';
10561    exports.BACKGROUND_COLOR = BACKGROUND_COLOR;
10562    var BACKGROUND = 'background';
10563    exports.BACKGROUND = BACKGROUND;
10564    var BORDER_COLOR = 'borderColor';
10565    exports.BORDER_COLOR = BORDER_COLOR;
10566    var COLOR = 'color';
10567    exports.COLOR = COLOR;
10568    var DISPLAY = 'display';
10569    exports.DISPLAY = DISPLAY;
10570    var FLEX = 'flex';
10571    exports.FLEX = FLEX;
10572    var WILL_CHANGE = 'willChange';
10573    exports.WILL_CHANGE = WILL_CHANGE;
10574    var AUTO = 'AUTO';
10575    exports.AUTO = AUTO;
10576    var COMMA_DELIMITER = ',';
10577    exports.COMMA_DELIMITER = COMMA_DELIMITER;
10578    var COLON_DELIMITER = ':';
10579    exports.COLON_DELIMITER = COLON_DELIMITER;
10580    var BAR_DELIMITER = '|';
10581    exports.BAR_DELIMITER = BAR_DELIMITER;
10582    var CHILDREN = 'CHILDREN';
10583    exports.CHILDREN = CHILDREN;
10584    var IMMEDIATE_CHILDREN = 'IMMEDIATE_CHILDREN';
10585    exports.IMMEDIATE_CHILDREN = IMMEDIATE_CHILDREN;
10586    var SIBLINGS = 'SIBLINGS';
10587    exports.SIBLINGS = SIBLINGS;
10588    var PARENT = 'PARENT';
10589    exports.PARENT = PARENT;
10590    var PRESERVE_3D = 'preserve-3d';
10591    exports.PRESERVE_3D = PRESERVE_3D;
10592    var HTML_ELEMENT = 'HTML_ELEMENT';
10593    exports.HTML_ELEMENT = HTML_ELEMENT;
10594    var PLAIN_OBJECT = 'PLAIN_OBJECT';
10595    exports.PLAIN_OBJECT = PLAIN_OBJECT;
10596    var ABSTRACT_NODE = 'ABSTRACT_NODE';
10597    exports.ABSTRACT_NODE = ABSTRACT_NODE;
10598    var RENDER_TRANSFORM = 'RENDER_TRANSFORM';
10599    exports.RENDER_TRANSFORM = RENDER_TRANSFORM;
10600    var RENDER_GENERAL = 'RENDER_GENERAL';
10601    exports.RENDER_GENERAL = RENDER_GENERAL;
10602    var RENDER_STYLE = 'RENDER_STYLE';
10603    exports.RENDER_STYLE = RENDER_STYLE;
10604    var RENDER_PLUGIN = 'RENDER_PLUGIN';
10605    exports.RENDER_PLUGIN = RENDER_PLUGIN;
10606
10607    /***/
10608  }),
10609/* 176 */
10610/***/ (function (module, exports, __webpack_require__) {
10611
10612    "use strict";
10613
10614
10615    var _interopRequireDefault2 = __webpack_require__(0);
10616
10617    var _defineProperty2 = _interopRequireDefault2(__webpack_require__(27));
10618
10619    var _Object$create;
10620
10621    var _interopRequireDefault = __webpack_require__(0);
10622
10623    Object.defineProperty(exports, "__esModule", {
10624      value: true
10625    });
10626    exports.ixRequest = void 0;
10627
10628    var _extends2 = _interopRequireDefault(__webpack_require__(28));
10629
10630    var _constants = __webpack_require__(2);
10631
10632    var _timm = __webpack_require__(19);
10633
10634    var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
10635      IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
10636      IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
10637      IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
10638      IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED;
10639    var initialState = {
10640      preview: {},
10641      playback: {},
10642      stop: {},
10643      clear: {}
10644    };
10645    var stateKeys = Object.create(null, (_Object$create = {}, (0, _defineProperty2["default"])(_Object$create, IX2_PREVIEW_REQUESTED, {
10646      value: 'preview'
10647    }), (0, _defineProperty2["default"])(_Object$create, IX2_PLAYBACK_REQUESTED, {
10648      value: 'playback'
10649    }), (0, _defineProperty2["default"])(_Object$create, IX2_STOP_REQUESTED, {
10650      value: 'stop'
10651    }), (0, _defineProperty2["default"])(_Object$create, IX2_CLEAR_REQUESTED, {
10652      value: 'clear'
10653    }), _Object$create));
10654
10655    var ixRequest = function ixRequest() {
10656      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
10657      var action = arguments.length > 1 ? arguments[1] : undefined;
10658
10659      if (action.type in stateKeys) {
10660        var key = [stateKeys[action.type]];
10661        return (0, _timm.setIn)(state, [key], (0, _extends2["default"])({}, action.payload));
10662      }
10663
10664      return state;
10665    };
10666
10667    exports.ixRequest = ixRequest;
10668
10669    /***/
10670  }),
10671/* 177 */
10672/***/ (function (module, exports, __webpack_require__) {
10673
10674    "use strict";
10675
10676
10677    Object.defineProperty(exports, "__esModule", {
10678      value: true
10679    });
10680    exports.ixSession = void 0;
10681
10682    var _constants = __webpack_require__(2);
10683
10684    var _timm = __webpack_require__(19);
10685
10686    var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
10687      IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
10688      IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
10689      IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
10690      IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
10691      IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
10692      IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
10693      IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
10694      IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
10695      IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
10696      IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
10697    var initialState = {
10698      active: false,
10699      tick: 0,
10700      eventListeners: [],
10701      eventState: {},
10702      playbackState: {},
10703      viewportWidth: 0,
10704      mediaQueryKey: null,
10705      hasBoundaryNodes: false,
10706      hasDefinedMediaQueries: false
10707    };
10708    var TEST_FRAME_STEPS_SIZE = 20; // $FlowFixMe
10709
10710    var ixSession = function ixSession() {
10711      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
10712      var action = arguments.length > 1 ? arguments[1] : undefined;
10713
10714      switch (action.type) {
10715        case IX2_SESSION_INITIALIZED:
10716          {
10717            var hasBoundaryNodes = action.payload.hasBoundaryNodes;
10718            return (0, _timm.set)(state, 'hasBoundaryNodes', hasBoundaryNodes);
10719          }
10720
10721        case IX2_SESSION_STARTED:
10722          {
10723            return (0, _timm.set)(state, 'active', true);
10724          }
10725
10726        case IX2_TEST_FRAME_RENDERED:
10727          {
10728            var _action$payload$step = action.payload.step,
10729              step = _action$payload$step === void 0 ? TEST_FRAME_STEPS_SIZE : _action$payload$step;
10730            return (0, _timm.set)(state, 'tick', state.tick + step);
10731          }
10732
10733        case IX2_SESSION_STOPPED:
10734          {
10735            return initialState;
10736          }
10737
10738        case IX2_ANIMATION_FRAME_CHANGED:
10739          {
10740            var now = action.payload.now;
10741            return (0, _timm.set)(state, 'tick', now);
10742          }
10743
10744        case IX2_EVENT_LISTENER_ADDED:
10745          {
10746            var eventListeners = (0, _timm.addLast)(state.eventListeners, action.payload);
10747            return (0, _timm.set)(state, 'eventListeners', eventListeners);
10748          }
10749
10750        case IX2_EVENT_STATE_CHANGED:
10751          {
10752            var _action$payload = action.payload,
10753              stateKey = _action$payload.stateKey,
10754              newState = _action$payload.newState;
10755            return (0, _timm.setIn)(state, ['eventState', stateKey], newState);
10756          }
10757
10758        case IX2_ACTION_LIST_PLAYBACK_CHANGED:
10759          {
10760            var _action$payload2 = action.payload,
10761              actionListId = _action$payload2.actionListId,
10762              isPlaying = _action$payload2.isPlaying;
10763            return (0, _timm.setIn)(state, ['playbackState', actionListId], isPlaying);
10764          }
10765
10766        case IX2_VIEWPORT_WIDTH_CHANGED:
10767          {
10768            var _action$payload3 = action.payload,
10769              width = _action$payload3.width,
10770              mediaQueries = _action$payload3.mediaQueries;
10771            var mediaQueryCount = mediaQueries.length;
10772            var mediaQueryKey = null;
10773
10774            for (var i = 0; i < mediaQueryCount; i++) {
10775              var _mediaQueries$i = mediaQueries[i],
10776                key = _mediaQueries$i.key,
10777                min = _mediaQueries$i.min,
10778                max = _mediaQueries$i.max;
10779
10780              if (width >= min && width <= max) {
10781                mediaQueryKey = key;
10782                break;
10783              }
10784            }
10785
10786            return (0, _timm.merge)(state, {
10787              viewportWidth: width,
10788              mediaQueryKey: mediaQueryKey
10789            });
10790          }
10791
10792        case IX2_MEDIA_QUERIES_DEFINED:
10793          {
10794            return (0, _timm.set)(state, 'hasDefinedMediaQueries', true);
10795          }
10796
10797        default:
10798          {
10799            return state;
10800          }
10801      }
10802    };
10803
10804    exports.ixSession = ixSession;
10805
10806    /***/
10807  }),
10808/* 178 */
10809/***/ (function (module, exports, __webpack_require__) {
10810
10811    var baseIsMatch = __webpack_require__(179),
10812      getMatchData = __webpack_require__(231),
10813      matchesStrictComparable = __webpack_require__(102);
10814
10815    /**
10816     * The base implementation of `_.matches` which doesn't clone `source`.
10817     *
10818     * @private
10819     * @param {Object} source The object of property values to match.
10820     * @returns {Function} Returns the new spec function.
10821     */
10822    function baseMatches(source) {
10823      var matchData = getMatchData(source);
10824      if (matchData.length == 1 && matchData[0][2]) {
10825        return matchesStrictComparable(matchData[0][0], matchData[0][1]);
10826      }
10827      return function (object) {
10828        return object === source || baseIsMatch(object, source, matchData);
10829      };
10830    }
10831
10832    module.exports = baseMatches;
10833
10834
10835    /***/
10836  }),
10837/* 179 */
10838/***/ (function (module, exports, __webpack_require__) {
10839
10840    var Stack = __webpack_require__(88),
10841      baseIsEqual = __webpack_require__(92);
10842
10843    /** Used to compose bitmasks for value comparisons. */
10844    var COMPARE_PARTIAL_FLAG = 1,
10845      COMPARE_UNORDERED_FLAG = 2;
10846
10847    /**
10848     * The base implementation of `_.isMatch` without support for iteratee shorthands.
10849     *
10850     * @private
10851     * @param {Object} object The object to inspect.
10852     * @param {Object} source The object of property values to match.
10853     * @param {Array} matchData The property names, values, and compare flags to match.
10854     * @param {Function} [customizer] The function to customize comparisons.
10855     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
10856     */
10857    function baseIsMatch(object, source, matchData, customizer) {
10858      var index = matchData.length,
10859        length = index,
10860        noCustomizer = !customizer;
10861
10862      if (object == null) {
10863        return !length;
10864      }
10865      object = Object(object);
10866      while (index--) {
10867        var data = matchData[index];
10868        if ((noCustomizer && data[2])
10869          ? data[1] !== object[data[0]]
10870          : !(data[0] in object)
10871        ) {
10872          return false;
vendor: 4,223 bytes, lines 10873-11062
10873        }
10874      }
10875      while (++index < length) {
10876        data = matchData[index];
10877        var key = data[0],
10878          objValue = object[key],
10879          srcValue = data[1];
10880
10881        if (noCustomizer && data[2]) {
10882          if (objValue === undefined && !(key in object)) {
10883            return false;
10884          }
10885        } else {
10886          var stack = new Stack;
10887          if (customizer) {
10888            var result = customizer(objValue, srcValue, key, object, source, stack);
10889          }
10890          if (!(result === undefined
10891            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
10892            : result
10893          )) {
10894            return false;
10895          }
10896        }
10897      }
10898      return true;
10899    }
10900
10901    module.exports = baseIsMatch;
10902
10903
10904    /***/
10905  }),
10906/* 180 */
10907/***/ (function (module, exports) {
10908
10909    /**
10910     * Removes all key-value entries from the list cache.
10911     *
10912     * @private
10913     * @name clear
10914     * @memberOf ListCache
10915     */
10916    function listCacheClear() {
10917      this.__data__ = [];
10918      this.size = 0;
10919    }
10920
10921    module.exports = listCacheClear;
10922
10923
10924    /***/
10925  }),
10926/* 181 */
10927/***/ (function (module, exports, __webpack_require__) {
10928
10929    var assocIndexOf = __webpack_require__(30);
10930
10931    /** Used for built-in method references. */
10932    var arrayProto = Array.prototype;
10933
10934    /** Built-in value references. */
10935    var splice = arrayProto.splice;
10936
10937    /**
10938     * Removes `key` and its value from the list cache.
10939     *
10940     * @private
10941     * @name delete
10942     * @memberOf ListCache
10943     * @param {string} key The key of the value to remove.
10944     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10945     */
10946    function listCacheDelete(key) {
10947      var data = this.__data__,
10948        index = assocIndexOf(data, key);
10949
10950      if (index < 0) {
10951        return false;
10952      }
10953      var lastIndex = data.length - 1;
10954      if (index == lastIndex) {
10955        data.pop();
10956      } else {
10957        splice.call(data, index, 1);
10958      }
10959      --this.size;
10960      return true;
10961    }
10962
10963    module.exports = listCacheDelete;
10964
10965
10966    /***/
10967  }),
10968/* 182 */
10969/***/ (function (module, exports, __webpack_require__) {
10970
10971    var assocIndexOf = __webpack_require__(30);
10972
10973    /**
10974     * Gets the list cache value for `key`.
10975     *
10976     * @private
10977     * @name get
10978     * @memberOf ListCache
10979     * @param {string} key The key of the value to get.
10980     * @returns {*} Returns the entry value.
10981     */
10982    function listCacheGet(key) {
10983      var data = this.__data__,
10984        index = assocIndexOf(data, key);
10985
10986      return index < 0 ? undefined : data[index][1];
10987    }
10988
10989    module.exports = listCacheGet;
10990
10991
10992    /***/
10993  }),
10994/* 183 */
10995/***/ (function (module, exports, __webpack_require__) {
10996
10997    var assocIndexOf = __webpack_require__(30);
10998
10999    /**
11000     * Checks if a list cache value for `key` exists.
11001     *
11002     * @private
11003     * @name has
11004     * @memberOf ListCache
11005     * @param {string} key The key of the entry to check.
11006     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11007     */
11008    function listCacheHas(key) {
11009      return assocIndexOf(this.__data__, key) > -1;
11010    }
11011
11012    module.exports = listCacheHas;
11013
11014
11015    /***/
11016  }),
11017/* 184 */
11018/***/ (function (module, exports, __webpack_require__) {
11019
11020    var assocIndexOf = __webpack_require__(30);
11021
11022    /**
11023     * Sets the list cache `key` to `value`.
11024     *
11025     * @private
11026     * @name set
11027     * @memberOf ListCache
11028     * @param {string} key The key of the value to set.
11029     * @param {*} value The value to set.
11030     * @returns {Object} Returns the list cache instance.
11031     */
11032    function listCacheSet(key, value) {
11033      var data = this.__data__,
11034        index = assocIndexOf(data, key);
11035
11036      if (index < 0) {
11037        ++this.size;
11038        data.push([key, value]);
11039      } else {
11040        data[index][1] = value;
11041      }
11042      return this;
11043    }
11044
11045    module.exports = listCacheSet;
11046
11047
11048    /***/
11049  }),
11050/* 185 */
11051/***/ (function (module, exports, __webpack_require__) {
11052
11053    var ListCache = __webpack_require__(29);
11054
11055    /**
11056     * Removes all key-value entries from the stack.
11057     *
11058     * @private
11059     * @name clear
11060     * @memberOf Stack
11061     */
11062    function stackClear() {
vendor: 9,638 bytes, lines 11063-11465
11063      this.__data__ = new ListCache;
11064      this.size = 0;
11065    }
11066
11067    module.exports = stackClear;
11068
11069
11070    /***/
11071  }),
11072/* 186 */
11073/***/ (function (module, exports) {
11074
11075    /**
11076     * Removes `key` and its value from the stack.
11077     *
11078     * @private
11079     * @name delete
11080     * @memberOf Stack
11081     * @param {string} key The key of the value to remove.
11082     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11083     */
11084    function stackDelete(key) {
11085      var data = this.__data__,
11086        result = data['delete'](key);
11087
11088      this.size = data.size;
11089      return result;
11090    }
11091
11092    module.exports = stackDelete;
11093
11094
11095    /***/
11096  }),
11097/* 187 */
11098/***/ (function (module, exports) {
11099
11100    /**
11101     * Gets the stack value for `key`.
11102     *
11103     * @private
11104     * @name get
11105     * @memberOf Stack
11106     * @param {string} key The key of the value to get.
11107     * @returns {*} Returns the entry value.
11108     */
11109    function stackGet(key) {
11110      return this.__data__.get(key);
11111    }
11112
11113    module.exports = stackGet;
11114
11115
11116    /***/
11117  }),
11118/* 188 */
11119/***/ (function (module, exports) {
11120
11121    /**
11122     * Checks if a stack value for `key` exists.
11123     *
11124     * @private
11125     * @name has
11126     * @memberOf Stack
11127     * @param {string} key The key of the entry to check.
11128     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11129     */
11130    function stackHas(key) {
11131      return this.__data__.has(key);
11132    }
11133
11134    module.exports = stackHas;
11135
11136
11137    /***/
11138  }),
11139/* 189 */
11140/***/ (function (module, exports, __webpack_require__) {
11141
11142    var ListCache = __webpack_require__(29),
11143      Map = __webpack_require__(47),
11144      MapCache = __webpack_require__(48);
11145
11146    /** Used as the size to enable large array optimizations. */
11147    var LARGE_ARRAY_SIZE = 200;
11148
11149    /**
11150     * Sets the stack `key` to `value`.
11151     *
11152     * @private
11153     * @name set
11154     * @memberOf Stack
11155     * @param {string} key The key of the value to set.
11156     * @param {*} value The value to set.
11157     * @returns {Object} Returns the stack cache instance.
11158     */
11159    function stackSet(key, value) {
11160      var data = this.__data__;
11161      if (data instanceof ListCache) {
11162        var pairs = data.__data__;
11163        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
11164          pairs.push([key, value]);
11165          this.size = ++data.size;
11166          return this;
11167        }
11168        data = this.__data__ = new MapCache(pairs);
11169      }
11170      data.set(key, value);
11171      this.size = data.size;
11172      return this;
11173    }
11174
11175    module.exports = stackSet;
11176
11177
11178    /***/
11179  }),
11180/* 190 */
11181/***/ (function (module, exports, __webpack_require__) {
11182
11183    var isFunction = __webpack_require__(89),
11184      isMasked = __webpack_require__(193),
11185      isObject = __webpack_require__(6),
11186      toSource = __webpack_require__(91);
11187
11188    /**
11189     * Used to match `RegExp`
11190     * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
11191     */
11192    var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
11193
11194    /** Used to detect host constructors (Safari). */
11195    var reIsHostCtor = /^\[object .+?Constructor\]$/;
11196
11197    /** Used for built-in method references. */
11198    var funcProto = Function.prototype,
11199      objectProto = Object.prototype;
11200
11201    /** Used to resolve the decompiled source of functions. */
11202    var funcToString = funcProto.toString;
11203
11204    /** Used to check objects for own properties. */
11205    var hasOwnProperty = objectProto.hasOwnProperty;
11206
11207    /** Used to detect if a method is native. */
11208    var reIsNative = RegExp('^' +
11209      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
11210        .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
11211    );
11212
11213    /**
11214     * The base implementation of `_.isNative` without bad shim checks.
11215     *
11216     * @private
11217     * @param {*} value The value to check.
11218     * @returns {boolean} Returns `true` if `value` is a native function,
11219     *  else `false`.
11220     */
11221    function baseIsNative(value) {
11222      if (!isObject(value) || isMasked(value)) {
11223        return false;
11224      }
11225      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
11226      return pattern.test(toSource(value));
11227    }
11228
11229    module.exports = baseIsNative;
11230
11231
11232    /***/
11233  }),
11234/* 191 */
11235/***/ (function (module, exports, __webpack_require__) {
11236
11237    var Symbol = __webpack_require__(20);
11238
11239    /** Used for built-in method references. */
11240    var objectProto = Object.prototype;
11241
11242    /** Used to check objects for own properties. */
11243    var hasOwnProperty = objectProto.hasOwnProperty;
11244
11245    /**
11246     * Used to resolve the
11247     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
11248     * of values.
11249     */
11250    var nativeObjectToString = objectProto.toString;
11251
11252    /** Built-in value references. */
11253    var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
11254
11255    /**
11256     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
11257     *
11258     * @private
11259     * @param {*} value The value to query.
11260     * @returns {string} Returns the raw `toStringTag`.
11261     */
11262    function getRawTag(value) {
11263      var isOwn = hasOwnProperty.call(value, symToStringTag),
11264        tag = value[symToStringTag];
11265
11266      try {
11267        value[symToStringTag] = undefined;
11268        var unmasked = true;
11269      } catch (e) { }
11270
11271      var result = nativeObjectToString.call(value);
11272      if (unmasked) {
11273        if (isOwn) {
11274          value[symToStringTag] = tag;
11275        } else {
11276          delete value[symToStringTag];
11277        }
11278      }
11279      return result;
11280    }
11281
11282    module.exports = getRawTag;
11283
11284
11285    /***/
11286  }),
11287/* 192 */
11288/***/ (function (module, exports) {
11289
11290    /** Used for built-in method references. */
11291    var objectProto = Object.prototype;
11292
11293    /**
11294     * Used to resolve the
11295     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
11296     * of values.
11297     */
11298    var nativeObjectToString = objectProto.toString;
11299
11300    /**
11301     * Converts `value` to a string using `Object.prototype.toString`.
11302     *
11303     * @private
11304     * @param {*} value The value to convert.
11305     * @returns {string} Returns the converted string.
11306     */
11307    function objectToString(value) {
11308      return nativeObjectToString.call(value);
11309    }
11310
11311    module.exports = objectToString;
11312
11313
11314    /***/
11315  }),
11316/* 193 */
11317/***/ (function (module, exports, __webpack_require__) {
11318
11319    var coreJsData = __webpack_require__(194);
11320
11321    /** Used to detect methods masquerading as native. */
11322    var maskSrcKey = (function () {
11323      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
11324      return uid ? ('Symbol(src)_1.' + uid) : '';
11325    }());
11326
11327    /**
11328     * Checks if `func` has its source masked.
11329     *
11330     * @private
11331     * @param {Function} func The function to check.
11332     * @returns {boolean} Returns `true` if `func` is masked, else `false`.
11333     */
11334    function isMasked(func) {
11335      return !!maskSrcKey && (maskSrcKey in func);
11336    }
11337
11338    module.exports = isMasked;
11339
11340
11341    /***/
11342  }),
11343/* 194 */
11344/***/ (function (module, exports, __webpack_require__) {
11345
11346    var root = __webpack_require__(5);
11347
11348    /** Used to detect overreaching core-js shims. */
11349    var coreJsData = root['__core-js_shared__'];
11350
11351    module.exports = coreJsData;
11352
11353
11354    /***/
11355  }),
11356/* 195 */
11357/***/ (function (module, exports) {
11358
11359    /**
11360     * Gets the value at `key` of `object`.
11361     *
11362     * @private
11363     * @param {Object} [object] The object to query.
11364     * @param {string} key The key of the property to get.
11365     * @returns {*} Returns the property value.
11366     */
11367    function getValue(object, key) {
11368      return object == null ? undefined : object[key];
11369    }
11370
11371    module.exports = getValue;
11372
11373
11374    /***/
11375  }),
11376/* 196 */
11377/***/ (function (module, exports, __webpack_require__) {
11378
11379    var Hash = __webpack_require__(197),
11380      ListCache = __webpack_require__(29),
11381      Map = __webpack_require__(47);
11382
11383    /**
11384     * Removes all key-value entries from the map.
11385     *
11386     * @private
11387     * @name clear
11388     * @memberOf MapCache
11389     */
11390    function mapCacheClear() {
11391      this.size = 0;
11392      this.__data__ = {
11393        'hash': new Hash,
11394        'map': new (Map || ListCache),
11395        'string': new Hash
11396      };
11397    }
11398
11399    module.exports = mapCacheClear;
11400
11401
11402    /***/
11403  }),
11404/* 197 */
11405/***/ (function (module, exports, __webpack_require__) {
11406
11407    var hashClear = __webpack_require__(198),
11408      hashDelete = __webpack_require__(199),
11409      hashGet = __webpack_require__(200),
11410      hashHas = __webpack_require__(201),
11411      hashSet = __webpack_require__(202);
11412
11413    /**
11414     * Creates a hash object.
11415     *
11416     * @private
11417     * @constructor
11418     * @param {Array} [entries] The key-value pairs to cache.
11419     */
11420    function Hash(entries) {
11421      var index = -1,
11422        length = entries == null ? 0 : entries.length;
11423
11424      this.clear();
11425      while (++index < length) {
11426        var entry = entries[index];
11427        this.set(entry[0], entry[1]);
11428      }
11429    }
11430
11431    // Add methods to `Hash`.
11432    Hash.prototype.clear = hashClear;
11433    Hash.prototype['delete'] = hashDelete;
11434    Hash.prototype.get = hashGet;
11435    Hash.prototype.has = hashHas;
11436    Hash.prototype.set = hashSet;
11437
11438    module.exports = Hash;
11439
11440
11441    /***/
11442  }),
11443/* 198 */
11444/***/ (function (module, exports, __webpack_require__) {
11445
11446    var nativeCreate = __webpack_require__(31);
11447
11448    /**
11449     * Removes all key-value entries from the hash.
11450     *
11451     * @private
11452     * @name clear
11453     * @memberOf Hash
11454     */
11455    function hashClear() {
11456      this.__data__ = nativeCreate ? nativeCreate(null) : {};
11457      this.size = 0;
11458    }
11459
11460    module.exports = hashClear;
11461
11462
11463    /***/
11464  }),
11465/* 199 */
vendor: 32,020 bytes, lines 11466-12606
11466/***/ (function (module, exports) {
11467
11468    /**
11469     * Removes `key` and its value from the hash.
11470     *
11471     * @private
11472     * @name delete
11473     * @memberOf Hash
11474     * @param {Object} hash The hash to modify.
11475     * @param {string} key The key of the value to remove.
11476     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11477     */
11478    function hashDelete(key) {
11479      var result = this.has(key) && delete this.__data__[key];
11480      this.size -= result ? 1 : 0;
11481      return result;
11482    }
11483
11484    module.exports = hashDelete;
11485
11486
11487    /***/
11488  }),
11489/* 200 */
11490/***/ (function (module, exports, __webpack_require__) {
11491
11492    var nativeCreate = __webpack_require__(31);
11493
11494    /** Used to stand-in for `undefined` hash values. */
11495    var HASH_UNDEFINED = '__lodash_hash_undefined__';
11496
11497    /** Used for built-in method references. */
11498    var objectProto = Object.prototype;
11499
11500    /** Used to check objects for own properties. */
11501    var hasOwnProperty = objectProto.hasOwnProperty;
11502
11503    /**
11504     * Gets the hash value for `key`.
11505     *
11506     * @private
11507     * @name get
11508     * @memberOf Hash
11509     * @param {string} key The key of the value to get.
11510     * @returns {*} Returns the entry value.
11511     */
11512    function hashGet(key) {
11513      var data = this.__data__;
11514      if (nativeCreate) {
11515        var result = data[key];
11516        return result === HASH_UNDEFINED ? undefined : result;
11517      }
11518      return hasOwnProperty.call(data, key) ? data[key] : undefined;
11519    }
11520
11521    module.exports = hashGet;
11522
11523
11524    /***/
11525  }),
11526/* 201 */
11527/***/ (function (module, exports, __webpack_require__) {
11528
11529    var nativeCreate = __webpack_require__(31);
11530
11531    /** Used for built-in method references. */
11532    var objectProto = Object.prototype;
11533
11534    /** Used to check objects for own properties. */
11535    var hasOwnProperty = objectProto.hasOwnProperty;
11536
11537    /**
11538     * Checks if a hash value for `key` exists.
11539     *
11540     * @private
11541     * @name has
11542     * @memberOf Hash
11543     * @param {string} key The key of the entry to check.
11544     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11545     */
11546    function hashHas(key) {
11547      var data = this.__data__;
11548      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
11549    }
11550
11551    module.exports = hashHas;
11552
11553
11554    /***/
11555  }),
11556/* 202 */
11557/***/ (function (module, exports, __webpack_require__) {
11558
11559    var nativeCreate = __webpack_require__(31);
11560
11561    /** Used to stand-in for `undefined` hash values. */
11562    var HASH_UNDEFINED = '__lodash_hash_undefined__';
11563
11564    /**
11565     * Sets the hash `key` to `value`.
11566     *
11567     * @private
11568     * @name set
11569     * @memberOf Hash
11570     * @param {string} key The key of the value to set.
11571     * @param {*} value The value to set.
11572     * @returns {Object} Returns the hash instance.
11573     */
11574    function hashSet(key, value) {
11575      var data = this.__data__;
11576      this.size += this.has(key) ? 0 : 1;
11577      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
11578      return this;
11579    }
11580
11581    module.exports = hashSet;
11582
11583
11584    /***/
11585  }),
11586/* 203 */
11587/***/ (function (module, exports, __webpack_require__) {
11588
11589    var getMapData = __webpack_require__(32);
11590
11591    /**
11592     * Removes `key` and its value from the map.
11593     *
11594     * @private
11595     * @name delete
11596     * @memberOf MapCache
11597     * @param {string} key The key of the value to remove.
11598     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11599     */
11600    function mapCacheDelete(key) {
11601      var result = getMapData(this, key)['delete'](key);
11602      this.size -= result ? 1 : 0;
11603      return result;
11604    }
11605
11606    module.exports = mapCacheDelete;
11607
11608
11609    /***/
11610  }),
11611/* 204 */
11612/***/ (function (module, exports) {
11613
11614    /**
11615     * Checks if `value` is suitable for use as unique object key.
11616     *
11617     * @private
11618     * @param {*} value The value to check.
11619     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
11620     */
11621    function isKeyable(value) {
11622      var type = typeof value;
11623      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
11624        ? (value !== '__proto__')
11625        : (value === null);
11626    }
11627
11628    module.exports = isKeyable;
11629
11630
11631    /***/
11632  }),
11633/* 205 */
11634/***/ (function (module, exports, __webpack_require__) {
11635
11636    var getMapData = __webpack_require__(32);
11637
11638    /**
11639     * Gets the map value for `key`.
11640     *
11641     * @private
11642     * @name get
11643     * @memberOf MapCache
11644     * @param {string} key The key of the value to get.
11645     * @returns {*} Returns the entry value.
11646     */
11647    function mapCacheGet(key) {
11648      return getMapData(this, key).get(key);
11649    }
11650
11651    module.exports = mapCacheGet;
11652
11653
11654    /***/
11655  }),
11656/* 206 */
11657/***/ (function (module, exports, __webpack_require__) {
11658
11659    var getMapData = __webpack_require__(32);
11660
11661    /**
11662     * Checks if a map value for `key` exists.
11663     *
11664     * @private
11665     * @name has
11666     * @memberOf MapCache
11667     * @param {string} key The key of the entry to check.
11668     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11669     */
11670    function mapCacheHas(key) {
11671      return getMapData(this, key).has(key);
11672    }
11673
11674    module.exports = mapCacheHas;
11675
11676
11677    /***/
11678  }),
11679/* 207 */
11680/***/ (function (module, exports, __webpack_require__) {
11681
11682    var getMapData = __webpack_require__(32);
11683
11684    /**
11685     * Sets the map `key` to `value`.
11686     *
11687     * @private
11688     * @name set
11689     * @memberOf MapCache
11690     * @param {string} key The key of the value to set.
11691     * @param {*} value The value to set.
11692     * @returns {Object} Returns the map cache instance.
11693     */
11694    function mapCacheSet(key, value) {
11695      var data = getMapData(this, key),
11696        size = data.size;
11697
11698      data.set(key, value);
11699      this.size += data.size == size ? 0 : 1;
11700      return this;
11701    }
11702
11703    module.exports = mapCacheSet;
11704
11705
11706    /***/
11707  }),
11708/* 208 */
11709/***/ (function (module, exports, __webpack_require__) {
11710
11711    var Stack = __webpack_require__(88),
11712      equalArrays = __webpack_require__(93),
11713      equalByTag = __webpack_require__(214),
11714      equalObjects = __webpack_require__(218),
11715      getTag = __webpack_require__(56),
11716      isArray = __webpack_require__(1),
11717      isBuffer = __webpack_require__(50),
11718      isTypedArray = __webpack_require__(52);
11719
11720    /** Used to compose bitmasks for value comparisons. */
11721    var COMPARE_PARTIAL_FLAG = 1;
11722
11723    /** `Object#toString` result references. */
11724    var argsTag = '[object Arguments]',
11725      arrayTag = '[object Array]',
11726      objectTag = '[object Object]';
11727
11728    /** Used for built-in method references. */
11729    var objectProto = Object.prototype;
11730
11731    /** Used to check objects for own properties. */
11732    var hasOwnProperty = objectProto.hasOwnProperty;
11733
11734    /**
11735     * A specialized version of `baseIsEqual` for arrays and objects which performs
11736     * deep comparisons and tracks traversed objects enabling objects with circular
11737     * references to be compared.
11738     *
11739     * @private
11740     * @param {Object} object The object to compare.
11741     * @param {Object} other The other object to compare.
11742     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11743     * @param {Function} customizer The function to customize comparisons.
11744     * @param {Function} equalFunc The function to determine equivalents of values.
11745     * @param {Object} [stack] Tracks traversed `object` and `other` objects.
11746     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11747     */
11748    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
11749      var objIsArr = isArray(object),
11750        othIsArr = isArray(other),
11751        objTag = objIsArr ? arrayTag : getTag(object),
11752        othTag = othIsArr ? arrayTag : getTag(other);
11753
11754      objTag = objTag == argsTag ? objectTag : objTag;
11755      othTag = othTag == argsTag ? objectTag : othTag;
11756
11757      var objIsObj = objTag == objectTag,
11758        othIsObj = othTag == objectTag,
11759        isSameTag = objTag == othTag;
11760
11761      if (isSameTag && isBuffer(object)) {
11762        if (!isBuffer(other)) {
11763          return false;
11764        }
11765        objIsArr = true;
11766        objIsObj = false;
11767      }
11768      if (isSameTag && !objIsObj) {
11769        stack || (stack = new Stack);
11770        return (objIsArr || isTypedArray(object))
11771          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
11772          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
11773      }
11774      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
11775        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
11776          othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
11777
11778        if (objIsWrapped || othIsWrapped) {
11779          var objUnwrapped = objIsWrapped ? object.value() : object,
11780            othUnwrapped = othIsWrapped ? other.value() : other;
11781
11782          stack || (stack = new Stack);
11783          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
11784        }
11785      }
11786      if (!isSameTag) {
11787        return false;
11788      }
11789      stack || (stack = new Stack);
11790      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
11791    }
11792
11793    module.exports = baseIsEqualDeep;
11794
11795
11796    /***/
11797  }),
11798/* 209 */
11799/***/ (function (module, exports, __webpack_require__) {
11800
11801    var MapCache = __webpack_require__(48),
11802      setCacheAdd = __webpack_require__(210),
11803      setCacheHas = __webpack_require__(211);
11804
11805    /**
11806     *
11807     * Creates an array cache object to store unique values.
11808     *
11809     * @private
11810     * @constructor
11811     * @param {Array} [values] The values to cache.
11812     */
11813    function SetCache(values) {
11814      var index = -1,
11815        length = values == null ? 0 : values.length;
11816
11817      this.__data__ = new MapCache;
11818      while (++index < length) {
11819        this.add(values[index]);
11820      }
11821    }
11822
11823    // Add methods to `SetCache`.
11824    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
11825    SetCache.prototype.has = setCacheHas;
11826
11827    module.exports = SetCache;
11828
11829
11830    /***/
11831  }),
11832/* 210 */
11833/***/ (function (module, exports) {
11834
11835    /** Used to stand-in for `undefined` hash values. */
11836    var HASH_UNDEFINED = '__lodash_hash_undefined__';
11837
11838    /**
11839     * Adds `value` to the array cache.
11840     *
11841     * @private
11842     * @name add
11843     * @memberOf SetCache
11844     * @alias push
11845     * @param {*} value The value to cache.
11846     * @returns {Object} Returns the cache instance.
11847     */
11848    function setCacheAdd(value) {
11849      this.__data__.set(value, HASH_UNDEFINED);
11850      return this;
11851    }
11852
11853    module.exports = setCacheAdd;
11854
11855
11856    /***/
11857  }),
11858/* 211 */
11859/***/ (function (module, exports) {
11860
11861    /**
11862     * Checks if `value` is in the array cache.
11863     *
11864     * @private
11865     * @name has
11866     * @memberOf SetCache
11867     * @param {*} value The value to search for.
11868     * @returns {number} Returns `true` if `value` is found, else `false`.
11869     */
11870    function setCacheHas(value) {
11871      return this.__data__.has(value);
11872    }
11873
11874    module.exports = setCacheHas;
11875
11876
11877    /***/
11878  }),
11879/* 212 */
11880/***/ (function (module, exports) {
11881
11882    /**
11883     * A specialized version of `_.some` for arrays without support for iteratee
11884     * shorthands.
11885     *
11886     * @private
11887     * @param {Array} [array] The array to iterate over.
11888     * @param {Function} predicate The function invoked per iteration.
11889     * @returns {boolean} Returns `true` if any element passes the predicate check,
11890     *  else `false`.
11891     */
11892    function arraySome(array, predicate) {
11893      var index = -1,
11894        length = array == null ? 0 : array.length;
11895
11896      while (++index < length) {
11897        if (predicate(array[index], index, array)) {
11898          return true;
11899        }
11900      }
11901      return false;
11902    }
11903
11904    module.exports = arraySome;
11905
11906
11907    /***/
11908  }),
11909/* 213 */
11910/***/ (function (module, exports) {
11911
11912    /**
11913     * Checks if a `cache` value for `key` exists.
11914     *
11915     * @private
11916     * @param {Object} cache The cache to query.
11917     * @param {string} key The key of the entry to check.
11918     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11919     */
11920    function cacheHas(cache, key) {
11921      return cache.has(key);
11922    }
11923
11924    module.exports = cacheHas;
11925
11926
11927    /***/
11928  }),
11929/* 214 */
11930/***/ (function (module, exports, __webpack_require__) {
11931
11932    var Symbol = __webpack_require__(20),
11933      Uint8Array = __webpack_require__(215),
11934      eq = __webpack_require__(46),
11935      equalArrays = __webpack_require__(93),
11936      mapToArray = __webpack_require__(216),
11937      setToArray = __webpack_require__(217);
11938
11939    /** Used to compose bitmasks for value comparisons. */
11940    var COMPARE_PARTIAL_FLAG = 1,
11941      COMPARE_UNORDERED_FLAG = 2;
11942
11943    /** `Object#toString` result references. */
11944    var boolTag = '[object Boolean]',
11945      dateTag = '[object Date]',
11946      errorTag = '[object Error]',
11947      mapTag = '[object Map]',
11948      numberTag = '[object Number]',
11949      regexpTag = '[object RegExp]',
11950      setTag = '[object Set]',
11951      stringTag = '[object String]',
11952      symbolTag = '[object Symbol]';
11953
11954    var arrayBufferTag = '[object ArrayBuffer]',
11955      dataViewTag = '[object DataView]';
11956
11957    /** Used to convert symbols to primitives and strings. */
11958    var symbolProto = Symbol ? Symbol.prototype : undefined,
11959      symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
11960
11961    /**
11962     * A specialized version of `baseIsEqualDeep` for comparing objects of
11963     * the same `toStringTag`.
11964     *
11965     * **Note:** This function only supports comparing values with tags of
11966     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
11967     *
11968     * @private
11969     * @param {Object} object The object to compare.
11970     * @param {Object} other The other object to compare.
11971     * @param {string} tag The `toStringTag` of the objects to compare.
11972     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11973     * @param {Function} customizer The function to customize comparisons.
11974     * @param {Function} equalFunc The function to determine equivalents of values.
11975     * @param {Object} stack Tracks traversed `object` and `other` objects.
11976     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11977     */
11978    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
11979      switch (tag) {
11980        case dataViewTag:
11981          if ((object.byteLength != other.byteLength) ||
11982            (object.byteOffset != other.byteOffset)) {
11983            return false;
11984          }
11985          object = object.buffer;
11986          other = other.buffer;
11987
11988        case arrayBufferTag:
11989          if ((object.byteLength != other.byteLength) ||
11990            !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
11991            return false;
11992          }
11993          return true;
11994
11995        case boolTag:
11996        case dateTag:
11997        case numberTag:
11998          // Coerce booleans to `1` or `0` and dates to milliseconds.
11999          // Invalid dates are coerced to `NaN`.
12000          return eq(+object, +other);
12001
12002        case errorTag:
12003          return object.name == other.name && object.message == other.message;
12004
12005        case regexpTag:
12006        case stringTag:
12007          // Coerce regexes to strings and treat strings, primitives and objects,
12008          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
12009          // for more details.
12010          return object == (other + '');
12011
12012        case mapTag:
12013          var convert = mapToArray;
12014
12015        case setTag:
12016          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
12017          convert || (convert = setToArray);
12018
12019          if (object.size != other.size && !isPartial) {
12020            return false;
12021          }
12022          // Assume cyclic values are equal.
12023          var stacked = stack.get(object);
12024          if (stacked) {
12025            return stacked == other;
12026          }
12027          bitmask |= COMPARE_UNORDERED_FLAG;
12028
12029          // Recursively compare objects (susceptible to call stack limits).
12030          stack.set(object, other);
12031          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
12032          stack['delete'](object);
12033          return result;
12034
12035        case symbolTag:
12036          if (symbolValueOf) {
12037            return symbolValueOf.call(object) == symbolValueOf.call(other);
12038          }
12039      }
12040      return false;
12041    }
12042
12043    module.exports = equalByTag;
12044
12045
12046    /***/
12047  }),
12048/* 215 */
12049/***/ (function (module, exports, __webpack_require__) {
12050
12051    var root = __webpack_require__(5);
12052
12053    /** Built-in value references. */
12054    var Uint8Array = root.Uint8Array;
12055
12056    module.exports = Uint8Array;
12057
12058
12059    /***/
12060  }),
12061/* 216 */
12062/***/ (function (module, exports) {
12063
12064    /**
12065     * Converts `map` to its key-value pairs.
12066     *
12067     * @private
12068     * @param {Object} map The map to convert.
12069     * @returns {Array} Returns the key-value pairs.
12070     */
12071    function mapToArray(map) {
12072      var index = -1,
12073        result = Array(map.size);
12074
12075      map.forEach(function (value, key) {
12076        result[++index] = [key, value];
12077      });
12078      return result;
12079    }
12080
12081    module.exports = mapToArray;
12082
12083
12084    /***/
12085  }),
12086/* 217 */
12087/***/ (function (module, exports) {
12088
12089    /**
12090     * Converts `set` to an array of its values.
12091     *
12092     * @private
12093     * @param {Object} set The set to convert.
12094     * @returns {Array} Returns the values.
12095     */
12096    function setToArray(set) {
12097      var index = -1,
12098        result = Array(set.size);
12099
12100      set.forEach(function (value) {
12101        result[++index] = value;
12102      });
12103      return result;
12104    }
12105
12106    module.exports = setToArray;
12107
12108
12109    /***/
12110  }),
12111/* 218 */
12112/***/ (function (module, exports, __webpack_require__) {
12113
12114    var getAllKeys = __webpack_require__(219);
12115
12116    /** Used to compose bitmasks for value comparisons. */
12117    var COMPARE_PARTIAL_FLAG = 1;
12118
12119    /** Used for built-in method references. */
12120    var objectProto = Object.prototype;
12121
12122    /** Used to check objects for own properties. */
12123    var hasOwnProperty = objectProto.hasOwnProperty;
12124
12125    /**
12126     * A specialized version of `baseIsEqualDeep` for objects with support for
12127     * partial deep comparisons.
12128     *
12129     * @private
12130     * @param {Object} object The object to compare.
12131     * @param {Object} other The other object to compare.
12132     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
12133     * @param {Function} customizer The function to customize comparisons.
12134     * @param {Function} equalFunc The function to determine equivalents of values.
12135     * @param {Object} stack Tracks traversed `object` and `other` objects.
12136     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
12137     */
12138    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
12139      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
12140        objProps = getAllKeys(object),
12141        objLength = objProps.length,
12142        othProps = getAllKeys(other),
12143        othLength = othProps.length;
12144
12145      if (objLength != othLength && !isPartial) {
12146        return false;
12147      }
12148      var index = objLength;
12149      while (index--) {
12150        var key = objProps[index];
12151        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
12152          return false;
12153        }
12154      }
12155      // Check that cyclic values are equal.
12156      var objStacked = stack.get(object);
12157      var othStacked = stack.get(other);
12158      if (objStacked && othStacked) {
12159        return objStacked == other && othStacked == object;
12160      }
12161      var result = true;
12162      stack.set(object, other);
12163      stack.set(other, object);
12164
12165      var skipCtor = isPartial;
12166      while (++index < objLength) {
12167        key = objProps[index];
12168        var objValue = object[key],
12169          othValue = other[key];
12170
12171        if (customizer) {
12172          var compared = isPartial
12173            ? customizer(othValue, objValue, key, other, object, stack)
12174            : customizer(objValue, othValue, key, object, other, stack);
12175        }
12176        // Recursively compare objects (susceptible to call stack limits).
12177        if (!(compared === undefined
12178          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
12179          : compared
12180        )) {
12181          result = false;
12182          break;
12183        }
12184        skipCtor || (skipCtor = key == 'constructor');
12185      }
12186      if (result && !skipCtor) {
12187        var objCtor = object.constructor,
12188          othCtor = other.constructor;
12189
12190        // Non `Object` object instances with different constructors are not equal.
12191        if (objCtor != othCtor &&
12192          ('constructor' in object && 'constructor' in other) &&
12193          !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
12194            typeof othCtor == 'function' && othCtor instanceof othCtor)) {
12195          result = false;
12196        }
12197      }
12198      stack['delete'](object);
12199      stack['delete'](other);
12200      return result;
12201    }
12202
12203    module.exports = equalObjects;
12204
12205
12206    /***/
12207  }),
12208/* 219 */
12209/***/ (function (module, exports, __webpack_require__) {
12210
12211    var baseGetAllKeys = __webpack_require__(94),
12212      getSymbols = __webpack_require__(95),
12213      keys = __webpack_require__(33);
12214
12215    /**
12216     * Creates an array of own enumerable property names and symbols of `object`.
12217     *
12218     * @private
12219     * @param {Object} object The object to query.
12220     * @returns {Array} Returns the array of property names and symbols.
12221     */
12222    function getAllKeys(object) {
12223      return baseGetAllKeys(object, keys, getSymbols);
12224    }
12225
12226    module.exports = getAllKeys;
12227
12228
12229    /***/
12230  }),
12231/* 220 */
12232/***/ (function (module, exports) {
12233
12234    /**
12235     * A specialized version of `_.filter` for arrays without support for
12236     * iteratee shorthands.
12237     *
12238     * @private
12239     * @param {Array} [array] The array to iterate over.
12240     * @param {Function} predicate The function invoked per iteration.
12241     * @returns {Array} Returns the new filtered array.
12242     */
12243    function arrayFilter(array, predicate) {
12244      var index = -1,
12245        length = array == null ? 0 : array.length,
12246        resIndex = 0,
12247        result = [];
12248
12249      while (++index < length) {
12250        var value = array[index];
12251        if (predicate(value, index, array)) {
12252          result[resIndex++] = value;
12253        }
12254      }
12255      return result;
12256    }
12257
12258    module.exports = arrayFilter;
12259
12260
12261    /***/
12262  }),
12263/* 221 */
12264/***/ (function (module, exports) {
12265
12266    /**
12267     * The base implementation of `_.times` without support for iteratee shorthands
12268     * or max array length checks.
12269     *
12270     * @private
12271     * @param {number} n The number of times to invoke `iteratee`.
12272     * @param {Function} iteratee The function invoked per iteration.
12273     * @returns {Array} Returns the array of results.
12274     */
12275    function baseTimes(n, iteratee) {
12276      var index = -1,
12277        result = Array(n);
12278
12279      while (++index < n) {
12280        result[index] = iteratee(index);
12281      }
12282      return result;
12283    }
12284
12285    module.exports = baseTimes;
12286
12287
12288    /***/
12289  }),
12290/* 222 */
12291/***/ (function (module, exports, __webpack_require__) {
12292
12293    var baseGetTag = __webpack_require__(11),
12294      isObjectLike = __webpack_require__(9);
12295
12296    /** `Object#toString` result references. */
12297    var argsTag = '[object Arguments]';
12298
12299    /**
12300     * The base implementation of `_.isArguments`.
12301     *
12302     * @private
12303     * @param {*} value The value to check.
12304     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
12305     */
12306    function baseIsArguments(value) {
12307      return isObjectLike(value) && baseGetTag(value) == argsTag;
12308    }
12309
12310    module.exports = baseIsArguments;
12311
12312
12313    /***/
12314  }),
12315/* 223 */
12316/***/ (function (module, exports) {
12317
12318    /**
12319     * This method returns `false`.
12320     *
12321     * @static
12322     * @memberOf _
12323     * @since 4.13.0
12324     * @category Util
12325     * @returns {boolean} Returns `false`.
12326     * @example
12327     *
12328     * _.times(2, _.stubFalse);
12329     * // => [false, false]
12330     */
12331    function stubFalse() {
12332      return false;
12333    }
12334
12335    module.exports = stubFalse;
12336
12337
12338    /***/
12339  }),
12340/* 224 */
12341/***/ (function (module, exports, __webpack_require__) {
12342
12343    var baseGetTag = __webpack_require__(11),
12344      isLength = __webpack_require__(53),
12345      isObjectLike = __webpack_require__(9);
12346
12347    /** `Object#toString` result references. */
12348    var argsTag = '[object Arguments]',
12349      arrayTag = '[object Array]',
12350      boolTag = '[object Boolean]',
12351      dateTag = '[object Date]',
12352      errorTag = '[object Error]',
12353      funcTag = '[object Function]',
12354      mapTag = '[object Map]',
12355      numberTag = '[object Number]',
12356      objectTag = '[object Object]',
12357      regexpTag = '[object RegExp]',
12358      setTag = '[object Set]',
12359      stringTag = '[object String]',
12360      weakMapTag = '[object WeakMap]';
12361
12362    var arrayBufferTag = '[object ArrayBuffer]',
12363      dataViewTag = '[object DataView]',
12364      float32Tag = '[object Float32Array]',
12365      float64Tag = '[object Float64Array]',
12366      int8Tag = '[object Int8Array]',
12367      int16Tag = '[object Int16Array]',
12368      int32Tag = '[object Int32Array]',
12369      uint8Tag = '[object Uint8Array]',
12370      uint8ClampedTag = '[object Uint8ClampedArray]',
12371      uint16Tag = '[object Uint16Array]',
12372      uint32Tag = '[object Uint32Array]';
12373
12374    /** Used to identify `toStringTag` values of typed arrays. */
12375    var typedArrayTags = {};
12376    typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
12377      typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
12378      typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
12379      typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
12380      typedArrayTags[uint32Tag] = true;
12381    typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
12382      typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
12383      typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
12384      typedArrayTags[errorTag] = typedArrayTags[funcTag] =
12385      typedArrayTags[mapTag] = typedArrayTags[numberTag] =
12386      typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
12387      typedArrayTags[setTag] = typedArrayTags[stringTag] =
12388      typedArrayTags[weakMapTag] = false;
12389
12390    /**
12391     * The base implementation of `_.isTypedArray` without Node.js optimizations.
12392     *
12393     * @private
12394     * @param {*} value The value to check.
12395     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
12396     */
12397    function baseIsTypedArray(value) {
12398      return isObjectLike(value) &&
12399        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
12400    }
12401
12402    module.exports = baseIsTypedArray;
12403
12404
12405    /***/
12406  }),
12407/* 225 */
12408/***/ (function (module, exports) {
12409
12410    /**
12411     * The base implementation of `_.unary` without support for storing metadata.
12412     *
12413     * @private
12414     * @param {Function} func The function to cap arguments for.
12415     * @returns {Function} Returns the new capped function.
12416     */
12417    function baseUnary(func) {
12418      return function (value) {
12419        return func(value);
12420      };
12421    }
12422
12423    module.exports = baseUnary;
12424
12425
12426    /***/
12427  }),
12428/* 226 */
12429/***/ (function (module, exports, __webpack_require__) {
12430
12431/* WEBPACK VAR INJECTION */(function (module) {
12432      var freeGlobal = __webpack_require__(90);
12433
12434      /** Detect free variable `exports`. */
12435      var freeExports = true && exports && !exports.nodeType && exports;
12436
12437      /** Detect free variable `module`. */
12438      var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
12439
12440      /** Detect the popular CommonJS extension `module.exports`. */
12441      var moduleExports = freeModule && freeModule.exports === freeExports;
12442
12443      /** Detect free variable `process` from Node.js. */
12444      var freeProcess = moduleExports && freeGlobal.process;
12445
12446      /** Used to access faster Node.js helpers. */
12447      var nodeUtil = (function () {
12448        try {
12449          // Use `util.types` for Node.js 10+.
12450          var types = freeModule && freeModule.require && freeModule.require('util').types;
12451
12452          if (types) {
12453            return types;
12454          }
12455
12456          // Legacy `process.binding('util')` for Node.js < 10.
12457          return freeProcess && freeProcess.binding && freeProcess.binding('util');
12458        } catch (e) { }
12459      }());
12460
12461      module.exports = nodeUtil;
12462
12463      /* WEBPACK VAR INJECTION */
12464    }.call(this, __webpack_require__(98)(module)))
12465
12466    /***/
12467  }),
12468/* 227 */
12469/***/ (function (module, exports, __webpack_require__) {
12470
12471    var overArg = __webpack_require__(99);
12472
12473    /* Built-in method references for those with the same name as other `lodash` methods. */
12474    var nativeKeys = overArg(Object.keys, Object);
12475
12476    module.exports = nativeKeys;
12477
12478
12479    /***/
12480  }),
12481/* 228 */
12482/***/ (function (module, exports, __webpack_require__) {
12483
12484    var getNative = __webpack_require__(8),
12485      root = __webpack_require__(5);
12486
12487    /* Built-in method references that are verified to be native. */
12488    var DataView = getNative(root, 'DataView');
12489
12490    module.exports = DataView;
12491
12492
12493    /***/
12494  }),
12495/* 229 */
12496/***/ (function (module, exports, __webpack_require__) {
12497
12498    var getNative = __webpack_require__(8),
12499      root = __webpack_require__(5);
12500
12501    /* Built-in method references that are verified to be native. */
12502    var Promise = getNative(root, 'Promise');
12503
12504    module.exports = Promise;
12505
12506
12507    /***/
12508  }),
12509/* 230 */
12510/***/ (function (module, exports, __webpack_require__) {
12511
12512    var getNative = __webpack_require__(8),
12513      root = __webpack_require__(5);
12514
12515    /* Built-in method references that are verified to be native. */
12516    var Set = getNative(root, 'Set');
12517
12518    module.exports = Set;
12519
12520
12521    /***/
12522  }),
12523/* 231 */
12524/***/ (function (module, exports, __webpack_require__) {
12525
12526    var isStrictComparable = __webpack_require__(101),
12527      keys = __webpack_require__(33);
12528
12529    /**
12530     * Gets the property names, values, and compare flags of `object`.
12531     *
12532     * @private
12533     * @param {Object} object The object to query.
12534     * @returns {Array} Returns the match data of `object`.
12535     */
12536    function getMatchData(object) {
12537      var result = keys(object),
12538        length = result.length;
12539
12540      while (length--) {
12541        var key = result[length],
12542          value = object[key];
12543
12544        result[length] = [key, value, isStrictComparable(value)];
12545      }
12546      return result;
12547    }
12548
12549    module.exports = getMatchData;
12550
12551
12552    /***/
12553  }),
12554/* 232 */
12555/***/ (function (module, exports, __webpack_require__) {
12556
12557    var baseIsEqual = __webpack_require__(92),
12558      get = __webpack_require__(57),
12559      hasIn = __webpack_require__(238),
12560      isKey = __webpack_require__(59),
12561      isStrictComparable = __webpack_require__(101),
12562      matchesStrictComparable = __webpack_require__(102),
12563      toKey = __webpack_require__(21);
12564
12565    /** Used to compose bitmasks for value comparisons. */
12566    var COMPARE_PARTIAL_FLAG = 1,
12567      COMPARE_UNORDERED_FLAG = 2;
12568
12569    /**
12570     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
12571     *
12572     * @private
12573     * @param {string} path The path of the property to get.
12574     * @param {*} srcValue The value to match.
12575     * @returns {Function} Returns the new spec function.
12576     */
12577    function baseMatchesProperty(path, srcValue) {
12578      if (isKey(path) && isStrictComparable(srcValue)) {
12579        return matchesStrictComparable(toKey(path), srcValue);
12580      }
12581      return function (object) {
12582        var objValue = get(object, path);
12583        return (objValue === undefined && objValue === srcValue)
12584          ? hasIn(object, path)
12585          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
12586      };
12587    }
12588
12589    module.exports = baseMatchesProperty;
12590
12591
12592    /***/
12593  }),
12594/* 233 */
12595/***/ (function (module, exports, __webpack_require__) {
12596
12597    var memoizeCapped = __webpack_require__(234);
12598
12599    /** Used to match property names within property paths. */
12600    var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
12601
12602    /** Used to match backslashes in property paths. */
12603    var reEscapeChar = /\\(\\)?/g;
12604
12605    /**
12606     * Converts `string` to a property path array.
vendor: 5,693 bytes, lines 12607-12804
12607     *
12608     * @private
12609     * @param {string} string The string to convert.
12610     * @returns {Array} Returns the property path array.
12611     */
12612    var stringToPath = memoizeCapped(function (string) {
12613      var result = [];
12614      if (string.charCodeAt(0) === 46 /* . */) {
12615        result.push('');
12616      }
12617      string.replace(rePropName, function (match, number, quote, subString) {
12618        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
12619      });
12620      return result;
12621    });
12622
12623    module.exports = stringToPath;
12624
12625
12626    /***/
12627  }),
12628/* 234 */
12629/***/ (function (module, exports, __webpack_require__) {
12630
12631    var memoize = __webpack_require__(235);
12632
12633    /** Used as the maximum memoize cache size. */
12634    var MAX_MEMOIZE_SIZE = 500;
12635
12636    /**
12637     * A specialized version of `_.memoize` which clears the memoized function's
12638     * cache when it exceeds `MAX_MEMOIZE_SIZE`.
12639     *
12640     * @private
12641     * @param {Function} func The function to have its output memoized.
12642     * @returns {Function} Returns the new memoized function.
12643     */
12644    function memoizeCapped(func) {
12645      var result = memoize(func, function (key) {
12646        if (cache.size === MAX_MEMOIZE_SIZE) {
12647          cache.clear();
12648        }
12649        return key;
12650      });
12651
12652      var cache = result.cache;
12653      return result;
12654    }
12655
12656    module.exports = memoizeCapped;
12657
12658
12659    /***/
12660  }),
12661/* 235 */
12662/***/ (function (module, exports, __webpack_require__) {
12663
12664    var MapCache = __webpack_require__(48);
12665
12666    /** Error message constants. */
12667    var FUNC_ERROR_TEXT = 'Expected a function';
12668
12669    /**
12670     * Creates a function that memoizes the result of `func`. If `resolver` is
12671     * provided, it determines the cache key for storing the result based on the
12672     * arguments provided to the memoized function. By default, the first argument
12673     * provided to the memoized function is used as the map cache key. The `func`
12674     * is invoked with the `this` binding of the memoized function.
12675     *
12676     * **Note:** The cache is exposed as the `cache` property on the memoized
12677     * function. Its creation may be customized by replacing the `_.memoize.Cache`
12678     * constructor with one whose instances implement the
12679     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
12680     * method interface of `clear`, `delete`, `get`, `has`, and `set`.
12681     *
12682     * @static
12683     * @memberOf _
12684     * @since 0.1.0
12685     * @category Function
12686     * @param {Function} func The function to have its output memoized.
12687     * @param {Function} [resolver] The function to resolve the cache key.
12688     * @returns {Function} Returns the new memoized function.
12689     * @example
12690     *
12691     * var object = { 'a': 1, 'b': 2 };
12692     * var other = { 'c': 3, 'd': 4 };
12693     *
12694     * var values = _.memoize(_.values);
12695     * values(object);
12696     * // => [1, 2]
12697     *
12698     * values(other);
12699     * // => [3, 4]
12700     *
12701     * object.a = 2;
12702     * values(object);
12703     * // => [1, 2]
12704     *
12705     * // Modify the result cache.
12706     * values.cache.set(object, ['a', 'b']);
12707     * values(object);
12708     * // => ['a', 'b']
12709     *
12710     * // Replace `_.memoize.Cache`.
12711     * _.memoize.Cache = WeakMap;
12712     */
12713    function memoize(func, resolver) {
12714      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
12715        throw new TypeError(FUNC_ERROR_TEXT);
12716      }
12717      var memoized = function () {
12718        var args = arguments,
12719          key = resolver ? resolver.apply(this, args) : args[0],
12720          cache = memoized.cache;
12721
12722        if (cache.has(key)) {
12723          return cache.get(key);
12724        }
12725        var result = func.apply(this, args);
12726        memoized.cache = cache.set(key, result) || cache;
12727        return result;
12728      };
12729      memoized.cache = new (memoize.Cache || MapCache);
12730      return memoized;
12731    }
12732
12733    // Expose `MapCache`.
12734    memoize.Cache = MapCache;
12735
12736    module.exports = memoize;
12737
12738
12739    /***/
12740  }),
12741/* 236 */
12742/***/ (function (module, exports, __webpack_require__) {
12743
12744    var baseToString = __webpack_require__(237);
12745
12746    /**
12747     * Converts `value` to a string. An empty string is returned for `null`
12748     * and `undefined` values. The sign of `-0` is preserved.
12749     *
12750     * @static
12751     * @memberOf _
12752     * @since 4.0.0
12753     * @category Lang
12754     * @param {*} value The value to convert.
12755     * @returns {string} Returns the converted string.
12756     * @example
12757     *
12758     * _.toString(null);
12759     * // => ''
12760     *
12761     * _.toString(-0);
12762     * // => '-0'
12763     *
12764     * _.toString([1, 2, 3]);
12765     * // => '1,2,3'
12766     */
12767    function toString(value) {
12768      return value == null ? '' : baseToString(value);
12769    }
12770
12771    module.exports = toString;
12772
12773
12774    /***/
12775  }),
12776/* 237 */
12777/***/ (function (module, exports, __webpack_require__) {
12778
12779    var Symbol = __webpack_require__(20),
12780      arrayMap = __webpack_require__(103),
12781      isArray = __webpack_require__(1),
12782      isSymbol = __webpack_require__(36);
12783
12784    /** Used as references for various `Number` constants. */
12785    var INFINITY = 1 / 0;
12786
12787    /** Used to convert symbols to primitives and strings. */
12788    var symbolProto = Symbol ? Symbol.prototype : undefined,
12789      symbolToString = symbolProto ? symbolProto.toString : undefined;
12790
12791    /**
12792     * The base implementation of `_.toString` which doesn't convert nullish
12793     * values to empty strings.
12794     *
12795     * @private
12796     * @param {*} value The value to process.
12797     * @returns {string} Returns the string.
12798     */
12799    function baseToString(value) {
12800      // Exit early for strings to avoid a performance hit in some environments.
12801      if (typeof value == 'string') {
12802        return value;
12803      }
12804      if (isArray(value)) {
vendor: 2,665 bytes, lines 12805-12905
12805        // Recursively convert values (susceptible to call stack limits).
12806        return arrayMap(value, baseToString) + '';
12807      }
12808      if (isSymbol(value)) {
12809        return symbolToString ? symbolToString.call(value) : '';
12810      }
12811      var result = (value + '');
12812      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
12813    }
12814
12815    module.exports = baseToString;
12816
12817
12818    /***/
12819  }),
12820/* 238 */
12821/***/ (function (module, exports, __webpack_require__) {
12822
12823    var baseHasIn = __webpack_require__(239),
12824      hasPath = __webpack_require__(240);
12825
12826    /**
12827     * Checks if `path` is a direct or inherited property of `object`.
12828     *
12829     * @static
12830     * @memberOf _
12831     * @since 4.0.0
12832     * @category Object
12833     * @param {Object} object The object to query.
12834     * @param {Array|string} path The path to check.
12835     * @returns {boolean} Returns `true` if `path` exists, else `false`.
12836     * @example
12837     *
12838     * var object = _.create({ 'a': _.create({ 'b': 2 }) });
12839     *
12840     * _.hasIn(object, 'a');
12841     * // => true
12842     *
12843     * _.hasIn(object, 'a.b');
12844     * // => true
12845     *
12846     * _.hasIn(object, ['a', 'b']);
12847     * // => true
12848     *
12849     * _.hasIn(object, 'b');
12850     * // => false
12851     */
12852    function hasIn(object, path) {
12853      return object != null && hasPath(object, path, baseHasIn);
12854    }
12855
12856    module.exports = hasIn;
12857
12858
12859    /***/
12860  }),
12861/* 239 */
12862/***/ (function (module, exports) {
12863
12864    /**
12865     * The base implementation of `_.hasIn` without support for deep paths.
12866     *
12867     * @private
12868     * @param {Object} [object] The object to query.
12869     * @param {Array|string} key The key to check.
12870     * @returns {boolean} Returns `true` if `key` exists, else `false`.
12871     */
12872    function baseHasIn(object, key) {
12873      return object != null && key in Object(object);
12874    }
12875
12876    module.exports = baseHasIn;
12877
12878
12879    /***/
12880  }),
12881/* 240 */
12882/***/ (function (module, exports, __webpack_require__) {
12883
12884    var castPath = __webpack_require__(35),
12885      isArguments = __webpack_require__(34),
12886      isArray = __webpack_require__(1),
12887      isIndex = __webpack_require__(51),
12888      isLength = __webpack_require__(53),
12889      toKey = __webpack_require__(21);
12890
12891    /**
12892     * Checks if `path` exists on `object`.
12893     *
12894     * @private
12895     * @param {Object} object The object to query.
12896     * @param {Array|string} path The path to check.
12897     * @param {Function} hasFunc The function to check properties.
12898     * @returns {boolean} Returns `true` if `path` exists, else `false`.
12899     */
12900    function hasPath(object, path, hasFunc) {
12901      path = castPath(path, object);
12902
12903      var index = -1,
12904        length = path.length,
12905        result = false;
vendor: 4,214 bytes, lines 12906-13058
12906
12907      while (++index < length) {
12908        var key = toKey(path[index]);
12909        if (!(result = object != null && hasFunc(object, key))) {
12910          break;
12911        }
12912        object = object[key];
12913      }
12914      if (result || ++index != length) {
12915        return result;
12916      }
12917      length = object == null ? 0 : object.length;
12918      return !!length && isLength(length) && isIndex(key, length) &&
12919        (isArray(object) || isArguments(object));
12920    }
12921
12922    module.exports = hasPath;
12923
12924
12925    /***/
12926  }),
12927/* 241 */
12928/***/ (function (module, exports, __webpack_require__) {
12929
12930    var baseProperty = __webpack_require__(104),
12931      basePropertyDeep = __webpack_require__(242),
12932      isKey = __webpack_require__(59),
12933      toKey = __webpack_require__(21);
12934
12935    /**
12936     * Creates a function that returns the value at `path` of a given object.
12937     *
12938     * @static
12939     * @memberOf _
12940     * @since 2.4.0
12941     * @category Util
12942     * @param {Array|string} path The path of the property to get.
12943     * @returns {Function} Returns the new accessor function.
12944     * @example
12945     *
12946     * var objects = [
12947     *   { 'a': { 'b': 2 } },
12948     *   { 'a': { 'b': 1 } }
12949     * ];
12950     *
12951     * _.map(objects, _.property('a.b'));
12952     * // => [2, 1]
12953     *
12954     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
12955     * // => [1, 2]
12956     */
12957    function property(path) {
12958      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
12959    }
12960
12961    module.exports = property;
12962
12963
12964    /***/
12965  }),
12966/* 242 */
12967/***/ (function (module, exports, __webpack_require__) {
12968
12969    var baseGet = __webpack_require__(58);
12970
12971    /**
12972     * A specialized version of `baseProperty` which supports deep paths.
12973     *
12974     * @private
12975     * @param {Array|string} path The path of the property to get.
12976     * @returns {Function} Returns the new accessor function.
12977     */
12978    function basePropertyDeep(path) {
12979      return function (object) {
12980        return baseGet(object, path);
12981      };
12982    }
12983
12984    module.exports = basePropertyDeep;
12985
12986
12987    /***/
12988  }),
12989/* 243 */
12990/***/ (function (module, exports, __webpack_require__) {
12991
12992    var baseFindIndex = __webpack_require__(105),
12993      baseIteratee = __webpack_require__(7),
12994      toInteger = __webpack_require__(106);
12995
12996    /* Built-in method references for those with the same name as other `lodash` methods. */
12997    var nativeMax = Math.max;
12998
12999    /**
13000     * This method is like `_.find` except that it returns the index of the first
13001     * element `predicate` returns truthy for instead of the element itself.
13002     *
13003     * @static
13004     * @memberOf _
13005     * @since 1.1.0
13006     * @category Array
13007     * @param {Array} array The array to inspect.
13008     * @param {Function} [predicate=_.identity] The function invoked per iteration.
13009     * @param {number} [fromIndex=0] The index to search from.
13010     * @returns {number} Returns the index of the found element, else `-1`.
13011     * @example
13012     *
13013     * var users = [
13014     *   { 'user': 'barney',  'active': false },
13015     *   { 'user': 'fred',    'active': false },
13016     *   { 'user': 'pebbles', 'active': true }
13017     * ];
13018     *
13019     * _.findIndex(users, function(o) { return o.user == 'barney'; });
13020     * // => 0
13021     *
13022     * // The `_.matches` iteratee shorthand.
13023     * _.findIndex(users, { 'user': 'fred', 'active': false });
13024     * // => 1
13025     *
13026     * // The `_.matchesProperty` iteratee shorthand.
13027     * _.findIndex(users, ['active', false]);
13028     * // => 0
13029     *
13030     * // The `_.property` iteratee shorthand.
13031     * _.findIndex(users, 'active');
13032     * // => 2
13033     */
13034    function findIndex(array, predicate, fromIndex) {
13035      var length = array == null ? 0 : array.length;
13036      if (!length) {
13037        return -1;
13038      }
13039      var index = fromIndex == null ? 0 : toInteger(fromIndex);
13040      if (index < 0) {
13041        index = nativeMax(length + index, 0);
13042      }
13043      return baseFindIndex(array, baseIteratee(predicate, 3), index);
13044    }
13045
13046    module.exports = findIndex;
13047
13048
13049    /***/
13050  }),
13051/* 244 */
13052/***/ (function (module, exports, __webpack_require__) {
13053
13054    var toNumber = __webpack_require__(61);
13055
13056    /** Used as references for various `Number` constants. */
13057    var INFINITY = 1 / 0,
13058      MAX_INTEGER = 1.7976931348623157e+308;
13059
13060    /**
13061     * Converts `value` to a finite number.
13062     *
13063     * @static
13064     * @memberOf _
13065     * @since 4.12.0
13066     * @category Lang
13067     * @param {*} value The value to convert.
13068     * @returns {number} Returns the converted number.
13069     * @example
13070     *
13071     * _.toFinite(3.2);
13072     * // => 3.2
13073     *
13074     * _.toFinite(Number.MIN_VALUE);
13075     * // => 5e-324
13076     *
13077     * _.toFinite(Infinity);
13078     * // => 1.7976931348623157e+308
13079     *
13080     * _.toFinite('3.2');
13081     * // => 3.2
13082     */
13083    function toFinite(value) {
13084      if (!value) {
13085        return value === 0 ? value : 0;
13086      }
13087      value = toNumber(value);
13088      if (value === INFINITY || value === -INFINITY) {
13089        var sign = (value < 0 ? -1 : 1);
13090        return sign * MAX_INTEGER;
13091      }
13092      return value === value ? value : 0;
13093    }
13094
13095    module.exports = toFinite;
13096
13097
13098    /***/
13099  }),
13100/* 245 */
13101/***/ (function (module, exports) {
13102
13103    function _arrayWithoutHoles(arr) {
13104      if (Array.isArray(arr)) {
13105        for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
13106          arr2[i] = arr[i];
13107        }
13108
13109        return arr2;
13110      }
13111    }
13112
13113    module.exports = _arrayWithoutHoles;
13114
13115    /***/
13116  }),
13117/* 246 */
13118/***/ (function (module, exports) {
13119
13120    function _iterableToArray(iter) {
13121      if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
13122    }
13123
13124    module.exports = _iterableToArray;
13125
13126    /***/
13127  }),
13128/* 247 */
13129/***/ (function (module, exports) {
13130
13131    function _nonIterableSpread() {
13132      throw new TypeError("Invalid attempt to spread non-iterable instance");
13133    }
13134
13135    module.exports = _nonIterableSpread;
13136
13137    /***/
13138  }),
13139/* 248 */
13140/***/ (function (module, exports, __webpack_require__) {
13141
13142    "use strict";
13143
13144
13145    Object.defineProperty(exports, "__esModule", {
13146      value: true
13147    });
13148    exports.createElementState = createElementState;
13149    exports.mergeActionState = mergeActionState;
13150    exports.ixElements = void 0;
13151
13152    var _timm = __webpack_require__(19);
13153
13154    var _constants = __webpack_require__(2);
13155
13156    var _constants$IX2EngineC = _constants.IX2EngineConstants,
13157      HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
13158      PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
13159      ABSTRACT_NODE = _constants$IX2EngineC.ABSTRACT_NODE,
13160      CONFIG_X_VALUE = _constants$IX2EngineC.CONFIG_X_VALUE,
13161      CONFIG_Y_VALUE = _constants$IX2EngineC.CONFIG_Y_VALUE,
13162      CONFIG_Z_VALUE = _constants$IX2EngineC.CONFIG_Z_VALUE,
13163      CONFIG_VALUE = _constants$IX2EngineC.CONFIG_VALUE,
13164      CONFIG_X_UNIT = _constants$IX2EngineC.CONFIG_X_UNIT,
13165      CONFIG_Y_UNIT = _constants$IX2EngineC.CONFIG_Y_UNIT,
13166      CONFIG_Z_UNIT = _constants$IX2EngineC.CONFIG_Z_UNIT,
13167      CONFIG_UNIT = _constants$IX2EngineC.CONFIG_UNIT;
13168    var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
13169      IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
13170      IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
13171      IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED;
13172    var initialState = {};
13173    var refState = 'refState';
13174
13175    var ixElements = function ixElements() {
13176      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
13177      var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13178
13179      switch (action.type) {
13180        case IX2_SESSION_STOPPED:
13181          {
13182            return initialState;
13183          }
13184
13185        case IX2_INSTANCE_ADDED:
13186          {
13187            var _action$payload = action.payload,
13188              elementId = _action$payload.elementId,
13189              ref = _action$payload.element,
13190              origin = _action$payload.origin,
13191              actionItem = _action$payload.actionItem,
13192              refType = _action$payload.refType;
13193            var actionTypeId = actionItem.actionTypeId;
13194            var newState = state; // Create new ref entry if it doesn't exist
13195
13196            if ((0, _timm.getIn)(newState, [elementId, ref]) !== ref) {
13197              newState = createElementState(newState, ref, refType, elementId, actionItem);
13198            } // Merge origin values into ref state
13199
13200
13201            return mergeActionState(newState, elementId, actionTypeId, origin, actionItem);
13202          }
13203
13204        case IX2_ELEMENT_STATE_CHANGED:
13205          {
13206            var _action$payload2 = action.payload,
13207              _elementId = _action$payload2.elementId,
13208              _actionTypeId = _action$payload2.actionTypeId,
13209              current = _action$payload2.current,
13210              _actionItem = _action$payload2.actionItem;
13211            return mergeActionState(state, _elementId, _actionTypeId, current, _actionItem);
13212          }
13213
13214        default:
13215          {
13216            return state;
13217          }
13218      }
13219    };
13220
13221    exports.ixElements = ixElements;
13222
13223    function createElementState(state, ref, refType, elementId, actionItem) {
13224      var refId = refType === PLAIN_OBJECT ? (0, _timm.getIn)(actionItem, ['config', 'target', 'objectId']) : null;
13225      return (0, _timm.mergeIn)(state, [elementId], {
13226        id: elementId,
13227        ref: ref,
13228        refId: refId,
13229        refType: refType
13230      });
13231    }
13232
13233    function mergeActionState(state, elementId, actionTypeId, actionState, // FIXME: weak type is used
13234      actionItem) {
13235      var units = pickUnits(actionItem);
13236      var mergePath = [elementId, refState, actionTypeId];
13237      return (0, _timm.mergeIn)(state, mergePath, actionState, units);
13238    }
13239
13240    var 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
13241    // eslint-disable-next-line flowtype/no-weak-types
13242
13243    function pickUnits(actionItem) {
13244      var config = actionItem.config;
13245      return valueUnitPairs.reduce(function (result, pair) {
13246        var valueKey = pair[0];
13247        var unitKey = pair[1];
13248        var configValue = config[valueKey];
13249        var configUnit = config[unitKey];
13250
13251        if (configValue != null && configUnit != null) {
13252          result[unitKey] = configUnit;
13253        }
13254
13255        return result;
13256      }, {});
13257    }
13258
13259    /***/
13260  }),
13261/* 249 */
13262/***/ (function (module, exports, __webpack_require__) {
13263
13264    "use strict";
13265
13266
13267    Object.defineProperty(exports, "__esModule", {
13268      value: true
13269    });
13270    exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginDuration = exports.getPluginConfig = void 0;
13271    /* eslint-env browser */
13272    // $FlowFixMe
13273
13274    var getPluginConfig = function getPluginConfig(actionItemConfig) {
13275      return actionItemConfig.value;
13276    }; // $FlowFixMe
13277
13278
13279    exports.getPluginConfig = getPluginConfig;
13280
13281    var getPluginDuration = function getPluginDuration(element, actionItem) {
13282      if (actionItem.config.duration !== 'auto') {
13283        return null;
13284      }
13285
13286      var duration = parseFloat(element.getAttribute('data-duration'));
13287
13288      if (duration > 0) {
13289        return duration * 1000;
13290      }
13291
13292      return parseFloat(element.getAttribute('data-default-duration')) * 1000;
13293    }; // $FlowFixMe
13294
13295
13296    exports.getPluginDuration = getPluginDuration;
13297
13298    var getPluginOrigin = function getPluginOrigin(refState) {
13299      return refState || {
13300        value: 0
13301      };
13302    }; // $FlowFixMe
13303
13304
13305    exports.getPluginOrigin = getPluginOrigin;
13306
13307    var getPluginDestination = function getPluginDestination(actionItemConfig) {
13308      return {
13309        value: actionItemConfig.value
13310      };
13311    }; // $FlowFixMe
13312
13313
13314    exports.getPluginDestination = getPluginDestination;
13315
13316    var createPluginInstance = function createPluginInstance(element) {
13317      var instance = window.Webflow.require('lottie').createInstance(element);
13318
13319      instance.stop();
13320      instance.setSubframe(true);
13321      return instance;
13322    }; // $FlowFixMe
13323
13324
13325    exports.createPluginInstance = createPluginInstance;
13326
13327    var renderPlugin = function renderPlugin(pluginInstance, refState, actionItem) {
13328      if (!pluginInstance) {
13329        return;
13330      }
13331
13332      var percent = refState[actionItem.actionTypeId].value / 100;
13333      pluginInstance.goToFrame(pluginInstance.frames * percent);
13334    }; // $FlowFixMe
13335
13336
13337    exports.renderPlugin = renderPlugin;
13338
13339    var clearPlugin = function clearPlugin(element) {
13340      var instance = window.Webflow.require('lottie').createInstance(element);
13341
13342      instance.stop();
13343    };
13344
13345    exports.clearPlugin = clearPlugin;
13346
13347    /***/
13348  }),
13349/* 250 */
13350/***/ (function (module, exports, __webpack_require__) {
13351
13352    "use strict";
13353
13354
13355    var _interopRequireDefault2 = __webpack_require__(0);
13356
13357    var _typeof2 = _interopRequireDefault2(__webpack_require__(13));
13358
13359    var _defineProperty2 = _interopRequireDefault2(__webpack_require__(27));
13360
13361    var _Object$freeze, _Object$freeze2, _transformDefaults;
13362
13363    var _interopRequireDefault = __webpack_require__(0);
13364
13365    Object.defineProperty(exports, "__esModule", {
13366      value: true
13367    });
13368    exports.getInstanceId = getInstanceId;
13369    exports.getElementId = getElementId;
13370    exports.reifyState = reifyState;
13371    exports.observeStore = observeStore;
13372    exports.getAffectedElements = getAffectedElements;
13373    exports.getComputedStyle = getComputedStyle;
13374    exports.getInstanceOrigin = getInstanceOrigin;
13375    exports.getDestinationValues = getDestinationValues;
13376    exports.getRenderType = getRenderType;
13377    exports.getStyleProp = getStyleProp;
13378    exports.renderHTMLElement = renderHTMLElement;
13379    exports.clearAllStyles = clearAllStyles;
13380    exports.cleanupHTMLElement = cleanupHTMLElement;
13381    exports.getMaxDurationItemIndex = getMaxDurationItemIndex;
13382    exports.getActionListProgress = getActionListProgress;
13383    exports.reduceListToGroup = reduceListToGroup;
13384    exports.shouldNamespaceEventParameter = shouldNamespaceEventParameter;
13385    exports.getNamespacedParameterId = getNamespacedParameterId;
13386    exports.shouldAllowMediaQuery = shouldAllowMediaQuery;
13387    exports.mediaQueriesEqual = mediaQueriesEqual;
13388    exports.stringifyTarget = stringifyTarget;
13389    exports.getItemConfigByKey = void 0;
13390
13391    var _defaultTo = _interopRequireDefault(__webpack_require__(251));
13392
13393    var _reduce = _interopRequireDefault(__webpack_require__(252));
13394
13395    var _findLast = _interopRequireDefault(__webpack_require__(258));
13396
13397    var _timm = __webpack_require__(19);
13398
13399    var _shallowEqual = _interopRequireDefault(__webpack_require__(114));
13400
13401    var _constants = __webpack_require__(2);
13402
13403    var _IX2EasingUtils = __webpack_require__(109);
13404
13405    var _IX2VanillaPlugins = __webpack_require__(111);
13406
13407    var _IX2BrowserSupport = __webpack_require__(45);
13408    /* eslint-env browser */
13409
13410
13411    var _constants$IX2EngineC = _constants.IX2EngineConstants,
13412      BACKGROUND = _constants$IX2EngineC.BACKGROUND,
13413      TRANSFORM = _constants$IX2EngineC.TRANSFORM,
13414      TRANSLATE_3D = _constants$IX2EngineC.TRANSLATE_3D,
13415      SCALE_3D = _constants$IX2EngineC.SCALE_3D,
13416      ROTATE_X = _constants$IX2EngineC.ROTATE_X,
13417      ROTATE_Y = _constants$IX2EngineC.ROTATE_Y,
13418      ROTATE_Z = _constants$IX2EngineC.ROTATE_Z,
13419      SKEW = _constants$IX2EngineC.SKEW,
13420      PRESERVE_3D = _constants$IX2EngineC.PRESERVE_3D,
13421      FLEX = _constants$IX2EngineC.FLEX,
13422      OPACITY = _constants$IX2EngineC.OPACITY,
13423      FILTER = _constants$IX2EngineC.FILTER,
13424      WIDTH = _constants$IX2EngineC.WIDTH,
13425      HEIGHT = _constants$IX2EngineC.HEIGHT,
13426      BACKGROUND_COLOR = _constants$IX2EngineC.BACKGROUND_COLOR,
13427      BORDER_COLOR = _constants$IX2EngineC.BORDER_COLOR,
13428      COLOR = _constants$IX2EngineC.COLOR,
13429      CHILDREN = _constants$IX2EngineC.CHILDREN,
13430      IMMEDIATE_CHILDREN = _constants$IX2EngineC.IMMEDIATE_CHILDREN,
13431      SIBLINGS = _constants$IX2EngineC.SIBLINGS,
13432      PARENT = _constants$IX2EngineC.PARENT,
13433      DISPLAY = _constants$IX2EngineC.DISPLAY,
13434      WILL_CHANGE = _constants$IX2EngineC.WILL_CHANGE,
13435      AUTO = _constants$IX2EngineC.AUTO,
13436      COMMA_DELIMITER = _constants$IX2EngineC.COMMA_DELIMITER,
13437      COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
13438      BAR_DELIMITER = _constants$IX2EngineC.BAR_DELIMITER,
13439      RENDER_TRANSFORM = _constants$IX2EngineC.RENDER_TRANSFORM,
13440      RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
13441      RENDER_STYLE = _constants$IX2EngineC.RENDER_STYLE,
13442      RENDER_PLUGIN = _constants$IX2EngineC.RENDER_PLUGIN;
13443    var _constants$ActionType = _constants.ActionTypeConsts,
13444      TRANSFORM_MOVE = _constants$ActionType.TRANSFORM_MOVE,
13445      TRANSFORM_SCALE = _constants$ActionType.TRANSFORM_SCALE,
13446      TRANSFORM_ROTATE = _constants$ActionType.TRANSFORM_ROTATE,
13447      TRANSFORM_SKEW = _constants$ActionType.TRANSFORM_SKEW,
13448      STYLE_OPACITY = _constants$ActionType.STYLE_OPACITY,
13449      STYLE_FILTER = _constants$ActionType.STYLE_FILTER,
13450      STYLE_SIZE = _constants$ActionType.STYLE_SIZE,
13451      STYLE_BACKGROUND_COLOR = _constants$ActionType.STYLE_BACKGROUND_COLOR,
13452      STYLE_BORDER = _constants$ActionType.STYLE_BORDER,
13453      STYLE_TEXT_COLOR = _constants$ActionType.STYLE_TEXT_COLOR,
13454      GENERAL_DISPLAY = _constants$ActionType.GENERAL_DISPLAY;
13455    var OBJECT_VALUE = 'OBJECT_VALUE';
13456
13457    var trim = function trim(v) {
13458      return v.trim();
13459    };
13460
13461    var 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));
13462    var 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));
13463    var objectCache = {};
13464    var instanceCount = 1;
13465
13466    function getInstanceId() {
13467      return 'i' + instanceCount++;
13468    }
13469
13470    var elementCount = 1; // $FlowFixMe
13471
13472    function getElementId(ixElements, ref) {
13473      // TODO: optimize element lookup
13474      for (var key in ixElements) {
13475        var ixEl = ixElements[key];
13476
13477        if (ixEl && ixEl.ref === ref) {
13478          return ixEl.id;
13479        }
13480      }
13481
13482      return 'e' + elementCount++;
13483    } // $FlowFixMe
13484
13485
13486    function reifyState() {
13487      var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13488        events = _ref2.events,
13489        actionLists = _ref2.actionLists,
13490        site = _ref2.site;
13491
13492      var eventTypeMap = (0, _reduce["default"])(events, function (result, event) {
13493        var eventTypeId = event.eventTypeId;
13494
13495        if (!result[eventTypeId]) {
13496          result[eventTypeId] = {};
13497        }
13498
13499        result[eventTypeId][event.id] = event;
13500        return result;
13501      }, {});
13502      var mediaQueries = site && site.mediaQueries;
13503      var mediaQueryKeys = [];
13504
13505      if (mediaQueries) {
13506        mediaQueryKeys = mediaQueries.map(function (mq) {
13507          return mq.key;
13508        });
13509      } else {
13510        mediaQueries = [];
13511        console.warn("IX2 missing mediaQueries in site data");
13512      }
13513
13514      return {
13515        ixData: {
13516          events: events,
13517          actionLists: actionLists,
13518          eventTypeMap: eventTypeMap,
13519          mediaQueries: mediaQueries,
13520          mediaQueryKeys: mediaQueryKeys
13521        }
13522      };
13523    }
13524
13525    var strictEqual = function strictEqual(a, b) {
13526      return a === b;
13527    }; // $FlowFixMe
13528
13529
13530    function observeStore(_ref3) {
13531      var store = _ref3.store,
13532        select = _ref3.select,
13533        onChange = _ref3.onChange,
13534        _ref3$comparator = _ref3.comparator,
13535        comparator = _ref3$comparator === void 0 ? strictEqual : _ref3$comparator;
13536      var getState = store.getState,
13537        subscribe = store.subscribe;
13538      var unsubscribe = subscribe(handleChange);
13539      var currentState = select(getState());
13540
13541      function handleChange() {
13542        var nextState = select(getState());
13543
13544        if (nextState == null) {
13545          unsubscribe();
13546          return;
13547        }
13548
13549        if (!comparator(nextState, currentState)) {
13550          currentState = nextState;
13551          onChange(currentState, store);
13552        }
13553      }
13554
13555      return unsubscribe;
13556    }
13557
13558    function normalizeTarget(target) {
13559      var type = (0, _typeof2["default"])(target);
13560
13561      if (type === 'string') {
13562        return {
13563          id: target
13564        };
13565      } else if (target != null && type === 'object') {
13566        var id = target.id,
13567          objectId = target.objectId,
13568          selector = target.selector,
13569          selectorGuids = target.selectorGuids,
13570          appliesTo = target.appliesTo,
13571          useEventTarget = target.useEventTarget;
13572        return {
13573          id: id,
13574          objectId: objectId,
13575          selector: selector,
13576          selectorGuids: selectorGuids,
13577          appliesTo: appliesTo,
13578          useEventTarget: useEventTarget
13579        };
13580      }
13581
13582      return {};
13583    }
13584
13585    function getAffectedElements(_ref4) {
13586      var config = _ref4.config,
13587        event = _ref4.event,
13588        eventTarget = _ref4.eventTarget,
13589        elementRoot = _ref4.elementRoot,
13590        elementApi = _ref4.elementApi;
13591
13592      var _ref, _event$action, _event$action$config;
13593
13594      if (!elementApi) {
13595        throw new Error('IX2 missing elementApi');
13596      }
13597
13598      var targets = config.targets;
13599
13600      if (Array.isArray(targets) && targets.length > 0) {
13601        return targets.reduce(function (accumulator, target) {
13602          return accumulator.concat(getAffectedElements({
13603            config: {
13604              target: target
13605            },
13606            event: event,
13607            eventTarget: eventTarget,
13608            elementRoot: elementRoot,
13609            elementApi: elementApi
13610          }));
13611        }, []);
13612      }
13613
13614      var getValidDocument = elementApi.getValidDocument,
13615        getQuerySelector = elementApi.getQuerySelector,
13616        queryDocument = elementApi.queryDocument,
13617        getChildElements = elementApi.getChildElements,
13618        getSiblingElements = elementApi.getSiblingElements,
13619        matchSelector = elementApi.matchSelector,
13620        elementContains = elementApi.elementContains,
13621        isSiblingNode = elementApi.isSiblingNode;
13622      var target = config.target;
13623
13624      if (!target) {
13625        return [];
13626      }
13627
13628      var _normalizeTarget = normalizeTarget(target),
13629        id = _normalizeTarget.id,
13630        objectId = _normalizeTarget.objectId,
13631        selector = _normalizeTarget.selector,
13632        selectorGuids = _normalizeTarget.selectorGuids,
13633        appliesTo = _normalizeTarget.appliesTo,
13634        useEventTarget = _normalizeTarget.useEventTarget;
13635
13636      if (objectId) {
13637        var ref = objectCache[objectId] || (objectCache[objectId] = {});
13638        return [ref];
13639      }
13640
13641      if (appliesTo === _constants.EventAppliesTo.PAGE) {
13642        var doc = getValidDocument(id);
13643        return doc ? [doc] : [];
13644      }
13645
13646      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 : {};
13647      var override = overrides[id || selector] || {};
13648      var validOverride = Boolean(override.id || override.selector);
13649      var limitAffectedElements;
13650      var baseSelector;
13651      var finalSelector;
13652      var eventTargetSelector = event && getQuerySelector(normalizeTarget(event.target));
13653
13654      if (validOverride) {
13655        limitAffectedElements = override.limitAffectedElements;
13656        baseSelector = eventTargetSelector;
13657        finalSelector = getQuerySelector(override);
13658      } else {
13659        // pass in selectorGuids as well for server-side rendering.
13660        baseSelector = finalSelector = getQuerySelector({
13661          id: id,
13662          selector: selector,
13663          selectorGuids: selectorGuids
13664        });
13665      }
13666
13667      if (event && useEventTarget) {
13668        // eventTarget is not defined when this function is called in a clear request, so find
13669        // all target elements associated with the event data, and return affected elements.
13670        var eventTargets = eventTarget && (finalSelector || useEventTarget === true) ? [eventTarget] : queryDocument(eventTargetSelector);
13671
13672        if (finalSelector) {
13673          if (useEventTarget === PARENT) {
13674            return queryDocument(finalSelector).filter(function (parentElement) {
13675              return eventTargets.some(function (targetElement) {
13676                return elementContains(parentElement, targetElement);
13677              });
13678            });
13679          }
13680
13681          if (useEventTarget === CHILDREN) {
13682            return queryDocument(finalSelector).filter(function (childElement) {
13683              return eventTargets.some(function (targetElement) {
13684                return elementContains(targetElement, childElement);
13685              });
13686            });
13687          }
13688
13689          if (useEventTarget === SIBLINGS) {
13690            return queryDocument(finalSelector).filter(function (siblingElement) {
13691              return eventTargets.some(function (targetElement) {
13692                return isSiblingNode(targetElement, siblingElement);
13693              });
13694            });
13695          }
13696        }
13697
13698        return eventTargets;
13699      }
13700
13701      if (baseSelector == null || finalSelector == null) {
13702        return [];
13703      }
13704
13705      if (_IX2BrowserSupport.IS_BROWSER_ENV && elementRoot) {
13706        return queryDocument(finalSelector).filter(function (element) {
13707          return elementRoot.contains(element);
13708        });
13709      }
13710
13711      if (limitAffectedElements === CHILDREN) {
13712        return queryDocument(baseSelector, finalSelector);
13713      } else if (limitAffectedElements === IMMEDIATE_CHILDREN) {
13714        return getChildElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
13715      } else if (limitAffectedElements === SIBLINGS) {
13716        return getSiblingElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
13717      } else {
13718        return queryDocument(finalSelector);
13719      }
13720    } // $FlowFixMe
13721
13722
13723    function getComputedStyle(_ref5) {
13724      var element = _ref5.element,
13725        actionItem = _ref5.actionItem;
13726
13727      if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13728        return {};
13729      }
13730
13731      var actionTypeId = actionItem.actionTypeId;
13732
13733      switch (actionTypeId) {
13734        case STYLE_SIZE:
13735        case STYLE_BACKGROUND_COLOR:
13736        case STYLE_BORDER:
13737        case STYLE_TEXT_COLOR:
13738        case GENERAL_DISPLAY:
13739          return window.getComputedStyle(element);
13740
13741        default:
13742          return {};
13743      }
13744    }
13745
13746    var pxValueRegex = /px/;
13747
13748    var getFilterDefaults = function getFilterDefaults(actionState, filters) {
13749      return filters.reduce(function (result, filter) {
13750        if (result[filter.type] == null) {
13751          result[filter.type] = filterDefaults[filter.type];
13752        }
13753
13754        return result;
13755      }, actionState || {});
13756    };
13757
13758    function getInstanceOrigin( // $FlowFixMe
13759      element) {
13760      var refState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13761      var computedStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
13762      var // $FlowFixMe
13763        actionItem = arguments.length > 3 ? arguments[3] : undefined;
13764      var // $FlowFixMe
13765        elementApi = arguments.length > 4 ? arguments[4] : undefined;
13766      var getStyle = elementApi.getStyle;
13767      var actionTypeId = actionItem.actionTypeId,
13768        config = actionItem.config;
13769
13770      if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13771        // $FlowFixMe
13772        return (0, _IX2VanillaPlugins.getPluginOrigin)(actionTypeId)(refState[actionTypeId]);
13773      }
13774
13775      switch (actionTypeId) {
13776        case TRANSFORM_MOVE:
13777        case TRANSFORM_SCALE:
13778        case TRANSFORM_ROTATE:
13779        case TRANSFORM_SKEW:
13780          return refState[actionTypeId] || transformDefaults[actionTypeId];
13781
13782        case STYLE_FILTER:
13783          return getFilterDefaults(refState[actionTypeId], actionItem.config.filters);
13784
13785        case STYLE_OPACITY:
13786          return {
13787            value: (0, _defaultTo["default"])(parseFloat(getStyle(element, OPACITY)), 1.0)
13788          };
13789
13790        case STYLE_SIZE:
13791          {
13792            var inlineWidth = getStyle(element, WIDTH);
13793            var inlineHeight = getStyle(element, HEIGHT);
13794            var widthValue;
13795            var heightValue; // When destination unit is 'AUTO', ensure origin values are in px
13796
13797            if (config.widthUnit === AUTO) {
13798              widthValue = pxValueRegex.test(inlineWidth) ? parseFloat(inlineWidth) : parseFloat(computedStyle.width);
13799            } else {
13800              widthValue = (0, _defaultTo["default"])(parseFloat(inlineWidth), parseFloat(computedStyle.width));
13801            }
13802
13803            if (config.heightUnit === AUTO) {
13804              heightValue = pxValueRegex.test(inlineHeight) ? parseFloat(inlineHeight) : parseFloat(computedStyle.height);
13805            } else {
13806              heightValue = (0, _defaultTo["default"])(parseFloat(inlineHeight), parseFloat(computedStyle.height));
13807            }
13808
13809            return {
13810              widthValue: widthValue,
13811              heightValue: heightValue
13812            };
13813          }
13814
13815        case STYLE_BACKGROUND_COLOR:
13816        case STYLE_BORDER:
13817        case STYLE_TEXT_COLOR:
13818          return parseColor({
13819            element: element,
13820            actionTypeId: actionTypeId,
13821            computedStyle: computedStyle,
13822            getStyle: getStyle
13823          });
13824
13825        case GENERAL_DISPLAY:
13826          return {
13827            value: (0, _defaultTo["default"])(getStyle(element, DISPLAY), computedStyle.display)
13828          };
13829
13830        case OBJECT_VALUE:
13831          return refState[actionTypeId] || {
13832            value: 0
13833          };
13834
13835        default:
13836          return;
13837      }
13838    }
13839
13840    var reduceFilters = function reduceFilters(result, filter) {
13841      if (filter) {
13842        result[filter.type] = filter.value || 0;
13843      }
13844
13845      return result;
13846    }; // $FlowFixMe
13847
13848
13849    var getItemConfigByKey = function getItemConfigByKey(actionTypeId, key, config) {
13850      if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13851        // $FlowFixMe
13852        return (0, _IX2VanillaPlugins.getPluginConfig)(actionTypeId)(config, key);
13853      }
13854
13855      switch (actionTypeId) {
13856        case STYLE_FILTER:
13857          {
13858            var filter = (0, _findLast["default"])(config.filters, function (_ref6) {
13859              var type = _ref6.type;
13860              return type === key;
13861            });
13862            return filter ? filter.value : 0;
13863          }
13864
13865        default:
13866          return config[key];
13867      }
13868    }; // $FlowFixMe
13869
13870
13871    exports.getItemConfigByKey = getItemConfigByKey;
13872
13873    function getDestinationValues(_ref7) {
13874      var element = _ref7.element,
13875        actionItem = _ref7.actionItem,
13876        elementApi = _ref7.elementApi;
13877      var actionTypeId = actionItem.actionTypeId;
13878
13879      if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13880        // $FlowFixMe
13881        return (0, _IX2VanillaPlugins.getPluginDestination)(actionTypeId)(actionItem.config);
13882      }
13883
13884      switch (actionTypeId) {
13885        case TRANSFORM_MOVE:
13886        case TRANSFORM_SCALE:
13887        case TRANSFORM_ROTATE:
13888        case TRANSFORM_SKEW:
13889          {
13890            var _actionItem$config = actionItem.config,
13891              xValue = _actionItem$config.xValue,
13892              yValue = _actionItem$config.yValue,
13893              zValue = _actionItem$config.zValue;
13894            return {
13895              xValue: xValue,
13896              yValue: yValue,
13897              zValue: zValue
13898            };
13899          }
13900
13901        case STYLE_SIZE:
13902          {
13903            var getStyle = elementApi.getStyle,
13904              setStyle = elementApi.setStyle,
13905              getProperty = elementApi.getProperty;
13906            var _actionItem$config2 = actionItem.config,
13907              widthUnit = _actionItem$config2.widthUnit,
13908              heightUnit = _actionItem$config2.heightUnit;
13909            var _actionItem$config3 = actionItem.config,
13910              widthValue = _actionItem$config3.widthValue,
13911              heightValue = _actionItem$config3.heightValue;
13912
13913            if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13914              return {
13915                widthValue: widthValue,
13916                heightValue: heightValue
13917              };
13918            }
13919
13920            if (widthUnit === AUTO) {
13921              var temp = getStyle(element, WIDTH);
13922              setStyle(element, WIDTH, '');
13923              widthValue = getProperty(element, 'offsetWidth');
13924              setStyle(element, WIDTH, temp);
13925            }
13926
13927            if (heightUnit === AUTO) {
13928              var _temp = getStyle(element, HEIGHT);
13929
13930              setStyle(element, HEIGHT, '');
13931              heightValue = getProperty(element, 'offsetHeight');
13932              setStyle(element, HEIGHT, _temp);
13933            }
13934
13935            return {
13936              widthValue: widthValue,
13937              heightValue: heightValue
13938            };
13939          }
13940
13941        case STYLE_BACKGROUND_COLOR:
13942        case STYLE_BORDER:
13943        case STYLE_TEXT_COLOR:
13944          {
13945            var _actionItem$config4 = actionItem.config,
13946              rValue = _actionItem$config4.rValue,
13947              gValue = _actionItem$config4.gValue,
13948              bValue = _actionItem$config4.bValue,
13949              aValue = _actionItem$config4.aValue;
13950            return {
13951              rValue: rValue,
13952              gValue: gValue,
13953              bValue: bValue,
13954              aValue: aValue
13955            };
13956          }
13957
13958        case STYLE_FILTER:
13959          {
13960            return actionItem.config.filters.reduce(reduceFilters, {});
13961          }
13962
13963        default:
13964          {
13965            var value = actionItem.config.value;
13966            return {
13967              value: value
13968            };
13969          }
13970      }
13971    } // $FlowFixMe
13972
13973
13974    function getRenderType(actionTypeId) {
13975      if (/^TRANSFORM_/.test(actionTypeId)) {
13976        return RENDER_TRANSFORM;
13977      }
13978
13979      if (/^STYLE_/.test(actionTypeId)) {
13980        return RENDER_STYLE;
13981      }
13982
13983      if (/^GENERAL_/.test(actionTypeId)) {
13984        return RENDER_GENERAL;
13985      }
13986
13987      if (/^PLUGIN_/.test(actionTypeId)) {
13988        return RENDER_PLUGIN;
13989      }
13990    } // $FlowFixMe
13991
13992
13993    function getStyleProp(renderType, actionTypeId) {
13994      return renderType === RENDER_STYLE ? actionTypeId.replace('STYLE_', '').toLowerCase() : null;
13995    }
13996
13997    function renderHTMLElement( // $FlowFixMe
13998      element, // $FlowFixMe
13999      refState, // $FlowFixMe
14000      actionState, // $FlowFixMe
14001      eventId, // $FlowFixMe
14002      actionItem, // $FlowFixMe
14003      styleProp, // $FlowFixMe
14004      elementApi, // $FlowFixMe
14005      renderType, // $FlowFixMe
14006      pluginInstance) {
14007      switch (renderType) {
14008        case RENDER_TRANSFORM:
14009          {
14010            return renderTransform(element, refState, actionState, actionItem, elementApi);
14011          }
14012
14013        case RENDER_STYLE:
14014          {
14015            return renderStyle(element, refState, actionState, actionItem, styleProp, elementApi);
14016          }
14017
14018        case RENDER_GENERAL:
14019          {
14020            return renderGeneral(element, actionItem, elementApi);
14021          }
14022
14023        case RENDER_PLUGIN:
14024          {
14025            var actionTypeId = actionItem.actionTypeId;
14026
14027            if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14028              // $FlowFixMe
14029              return (0, _IX2VanillaPlugins.renderPlugin)(actionTypeId)(pluginInstance, refState, actionItem);
14030            }
14031          }
14032      }
14033    }
14034
14035    var transformDefaults = (_transformDefaults = {}, (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_MOVE, Object.freeze({
14036      xValue: 0,
14037      yValue: 0,
14038      zValue: 0
14039    })), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SCALE, Object.freeze({
14040      xValue: 1,
14041      yValue: 1,
14042      zValue: 1
14043    })), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_ROTATE, Object.freeze({
14044      xValue: 0,
14045      yValue: 0,
14046      zValue: 0
14047    })), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SKEW, Object.freeze({
14048      xValue: 0,
14049      yValue: 0
14050    })), _transformDefaults);
14051    var filterDefaults = Object.freeze({
14052      blur: 0,
14053      'hue-rotate': 0,
14054      invert: 0,
14055      grayscale: 0,
14056      saturate: 100,
14057      sepia: 0,
14058      contrast: 100,
14059      brightness: 100
14060    });
14061
14062    var getFilterUnit = function getFilterUnit(filterType, actionItemConfig) {
14063      var filter = (0, _findLast["default"])(actionItemConfig.filters, function (_ref8) {
14064        var type = _ref8.type;
14065        return type === filterType;
14066      });
14067
14068      if (filter && filter.unit) {
14069        return filter.unit;
14070      }
14071
14072      switch (filterType) {
14073        case 'blur':
14074          return 'px';
14075
14076        case 'hue-rotate':
14077          return 'deg';
14078
14079        default:
14080          return '%';
14081      }
14082    };
14083
14084    var transformKeys = Object.keys(transformDefaults);
14085
14086    function renderTransform(element, refState, actionState, actionItem, elementApi) {
14087      var newTransform = transformKeys.map(function (actionTypeId) {
14088        var defaults = transformDefaults[actionTypeId];
14089
14090        var _ref9 = refState[actionTypeId] || {},
14091          _ref9$xValue = _ref9.xValue,
14092          xValue = _ref9$xValue === void 0 ? defaults.xValue : _ref9$xValue,
14093          _ref9$yValue = _ref9.yValue,
14094          yValue = _ref9$yValue === void 0 ? defaults.yValue : _ref9$yValue,
14095          _ref9$zValue = _ref9.zValue,
14096          zValue = _ref9$zValue === void 0 ? defaults.zValue : _ref9$zValue,
14097          _ref9$xUnit = _ref9.xUnit,
14098          xUnit = _ref9$xUnit === void 0 ? '' : _ref9$xUnit,
14099          _ref9$yUnit = _ref9.yUnit,
14100          yUnit = _ref9$yUnit === void 0 ? '' : _ref9$yUnit,
14101          _ref9$zUnit = _ref9.zUnit,
14102          zUnit = _ref9$zUnit === void 0 ? '' : _ref9$zUnit;
14103
14104        switch (actionTypeId) {
14105          case TRANSFORM_MOVE:
14106            return "".concat(TRANSLATE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
14107
14108          case TRANSFORM_SCALE:
14109            return "".concat(SCALE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
14110
14111          case TRANSFORM_ROTATE:
14112            return "".concat(ROTATE_X, "(").concat(xValue).concat(xUnit, ") ").concat(ROTATE_Y, "(").concat(yValue).concat(yUnit, ") ").concat(ROTATE_Z, "(").concat(zValue).concat(zUnit, ")");
14113
14114          case TRANSFORM_SKEW:
14115            return "".concat(SKEW, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ")");
14116
14117          default:
14118            return '';
14119        }
14120      }).join(' ');
14121      var setStyle = elementApi.setStyle;
14122      addWillChange(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
14123      setStyle(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, newTransform); // Set transform-style: preserve-3d
14124
14125      if (hasDefined3dTransform(actionItem, actionState)) {
14126        setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, PRESERVE_3D);
14127      }
14128    }
14129
14130    function renderFilter(element, actionState, actionItemConfig, elementApi) {
14131      var filterValue = (0, _reduce["default"])(actionState, function (result, value, type) {
14132        return "".concat(result, " ").concat(type, "(").concat(value).concat(getFilterUnit(type, actionItemConfig), ")");
14133      }, '');
14134      var setStyle = elementApi.setStyle;
14135      addWillChange(element, FILTER, elementApi);
14136      setStyle(element, FILTER, filterValue);
14137    }
14138
14139    function hasDefined3dTransform(_ref10, _ref11) {
14140      var actionTypeId = _ref10.actionTypeId;
14141      var xValue = _ref11.xValue,
14142        yValue = _ref11.yValue,
14143        zValue = _ref11.zValue;
14144      // TRANSLATE_Z
14145      return actionTypeId === TRANSFORM_MOVE && zValue !== undefined || // SCALE_Z
14146        actionTypeId === TRANSFORM_SCALE && zValue !== undefined || // ROTATE_X or ROTATE_Y
14147        actionTypeId === TRANSFORM_ROTATE && (xValue !== undefined || yValue !== undefined);
14148    }
14149
14150    var paramCapture = '\\(([^)]+)\\)';
14151    var rgbValidRegex = /^rgb/;
14152    var rgbMatchRegex = RegExp("rgba?".concat(paramCapture));
14153
14154    function getFirstMatch(regex, value) {
14155      var match = regex.exec(value);
14156      return match ? match[1] : '';
14157    }
14158
14159    function parseColor(_ref12) {
14160      var element = _ref12.element,
14161        actionTypeId = _ref12.actionTypeId,
14162        computedStyle = _ref12.computedStyle,
14163        getStyle = _ref12.getStyle;
14164      var prop = colorStyleProps[actionTypeId];
14165      var inlineValue = getStyle(element, prop);
14166      var value = rgbValidRegex.test(inlineValue) ? inlineValue : computedStyle[prop];
14167      var matches = getFirstMatch(rgbMatchRegex, value).split(COMMA_DELIMITER);
14168      return {
14169        rValue: (0, _defaultTo["default"])(parseInt(matches[0], 10), 255),
14170        gValue: (0, _defaultTo["default"])(parseInt(matches[1], 10), 255),
14171        bValue: (0, _defaultTo["default"])(parseInt(matches[2], 10), 255),
14172        aValue: (0, _defaultTo["default"])(parseFloat(matches[3]), 1)
14173      };
14174    }
14175
14176    function renderStyle(element, refState, actionState, actionItem, styleProp, elementApi) {
14177      var setStyle = elementApi.setStyle;
14178      var actionTypeId = actionItem.actionTypeId,
14179        config = actionItem.config;
14180
14181      switch (actionTypeId) {
14182        case STYLE_SIZE:
14183          {
14184            var _actionItem$config5 = actionItem.config,
14185              _actionItem$config5$w = _actionItem$config5.widthUnit,
14186              widthUnit = _actionItem$config5$w === void 0 ? '' : _actionItem$config5$w,
14187              _actionItem$config5$h = _actionItem$config5.heightUnit,
14188              heightUnit = _actionItem$config5$h === void 0 ? '' : _actionItem$config5$h;
14189            var widthValue = actionState.widthValue,
14190              heightValue = actionState.heightValue;
14191
14192            if (widthValue !== undefined) {
14193              if (widthUnit === AUTO) {
14194                widthUnit = 'px';
14195              }
14196
14197              addWillChange(element, WIDTH, elementApi);
14198              setStyle(element, WIDTH, widthValue + widthUnit);
14199            }
14200
14201            if (heightValue !== undefined) {
14202              if (heightUnit === AUTO) {
14203                heightUnit = 'px';
14204              }
14205
14206              addWillChange(element, HEIGHT, elementApi);
14207              setStyle(element, HEIGHT, heightValue + heightUnit);
14208            }
14209
14210            break;
14211          }
14212
14213        case STYLE_FILTER:
14214          {
14215            renderFilter(element, actionState, config, elementApi);
14216            break;
14217          }
14218
14219        case STYLE_BACKGROUND_COLOR:
14220        case STYLE_BORDER:
14221        case STYLE_TEXT_COLOR:
14222          {
14223            var prop = colorStyleProps[actionTypeId];
14224            var rValue = Math.round(actionState.rValue);
14225            var gValue = Math.round(actionState.gValue);
14226            var bValue = Math.round(actionState.bValue);
14227            var aValue = actionState.aValue;
14228            addWillChange(element, prop, elementApi);
14229            setStyle(element, prop, aValue >= 1 ? "rgb(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ")") : "rgba(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ",").concat(aValue, ")"));
14230            break;
14231          }
14232
14233        default:
14234          {
14235            var _config$unit = config.unit,
14236              unit = _config$unit === void 0 ? '' : _config$unit;
14237            addWillChange(element, styleProp, elementApi);
14238            setStyle(element, styleProp, actionState.value + unit);
14239            break;
14240          }
14241      }
14242    }
14243
14244    function renderGeneral(element, actionItem, elementApi) {
14245      var setStyle = elementApi.setStyle;
14246
14247      switch (actionItem.actionTypeId) {
14248        case GENERAL_DISPLAY:
14249          {
14250            var value = actionItem.config.value;
14251
14252            if (value === FLEX && _IX2BrowserSupport.IS_BROWSER_ENV) {
14253              setStyle(element, DISPLAY, _IX2BrowserSupport.FLEX_PREFIXED);
14254            } else {
14255              setStyle(element, DISPLAY, value);
14256            }
14257
14258            return;
14259          }
14260      }
14261    }
14262
14263    function addWillChange(element, prop, elementApi) {
14264      if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14265        return;
14266      } // $FlowFixMe
14267
14268
14269      var validProp = willChangeProps[prop];
14270
14271      if (!validProp) {
14272        return;
14273      }
14274
14275      var getStyle = elementApi.getStyle,
14276        setStyle = elementApi.setStyle;
14277      var value = getStyle(element, WILL_CHANGE);
14278
14279      if (!value) {
14280        setStyle(element, WILL_CHANGE, validProp);
14281        return;
14282      }
14283
14284      var values = value.split(COMMA_DELIMITER).map(trim);
14285
14286      if (values.indexOf(validProp) === -1) {
14287        setStyle(element, WILL_CHANGE, values.concat(validProp).join(COMMA_DELIMITER));
14288      }
14289    }
14290
14291    function removeWillChange(element, prop, elementApi) {
14292      if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
14293        return;
14294      } // $FlowFixMe
14295
14296
14297      var validProp = willChangeProps[prop];
14298
14299      if (!validProp) {
14300        return;
14301      }
14302
14303      var getStyle = elementApi.getStyle,
14304        setStyle = elementApi.setStyle;
14305      var value = getStyle(element, WILL_CHANGE);
14306
14307      if (!value || value.indexOf(validProp) === -1) {
14308        return;
14309      }
14310
14311      setStyle(element, WILL_CHANGE, value.split(COMMA_DELIMITER).map(trim).filter(function (v) {
14312        return v !== validProp;
14313      }).join(COMMA_DELIMITER));
14314    } // $FlowFixMe
14315
14316
14317    function clearAllStyles(_ref13) {
14318      var store = _ref13.store,
14319        elementApi = _ref13.elementApi;
14320
14321      var _store$getState = store.getState(),
14322        ixData = _store$getState.ixData;
14323
14324      var _ixData$events = ixData.events,
14325        events = _ixData$events === void 0 ? {} : _ixData$events,
14326        _ixData$actionLists = ixData.actionLists,
14327        actionLists = _ixData$actionLists === void 0 ? {} : _ixData$actionLists;
14328      Object.keys(events).forEach(function (eventId) {
14329        var event = events[eventId];
14330        var config = event.action.config;
14331        var actionListId = config.actionListId;
14332        var actionList = actionLists[actionListId];
14333
14334        if (actionList) {
14335          clearActionListStyles({
14336            actionList: actionList,
14337            event: event,
14338            elementApi: elementApi
14339          });
14340        }
14341      });
14342      Object.keys(actionLists).forEach(function (actionListId) {
14343        clearActionListStyles({
14344          actionList: actionLists[actionListId],
14345          elementApi: elementApi
14346        });
14347      });
14348    } // $FlowFixMe
14349
14350
14351    function clearActionListStyles(_ref14) {
14352      var _ref14$actionList = _ref14.actionList,
14353        actionList = _ref14$actionList === void 0 ? {} : _ref14$actionList,
14354        event = _ref14.event,
14355        elementApi = _ref14.elementApi;
14356      var actionItemGroups = actionList.actionItemGroups,
14357        continuousParameterGroups = actionList.continuousParameterGroups;
14358      actionItemGroups && actionItemGroups.forEach(function (actionGroup) {
14359        clearActionGroupStyles({
14360          actionGroup: actionGroup,
14361          event: event,
14362          elementApi: elementApi
14363        });
14364      });
14365      continuousParameterGroups && continuousParameterGroups.forEach(function (paramGroup) {
14366        var continuousActionGroups = paramGroup.continuousActionGroups;
14367        continuousActionGroups.forEach(function (actionGroup) {
14368          clearActionGroupStyles({
14369            actionGroup: actionGroup,
14370            event: event,
14371            elementApi: elementApi
14372          });
14373        });
14374      });
14375    }
14376
14377    function clearActionGroupStyles(_ref15) {
14378      var actionGroup = _ref15.actionGroup,
14379        event = _ref15.event,
14380        elementApi = _ref15.elementApi;
14381      var actionItems = actionGroup.actionItems;
14382      actionItems.forEach(function (_ref16) {
14383        var actionTypeId = _ref16.actionTypeId,
14384          config = _ref16.config;
14385        var clearElement;
14386
14387        if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
14388          clearElement = (0, _IX2VanillaPlugins.clearPlugin)(actionTypeId);
14389        } else {
14390          clearElement = processElementByType({
14391            effect: clearStyleProp,
14392            actionTypeId: actionTypeId,
14393            elementApi: elementApi
14394          });
14395        }
14396
14397        getAffectedElements({
14398          config: config,
14399          event: event,
14400          elementApi: elementApi
14401        }
14401).forEach(clearElement);
14402      });
14403    } // $FlowFixMe
14404
14405
14406    function cleanupHTMLElement(element, actionItem, elementApi) {
14407      var setStyle = elementApi.setStyle,
14408        getStyle = elementApi.getStyle;
14409      var actionTypeId = actionItem.actionTypeId;
14410
14411      if (actionTypeId === STYLE_SIZE) {
14412        var config = actionItem.config;
14413
14414        if (config.widthUnit === AUTO) {
14415          setStyle(element, WIDTH, '');
14416        }
14417
14418        if (config.heightUnit === AUTO) {
14419          setStyle(element, HEIGHT, '');
14420        }
14421      }
14422
14423      if (getStyle(element, WILL_CHANGE)) {
14424        processElementByType({
14425          effect: removeWillChange,
14426          actionTypeId: actionTypeId,
14427          elementApi: elementApi
14428        })(element);
14429      }
14430    }
14431
14432    var processElementByType = function processElementByType(_ref17) {
14433      var effect = _ref17.effect,
14434        actionTypeId = _ref17.actionTypeId,
14435        elementApi = _ref17.elementApi;
14436      return function (element) {
14437        switch (actionTypeId) {
14438          case TRANSFORM_MOVE:
14439          case TRANSFORM_SCALE:
14440          case TRANSFORM_ROTATE:
14441          case TRANSFORM_SKEW:
14442            effect(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
14443            break;
14444
14445          case STYLE_FILTER:
14446            effect(element, FILTER, elementApi);
14447            break;
14448
14449          case STYLE_OPACITY:
14450            effect(element, OPACITY, elementApi);
14451            break;
14452
14453          case STYLE_SIZE:
14454            effect(element, WIDTH, elementApi);
14455            effect(element, HEIGHT, elementApi);
14456            break;
14457
14458          case STYLE_BACKGROUND_COLOR:
14459          case STYLE_BORDER:
14460          case STYLE_TEXT_COLOR:
14461            effect(element, colorStyleProps[actionTypeId], elementApi);
14462            break;
14463
14464          case GENERAL_DISPLAY:
14465            effect(element, DISPLAY, elementApi);
14466            break;
14467        }
14468      };
14469    };
14470
14471    function clearStyleProp(element, prop, elementApi) {
14472      var setStyle = elementApi.setStyle;
14473      removeWillChange(element, prop, elementApi);
14474      setStyle(element, prop, ''); // Clear transform-style: preserve-3d
14475
14476      if (prop === _IX2BrowserSupport.TRANSFORM_PREFIXED) {
14477        setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, '');
14478      }
14479    } // $FlowFixMe
14480
14481
14482    function getMaxDurationItemIndex(actionItems) {
14483      var maxDuration = 0;
14484      var resultIndex = 0;
14485      actionItems.forEach(function (actionItem, index) {
14486        var config = actionItem.config;
14487        var total = config.delay + config.duration;
14488
14489        if (total >= maxDuration) {
14490          maxDuration = total;
14491          resultIndex = index;
14492        }
14493      });
14494      return resultIndex;
14495    } // $FlowFixMe
14496
14497
14498    function getActionListProgress(actionList, instance) {
14499      var actionItemGroups = actionList.actionItemGroups,
14500        useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState;
14501      var instanceItem = instance.actionItem,
14502        _instance$verboseTime = instance.verboseTimeElapsed,
14503        verboseTimeElapsed = _instance$verboseTime === void 0 ? 0 : _instance$verboseTime;
14504      var totalDuration = 0;
14505      var elapsedDuration = 0;
14506      actionItemGroups.forEach(function (group, index) {
14507        if (useFirstGroupAsInitialState && index === 0) {
14508          return;
14509        }
14510
14511        var actionItems = group.actionItems;
14512        var carrierItem = actionItems[getMaxDurationItemIndex(actionItems)];
14513        var config = carrierItem.config,
14514          actionTypeId = carrierItem.actionTypeId;
14515
14516        if (instanceItem.id === carrierItem.id) {
14517          elapsedDuration = totalDuration + verboseTimeElapsed;
14518        }
14519
14520        var duration = getRenderType(actionTypeId) === RENDER_GENERAL ? 0 : config.duration;
14521        totalDuration += config.delay + duration;
14522      });
14523      return totalDuration > 0 ? (0, _IX2EasingUtils.optimizeFloat)(elapsedDuration / totalDuration) : 0;
14524    } // $FlowFixMe
14525
14526
14527    function reduceListToGroup(_ref18) {
14528      var actionList = _ref18.actionList,
14529        actionItemId = _ref18.actionItemId,
14530        rawData = _ref18.rawData;
14531      var actionItemGroups = actionList.actionItemGroups,
14532        continuousParameterGroups = actionList.continuousParameterGroups;
14533      var newActionItems = [];
14534
14535      var takeItemUntilMatch = function takeItemUntilMatch(actionItem) {
14536        newActionItems.push((0, _timm.mergeIn)(actionItem, ['config'], {
14537          delay: 0,
14538          duration: 0
14539        }));
14540        return actionItem.id === actionItemId;
14541      };
14542
14543      actionItemGroups && actionItemGroups.some(function (_ref19) {
14544        var actionItems = _ref19.actionItems;
14545        return actionItems.some(takeItemUntilMatch);
14546      });
14547      continuousParameterGroups && continuousParameterGroups.some(function (paramGroup) {
14548        var continuousActionGroups = paramGroup.continuousActionGroups;
14549        return continuousActionGroups.some(function (_ref20) {
14550          var actionItems = _ref20.actionItems;
14551          return actionItems.some(takeItemUntilMatch);
14552        });
14553      });
14554      return (0, _timm.setIn)(rawData, ['actionLists'], (0, _defineProperty2["default"])({}, actionList.id, {
14555        id: actionList.id,
14556        actionItemGroups: [{
14557          actionItems: newActionItems
14558        }]
14559      }));
14560    } // $FlowFixMe
14561
14562
14563    function shouldNamespaceEventParameter(eventTypeId, _ref22) {
14564      var basedOn = _ref22.basedOn;
14565      return eventTypeId === _constants.EventTypeConsts.SCROLLING_IN_VIEW && (basedOn === _constants.EventBasedOn.ELEMENT || basedOn == null) || eventTypeId === _constants.EventTypeConsts.MOUSE_MOVE && basedOn === _constants.EventBasedOn.ELEMENT;
14566    }
14567
14568    function getNamespacedParameterId(eventStateKey, continuousParameterGroupId) {
14569      var namespacedParameterId = eventStateKey + COLON_DELIMITER + continuousParameterGroupId;
14570      return namespacedParameterId;
14571    } // $FlowFixMe
14572
14573
14574    function shouldAllowMediaQuery(mediaQueries, mediaQueryKey) {
14575      // During design mode, current media query key does not exist
14576      if (mediaQueryKey == null) {
14577        return true;
14578      }
14579
14580      return mediaQueries.indexOf(mediaQueryKey) !== -1;
14581    } // $FlowFixMe
14582
14583
14584    function mediaQueriesEqual(listA, listB) {
14585      return (0, _shallowEqual["default"])(listA && listA.sort(), listB && listB.sort());
14586    } // $FlowFixMe
14587
14588
14589    function stringifyTarget(target) {
14590      if (typeof target === 'string') {
14591        return target;
14592      }
14593
14594      var _target$id = target.id,
14595        id = _target$id === void 0 ? '' : _target$id,
14596        _target$selector = target.selector,
14597        selector = _target$selector === void 0 ? '' : _target$selector,
14598        _target$useEventTarge = target.useEventTarget,
14599        useEventTarget = _target$useEventTarge === void 0 ? '' : _target$useEventTarge;
14600      return id + BAR_DELIMITER + selector + BAR_DELIMITER + useEventTarget;
14601    }
14602
14603    /***/
14604  }),
14605/* 251 */
vendor: 10,430 bytes, lines 14606-14950
14606/***/ (function (module, exports) {
14607
14608    /**
14609     * Checks `value` to determine whether a default value should be returned in
14610     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
14611     * or `undefined`.
14612     *
14613     * @static
14614     * @memberOf _
14615     * @since 4.14.0
14616     * @category Util
14617     * @param {*} value The value to check.
14618     * @param {*} defaultValue The default value.
14619     * @returns {*} Returns the resolved value.
14620     * @example
14621     *
14622     * _.defaultTo(1, 10);
14623     * // => 1
14624     *
14625     * _.defaultTo(undefined, 10);
14626     * // => 10
14627     */
14628    function defaultTo(value, defaultValue) {
14629      return (value == null || value !== value) ? defaultValue : value;
14630    }
14631
14632    module.exports = defaultTo;
14633
14634
14635    /***/
14636  }),
14637/* 252 */
14638/***/ (function (module, exports, __webpack_require__) {
14639
14640    var arrayReduce = __webpack_require__(253),
14641      baseEach = __webpack_require__(112),
14642      baseIteratee = __webpack_require__(7),
14643      baseReduce = __webpack_require__(257),
14644      isArray = __webpack_require__(1);
14645
14646    /**
14647     * Reduces `collection` to a value which is the accumulated result of running
14648     * each element in `collection` thru `iteratee`, where each successive
14649     * invocation is supplied the return value of the previous. If `accumulator`
14650     * is not given, the first element of `collection` is used as the initial
14651     * value. The iteratee is invoked with four arguments:
14652     * (accumulator, value, index|key, collection).
14653     *
14654     * Many lodash methods are guarded to work as iteratees for methods like
14655     * `_.reduce`, `_.reduceRight`, and `_.transform`.
14656     *
14657     * The guarded methods are:
14658     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
14659     * and `sortBy`
14660     *
14661     * @static
14662     * @memberOf _
14663     * @since 0.1.0
14664     * @category Collection
14665     * @param {Array|Object} collection The collection to iterate over.
14666     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14667     * @param {*} [accumulator] The initial value.
14668     * @returns {*} Returns the accumulated value.
14669     * @see _.reduceRight
14670     * @example
14671     *
14672     * _.reduce([1, 2], function(sum, n) {
14673     *   return sum + n;
14674     * }, 0);
14675     * // => 3
14676     *
14677     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
14678     *   (result[value] || (result[value] = [])).push(key);
14679     *   return result;
14680     * }, {});
14681     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
14682     */
14683    function reduce(collection, iteratee, accumulator) {
14684      var func = isArray(collection) ? arrayReduce : baseReduce,
14685        initAccum = arguments.length < 3;
14686
14687      return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
14688    }
14689
14690    module.exports = reduce;
14691
14692
14693    /***/
14694  }),
14695/* 253 */
14696/***/ (function (module, exports) {
14697
14698    /**
14699     * A specialized version of `_.reduce` for arrays without support for
14700     * iteratee shorthands.
14701     *
14702     * @private
14703     * @param {Array} [array] The array to iterate over.
14704     * @param {Function} iteratee The function invoked per iteration.
14705     * @param {*} [accumulator] The initial value.
14706     * @param {boolean} [initAccum] Specify using the first element of `array` as
14707     *  the initial value.
14708     * @returns {*} Returns the accumulated value.
14709     */
14710    function arrayReduce(array, iteratee, accumulator, initAccum) {
14711      var index = -1,
14712        length = array == null ? 0 : array.length;
14713
14714      if (initAccum && length) {
14715        accumulator = array[++index];
14716      }
14717      while (++index < length) {
14718        accumulator = iteratee(accumulator, array[index], index, array);
14719      }
14720      return accumulator;
14721    }
14722
14723    module.exports = arrayReduce;
14724
14725
14726    /***/
14727  }),
14728/* 254 */
14729/***/ (function (module, exports, __webpack_require__) {
14730
14731    var createBaseFor = __webpack_require__(255);
14732
14733    /**
14734     * The base implementation of `baseForOwn` which iterates over `object`
14735     * properties returned by `keysFunc` and invokes `iteratee` for each property.
14736     * Iteratee functions may exit iteration early by explicitly returning `false`.
14737     *
14738     * @private
14739     * @param {Object} object The object to iterate over.
14740     * @param {Function} iteratee The function invoked per iteration.
14741     * @param {Function} keysFunc The function to get the keys of `object`.
14742     * @returns {Object} Returns `object`.
14743     */
14744    var baseFor = createBaseFor();
14745
14746    module.exports = baseFor;
14747
14748
14749    /***/
14750  }),
14751/* 255 */
14752/***/ (function (module, exports) {
14753
14754    /**
14755     * Creates a base function for methods like `_.forIn` and `_.forOwn`.
14756     *
14757     * @private
14758     * @param {boolean} [fromRight] Specify iterating from right to left.
14759     * @returns {Function} Returns the new base function.
14760     */
14761    function createBaseFor(fromRight) {
14762      return function (object, iteratee, keysFunc) {
14763        var index = -1,
14764          iterable = Object(object),
14765          props = keysFunc(object),
14766          length = props.length;
14767
14768        while (length--) {
14769          var key = props[fromRight ? length : ++index];
14770          if (iteratee(iterable[key], key, iterable) === false) {
14771            break;
14772          }
14773        }
14774        return object;
14775      };
14776    }
14777
14778    module.exports = createBaseFor;
14779
14780
14781    /***/
14782  }),
14783/* 256 */
14784/***/ (function (module, exports, __webpack_require__) {
14785
14786    var isArrayLike = __webpack_require__(12);
14787
14788    /**
14789     * Creates a `baseEach` or `baseEachRight` function.
14790     *
14791     * @private
14792     * @param {Function} eachFunc The function to iterate over a collection.
14793     * @param {boolean} [fromRight] Specify iterating from right to left.
14794     * @returns {Function} Returns the new base function.
14795     */
14796    function createBaseEach(eachFunc, fromRight) {
14797      return function (collection, iteratee) {
14798        if (collection == null) {
14799          return collection;
14800        }
14801        if (!isArrayLike(collection)) {
14802          return eachFunc(collection, iteratee);
14803        }
14804        var length = collection.length,
14805          index = fromRight ? length : -1,
14806          iterable = Object(collection);
14807
14808        while ((fromRight ? index-- : ++index < length)) {
14809          if (iteratee(iterable[index], index, iterable) === false) {
14810            break;
14811          }
14812        }
14813        return collection;
14814      };
14815    }
14816
14817    module.exports = createBaseEach;
14818
14819
14820    /***/
14821  }),
14822/* 257 */
14823/***/ (function (module, exports) {
14824
14825    /**
14826     * The base implementation of `_.reduce` and `_.reduceRight`, without support
14827     * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
14828     *
14829     * @private
14830     * @param {Array|Object} collection The collection to iterate over.
14831     * @param {Function} iteratee The function invoked per iteration.
14832     * @param {*} accumulator The initial value.
14833     * @param {boolean} initAccum Specify using the first or last element of
14834     *  `collection` as the initial value.
14835     * @param {Function} eachFunc The function to iterate over `collection`.
14836     * @returns {*} Returns the accumulated value.
14837     */
14838    function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
14839      eachFunc(collection, function (value, index, collection) {
14840        accumulator = initAccum
14841          ? (initAccum = false, value)
14842          : iteratee(accumulator, value, index, collection);
14843      });
14844      return accumulator;
14845    }
14846
14847    module.exports = baseReduce;
14848
14849
14850    /***/
14851  }),
14852/* 258 */
14853/***/ (function (module, exports, __webpack_require__) {
14854
14855    var createFind = __webpack_require__(87),
14856      findLastIndex = __webpack_require__(259);
14857
14858    /**
14859     * This method is like `_.find` except that it iterates over elements of
14860     * `collection` from right to left.
14861     *
14862     * @static
14863     * @memberOf _
14864     * @since 2.0.0
14865     * @category Collection
14866     * @param {Array|Object} collection The collection to inspect.
14867     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14868     * @param {number} [fromIndex=collection.length-1] The index to search from.
14869     * @returns {*} Returns the matched element, else `undefined`.
14870     * @example
14871     *
14872     * _.findLast([1, 2, 3, 4], function(n) {
14873     *   return n % 2 == 1;
14874     * });
14875     * // => 3
14876     */
14877    var findLast = createFind(findLastIndex);
14878
14879    module.exports = findLast;
14880
14881
14882    /***/
14883  }),
14884/* 259 */
14885/***/ (function (module, exports, __webpack_require__) {
14886
14887    var baseFindIndex = __webpack_require__(105),
14888      baseIteratee = __webpack_require__(7),
14889      toInteger = __webpack_require__(106);
14890
14891    /* Built-in method references for those with the same name as other `lodash` methods. */
14892    var nativeMax = Math.max,
14893      nativeMin = Math.min;
14894
14895    /**
14896     * This method is like `_.findIndex` except that it iterates over elements
14897     * of `collection` from right to left.
14898     *
14899     * @static
14900     * @memberOf _
14901     * @since 2.0.0
14902     * @category Array
14903     * @param {Array} array The array to inspect.
14904     * @param {Function} [predicate=_.identity] The function invoked per iteration.
14905     * @param {number} [fromIndex=array.length-1] The index to search from.
14906     * @returns {number} Returns the index of the found element, else `-1`.
14907     * @example
14908     *
14909     * var users = [
14910     *   { 'user': 'barney',  'active': true },
14911     *   { 'user': 'fred',    'active': false },
14912     *   { 'user': 'pebbles', 'active': false }
14913     * ];
14914     *
14915     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
14916     * // => 2
14917     *
14918     * // The `_.matches` iteratee shorthand.
14919     * _.findLastIndex(users, { 'user': 'barney', 'active': true });
14920     * // => 0
14921     *
14922     * // The `_.matchesProperty` iteratee shorthand.
14923     * _.findLastIndex(users, ['active', false]);
14924     * // => 2
14925     *
14926     * // The `_.property` iteratee shorthand.
14927     * _.findLastIndex(users, 'active');
14928     * // => 0
14929     */
14930    function findLastIndex(array, predicate, fromIndex) {
14931      var length = array == null ? 0 : array.length;
14932      if (!length) {
14933        return -1;
14934      }
14935      var index = length - 1;
14936      if (fromIndex !== undefined) {
14937        index = toInteger(fromIndex);
14938        index = fromIndex < 0
14939          ? nativeMax(length + index, 0)
14940          : nativeMin(index, length - 1);
14941      }
14942      return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
14943    }
14944
14945    module.exports = findLastIndex;
14946
14947
14948    /***/
14949  }),
14950/* 260 */
14951/***/ (function (module, exports) {
14952
14953    function _interopRequireDefault(obj) {
14954      return obj && obj.__esModule ? obj : {
14955        default: obj
14956      };
14957    }
14958
14959    module.exports = _interopRequireDefault;
14960
14961    /***/
14962  }),
14963/* 261 */
14964/***/ (function (module, exports, __webpack_require__) {
14965
14966    "use strict";
14967    /**
14968     * Copyright (c) 2013-present, Facebook, Inc.
14969     *
14970     * This source code is licensed under the MIT license found in the
14971     * LICENSE file in the root directory of this source tree.
14972     *
14973     * @typechecks
14974     * 
14975     */
14976
14977    /*eslint-disable no-self-compare */
14978
14979
14980
14981    var hasOwnProperty = Object.prototype.hasOwnProperty;
14982
14983    /**
14984     * inlined Object.is polyfill to avoid requiring consumers ship their own
14985     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
14986     */
14987    function is(x, y) {
14988      // SameValue algorithm
14989      if (x === y) {
14990        // Steps 1-5, 7-10
14991        // Steps 6.b-6.e: +0 != -0
14992        // Added the nonzero y check to make Flow happy, but it is redundant
14993        return x !== 0 || y !== 0 || 1 / x === 1 / y;
14994      } else {
14995        // Step 6.a: NaN == NaN
14996        return x !== x && y !== y;
14997      }
14998    }
14999
15000    /**
15001     * Performs equality by iterating through keys on an object and returning false
15002     * when any key has values which are not strictly equal between the arguments.
15003     * Returns true when the values of all keys are strictly equal.
15004     */
15005    function shallowEqual(objA, objB) {
15006      if (is(objA, objB)) {
15007        return true;
15008      }
15009
15010      if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
15011        return false;
15012      }
15013
15014      var keysA = Object.keys(objA);
15015      var keysB = Object.keys(objB);
15016
15017      if (keysA.length !== keysB.length) {
15018        return false;
15019      }
15020
15021      // Test for A's keys different from B.
15022      for (var i = 0; i < keysA.length; i++) {
15023        if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
15024          return false;
15025        }
15026      }
15027
15028      return true;
15029    }
15030
15031    module.exports = shallowEqual;
15032
15033    /***/
15034  }),
15035/* 262 */
15036/***/ (function (module, exports, __webpack_require__) {
15037
15038    "use strict";
15039
15040
15041    Object.defineProperty(exports, "__esModule", {
15042      value: true
15043    });
15044    exports.ixInstances = void 0;
15045
15046    var _constants = __webpack_require__(2);
15047
15048    var _shared = __webpack_require__(10);
15049
15050    var _timm = __webpack_require__(19);
15051    /* eslint-env browser */
15052
15053
15054    var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
15055      IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
15056      IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
15057      IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
15058      IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
15059      IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
15060      IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED;
15061    var _shared$IX2EasingUtil = _shared.IX2EasingUtils,
15062      optimizeFloat = _shared$IX2EasingUtil.optimizeFloat,
15063      applyEasing = _shared$IX2EasingUtil.applyEasing,
15064      createBezierEasing = _shared$IX2EasingUtil.createBezierEasing;
15065    var RENDER_GENERAL = _constants.IX2EngineConstants.RENDER_GENERAL;
15066    var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
15067      getItemConfigByKey = _shared$IX2VanillaUti.getItemConfigByKey,
15068      getRenderType = _shared$IX2VanillaUti.getRenderType,
15069      getStyleProp = _shared$IX2VanillaUti.getStyleProp;
15070
15071    var continuousInstance = function continuousInstance(state, action) {
15072      var lastPosition = state.position,
15073        parameterId = state.parameterId,
15074        actionGroups = state.actionGroups,
15075        destinationKeys = state.destinationKeys,
15076        smoothing = state.smoothing,
15077        restingValue = state.restingValue,
15078        actionTypeId = state.actionTypeId,
15079        customEasingFn = state.customEasingFn;
15080      var parameters = action.payload.parameters;
15081      var velocity = Math.max(1 - smoothing, 0.01);
15082      var paramValue = parameters[parameterId];
15083
15084      if (paramValue == null) {
15085        velocity = 1;
15086        paramValue = restingValue;
15087      }
15088
15089      var nextPosition = Math.max(paramValue, 0) || 0;
15090      var positionDiff = optimizeFloat(nextPosition - lastPosition);
15091      var position = optimizeFloat(lastPosition + positionDiff * velocity);
15092      var keyframePosition = position * 100;
15093
15094      if (position === lastPosition && state.current) {
15095        return state;
15096      }
15097
15098      var fromActionItem;
15099      var toActionItem;
15100      var positionOffset;
15101      var positionRange;
15102
15103      for (var i = 0, length = actionGroups.length; i < length; i++) {
15104        var _actionGroups$i = actionGroups[i],
15105          keyframe = _actionGroups$i.keyframe,
15106          actionItems = _actionGroups$i.actionItems;
15107
15108        if (i === 0) {
15109          fromActionItem = actionItems[0];
15110        }
15111
15112        if (keyframePosition >= keyframe) {
15113          fromActionItem = actionItems[0];
15114          var nextGroup = actionGroups[i + 1];
15115          var hasNextItem = nextGroup && keyframePosition !== keyframe;
15116          toActionItem = hasNextItem ? nextGroup.actionItems[0] : null;
15117
15118          if (hasNextItem) {
15119            positionOffset = keyframe / 100;
15120            positionRange = (nextGroup.keyframe - keyframe) / 100;
15121          }
15122        }
15123      }
15124
15125      var current = {};
15126
15127      if (fromActionItem && !toActionItem) {
15128        for (var _i = 0, _length = destinationKeys.length; _i < _length; _i++) {
15129          var key = destinationKeys[_i];
15130          current[key] = getItemConfigByKey(actionTypeId, key, fromActionItem.config);
15131        }
15132      } else if (fromActionItem && toActionItem && positionOffset !== undefined && positionRange !== undefined) {
15133        var localPosition = (position - positionOffset) / positionRange;
15134        var easing = fromActionItem.config.easing;
15135        var eased = applyEasing(easing, localPosition, customEasingFn);
15136
15137        for (var _i2 = 0, _length2 = destinationKeys.length; _i2 < _length2; _i2++) {
15138          var _key = destinationKeys[_i2];
15139          var fromVal = getItemConfigByKey(actionTypeId, _key, fromActionItem.config);
15140          var toVal = getItemConfigByKey(actionTypeId, _key, toActionItem.config); // $FlowFixMe — toVal and fromVal could potentially be null, need to update type higher to determine number
15141
15142          var diff = toVal - fromVal; // $FlowFixMe
15143
15144          var value = diff * eased + fromVal;
15145          current[_key] = value;
15146        }
15147      }
15148
15149      return (0, _timm.merge)(state, {
15150        position: position,
15151        current: current
15152      });
15153    };
15154
15155    var timedInstance = function timedInstance(state, action) {
15156      var _state = state,
15157        active = _state.active,
15158        origin = _state.origin,
15159        start = _state.start,
15160        immediate = _state.immediate,
15161        renderType = _state.renderType,
15162        verbose = _state.verbose,
15163        actionItem = _state.actionItem,
15164        destination = _state.destination,
15165        destinationKeys = _state.destinationKeys,
15166        pluginDuration = _state.pluginDuration,
15167        instanceDelay = _state.instanceDelay,
15168        customEasingFn = _state.customEasingFn;
15169      var easing = actionItem.config.easing;
15170      var _actionItem$config = actionItem.config,
15171        duration = _actionItem$config.duration,
15172        delay = _actionItem$config.delay;
15173
15174      if (pluginDuration != null) {
15175        duration = pluginDuration;
15176      }
15177
15178      delay = instanceDelay != null ? instanceDelay : delay;
15179
15180      if (renderType === RENDER_GENERAL) {
15181        duration = 0;
15182      } else if (immediate) {
15183        duration = delay = 0;
15184      }
15185
15186      var now = action.payload.now;
15187
15188      if (active && origin) {
15189        var delta = now - (start + delay);
15190
15191        if (verbose) {
15192          var verboseDelta = now - start;
15193          var verboseDuration = duration + delay;
15194          var verbosePosition = optimizeFloat(Math.min(Math.max(0, verboseDelta / verboseDuration), 1));
15195          state = (0, _timm.set)(state, 'verboseTimeElapsed', verboseDuration * verbosePosition);
15196        }
15197
15198        if (delta < 0) {
15199          return state;
15200        }
15201
15202        var position = optimizeFloat(Math.min(Math.max(0, delta / duration), 1));
15203        var eased = applyEasing(easing, position, customEasingFn);
15204        var newProps = {};
15205        var current = null;
15206
15207        if (destinationKeys.length) {
15208          current = destinationKeys.reduce(function (result, key) {
15209            var destValue = destination[key];
15210            var originVal = parseFloat(origin[key]) || 0;
15211            var diff = parseFloat(destValue) - originVal;
15212            var value = diff * eased + originVal;
15213            result[key] = value;
15214            return result;
15215          }, {});
15216        }
15217
15218        newProps.current = current;
15219        newProps.position = position;
15220
15221        if (position === 1) {
15222          newProps.active = false;
15223          newProps.complete = true;
15224        }
15225
15226        return (0, _timm.merge)(state, newProps);
15227      }
15228
15229      return state;
15230    };
15231
15232    var ixInstances = function ixInstances() {
15233      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
15234      var action = arguments.length > 1 ? arguments[1] : undefined;
15235
15236      switch (action.type) {
15237        case IX2_RAW_DATA_IMPORTED:
15238          {
15239            return action.payload.ixInstances || Object.freeze({});
15240          }
15241
15242        case IX2_SESSION_STOPPED:
15243          {
15244            return Object.freeze({});
15245          }
15246
15247        case IX2_INSTANCE_ADDED:
15248          {
15249            var _action$payload = action.payload,
15250              instanceId = _action$payload.instanceId,
15251              elementId = _action$payload.elementId,
15252              actionItem = _action$payload.actionItem,
15253              eventId = _action$payload.eventId,
15254              eventTarget = _action$payload.eventTarget,
15255              eventStateKey = _action$payload.eventStateKey,
15256              actionListId = _action$payload.actionListId,
15257              groupIndex = _action$payload.groupIndex,
15258              isCarrier = _action$payload.isCarrier,
15259              origin = _action$payload.origin,
15260              destination = _action$payload.destination,
15261              immediate = _action$payload.immediate,
15262              verbose = _action$payload.verbose,
15263              continuous = _action$payload.continuous,
15264              parameterId = _action$payload.parameterId,
15265              actionGroups = _action$payload.actionGroups,
15266              smoothing = _action$payload.smoothing,
15267              restingValue = _action$payload.restingValue,
15268              pluginInstance = _action$payload.pluginInstance,
15269              pluginDuration = _action$payload.pluginDuration,
15270              instanceDelay = _action$payload.instanceDelay;
15271            var actionTypeId = actionItem.actionTypeId;
15272            var renderType = getRenderType(actionTypeId);
15273            var styleProp = getStyleProp(renderType, actionTypeId);
15274            var destinationKeys = Object.keys(destination).filter(function (key) {
15275              return destination[key] != null;
15276            });
15277            var easing = actionItem.config.easing;
15278            return (0, _timm.set)(state, instanceId, {
15279              id: instanceId,
15280              elementId: elementId,
15281              active: false,
15282              position: 0,
15283              start: 0,
15284              origin: origin,
15285              destination: destination,
15286              destinationKeys: destinationKeys,
15287              immediate: immediate,
15288              verbose: verbose,
15289              current: null,
15290              actionItem: actionItem,
15291              actionTypeId: actionTypeId,
15292              eventId: eventId,
15293              eventTarget: eventTarget,
15294              eventStateKey: eventStateKey,
15295              actionListId: actionListId,
15296              groupIndex: groupIndex,
15297              renderType: renderType,
15298              isCarrier: isCarrier,
15299              styleProp: styleProp,
15300              continuous: continuous,
15301              parameterId: parameterId,
15302              actionGroups: actionGroups,
15303              smoothing: smoothing,
15304              restingValue: restingValue,
15305              pluginInstance: pluginInstance,
15306              pluginDuration: pluginDuration,
15307              instanceDelay: instanceDelay,
15308              customEasingFn: Array.isArray(easing) && easing.length === 4 ? createBezierEasing(easing) : undefined
15309            });
15310          }
15311
15312        case IX2_INSTANCE_STARTED:
15313          {
15314            var _action$payload2 = action.payload,
15315              _instanceId = _action$payload2.instanceId,
15316              time = _action$payload2.time;
15317            return (0, _timm.mergeIn)(state, [_instanceId], {
15318              active: true,
15319              complete: false,
15320              start: time
15321            });
15322          }
15323
15324        case IX2_INSTANCE_REMOVED:
15325          {
15326            var _instanceId2 = action.payload.instanceId;
15327
15328            if (!state[_instanceId2]) {
15329              return state;
15330            }
15331
15332            var newState = {};
15333            var keys = Object.keys(state);
15334            var length = keys.length;
15335
15336            for (var i = 0; i < length; i++) {
15337              var key = keys[i];
15338
15339              if (key !== _instanceId2) {
15340                newState[key] = state[key];
15341              }
15342            }
15343
15344            return newState;
15345          }
15346
15347        case IX2_ANIMATION_FRAME_CHANGED:
15348          {
15349            var _newState = state;
15350
15351            var _keys = Object.keys(state);
15352
15353            var _length3 = _keys.length;
15354
15355            for (var _i3 = 0; _i3 < _length3; _i3++) {
15356              var _key2 = _keys[_i3];
15357              var instance = state[_key2];
15358              var reducer = instance.continuous ? continuousInstance : timedInstance;
15359              _newState = (0, _timm.set)(_newState, _key2, reducer(instance, action));
15360            }
15361
15362            return _newState;
15363          }
15364
15365        default:
15366          {
15367            return state;
15368          }
15369      }
15370    };
15371
15372    exports.ixInstances = ixInstances;
15373
15374    /***/
15375  }),
15376/* 263 */
15377/***/ (function (module, exports, __webpack_require__) {
15378
15379    "use strict";
15380
15381
15382    Object.defineProperty(exports, "__esModule", {
15383      value: true
15384    });
15385    exports.ixParameters = void 0;
15386
15387    var _constants = __webpack_require__(2);
15388
15389    var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
15390      IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
15391      IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
15392      IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED; // prettier-ignore
15393
15394    var ixParameters = function ixParameters() {
15395      var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
15396        /*mutable flat state*/
15397      };
15398      var action = arguments.length > 1 ? arguments[1] : undefined;
15399
15400      switch (action.type) {
15401        case IX2_RAW_DATA_IMPORTED:
15402          {
15403            return action.payload.ixParameters || {
15404              /*mutable flat state*/
15405            };
15406          }
15407
15408        case IX2_SESSION_STOPPED:
15409          {
15410            return {
15411              /*mutable flat state*/
15412            };
15413          }
15414
15415        case IX2_PARAMETER_CHANGED:
15416          {
15417            var _action$payload = action.payload,
15418              key = _action$payload.key,
15419              value = _action$payload.value;
15420            state[key] = value;
15421            return state;
15422          }
15423
15424        default:
15425          {
15426            return state;
15427          }
15428      }
15429    };
15430
15431    exports.ixParameters = ixParameters;
15432
15433    /***/
15434  }),
15435/* 264 */
15436/***/ (function (module, exports) {
15437
15438    function _objectWithoutPropertiesLoose(source, excluded) {
15439      if (source == null) return {};
15440      var target = {};
15441      var sourceKeys = Object.keys(source);
15442      var key, i;
15443
15444      for (i = 0; i < sourceKeys.length; i++) {
15445        key = sourceKeys[i];
15446        if (excluded.indexOf(key) >= 0) continue;
15447        target[key] = source[key];
15448      }
15449
15450      return target;
15451    }
15452
15453    module.exports = _objectWithoutPropertiesLoose;
15454
15455    /***/
15456  }),
15457/* 265 */
15458/***/ (function (module, exports, __webpack_require__) {
15459
15460    var baseKeys = __webpack_require__(54),
15461      getTag = __webpack_require__(56),
15462      isArrayLike = __webpack_require__(12),
15463      isString = __webpack_require__(266),
vendor: 6,197 bytes, lines 15464-15683
15464      stringSize = __webpack_require__(267);
15465
15466    /** `Object#toString` result references. */
15467    var mapTag = '[object Map]',
15468      setTag = '[object Set]';
15469
15470    /**
15471     * Gets the size of `collection` by returning its length for array-like
15472     * values or the number of own enumerable string keyed properties for objects.
15473     *
15474     * @static
15475     * @memberOf _
15476     * @since 0.1.0
15477     * @category Collection
15478     * @param {Array|Object|string} collection The collection to inspect.
15479     * @returns {number} Returns the collection size.
15480     * @example
15481     *
15482     * _.size([1, 2, 3]);
15483     * // => 3
15484     *
15485     * _.size({ 'a': 1, 'b': 2 });
15486     * // => 2
15487     *
15488     * _.size('pebbles');
15489     * // => 7
15490     */
15491    function size(collection) {
15492      if (collection == null) {
15493        return 0;
15494      }
15495      if (isArrayLike(collection)) {
15496        return isString(collection) ? stringSize(collection) : collection.length;
15497      }
15498      var tag = getTag(collection);
15499      if (tag == mapTag || tag == setTag) {
15500        return collection.size;
15501      }
15502      return baseKeys(collection).length;
15503    }
15504
15505    module.exports = size;
15506
15507
15508    /***/
15509  }),
15510/* 266 */
15511/***/ (function (module, exports, __webpack_require__) {
15512
15513    var baseGetTag = __webpack_require__(11),
15514      isArray = __webpack_require__(1),
15515      isObjectLike = __webpack_require__(9);
15516
15517    /** `Object#toString` result references. */
15518    var stringTag = '[object String]';
15519
15520    /**
15521     * Checks if `value` is classified as a `String` primitive or object.
15522     *
15523     * @static
15524     * @since 0.1.0
15525     * @memberOf _
15526     * @category Lang
15527     * @param {*} value The value to check.
15528     * @returns {boolean} Returns `true` if `value` is a string, else `false`.
15529     * @example
15530     *
15531     * _.isString('abc');
15532     * // => true
15533     *
15534     * _.isString(1);
15535     * // => false
15536     */
15537    function isString(value) {
15538      return typeof value == 'string' ||
15539        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
15540    }
15541
15542    module.exports = isString;
15543
15544
15545    /***/
15546  }),
15547/* 267 */
15548/***/ (function (module, exports, __webpack_require__) {
15549
15550    var asciiSize = __webpack_require__(268),
15551      hasUnicode = __webpack_require__(269),
15552      unicodeSize = __webpack_require__(270);
15553
15554    /**
15555     * Gets the number of symbols in `string`.
15556     *
15557     * @private
15558     * @param {string} string The string to inspect.
15559     * @returns {number} Returns the string size.
15560     */
15561    function stringSize(string) {
15562      return hasUnicode(string)
15563        ? unicodeSize(string)
15564        : asciiSize(string);
15565    }
15566
15567    module.exports = stringSize;
15568
15569
15570    /***/
15571  }),
15572/* 268 */
15573/***/ (function (module, exports, __webpack_require__) {
15574
15575    var baseProperty = __webpack_require__(104);
15576
15577    /**
15578     * Gets the size of an ASCII `string`.
15579     *
15580     * @private
15581     * @param {string} string The string inspect.
15582     * @returns {number} Returns the string size.
15583     */
15584    var asciiSize = baseProperty('length');
15585
15586    module.exports = asciiSize;
15587
15588
15589    /***/
15590  }),
15591/* 269 */
15592/***/ (function (module, exports) {
15593
15594    /** Used to compose unicode character classes. */
15595    var rsAstralRange = '\\ud800-\\udfff',
15596      rsComboMarksRange = '\\u0300-\\u036f',
15597      reComboHalfMarksRange = '\\ufe20-\\ufe2f',
15598      rsComboSymbolsRange = '\\u20d0-\\u20ff',
15599      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
15600      rsVarRange = '\\ufe0e\\ufe0f';
15601
15602    /** Used to compose unicode capture groups. */
15603    var rsZWJ = '\\u200d';
15604
15605    /** 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/). */
15606    var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');
15607
15608    /**
15609     * Checks if `string` contains Unicode symbols.
15610     *
15611     * @private
15612     * @param {string} string The string to inspect.
15613     * @returns {boolean} Returns `true` if a symbol is found, else `false`.
15614     */
15615    function hasUnicode(string) {
15616      return reHasUnicode.test(string);
15617    }
15618
15619    module.exports = hasUnicode;
15620
15621
15622    /***/
15623  }),
15624/* 270 */
15625/***/ (function (module, exports) {
15626
15627    /** Used to compose unicode character classes. */
15628    var rsAstralRange = '\\ud800-\\udfff',
15629      rsComboMarksRange = '\\u0300-\\u036f',
15630      reComboHalfMarksRange = '\\ufe20-\\ufe2f',
15631      rsComboSymbolsRange = '\\u20d0-\\u20ff',
15632      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
15633      rsVarRange = '\\ufe0e\\ufe0f';
15634
15635    /** Used to compose unicode capture groups. */
15636    var rsAstral = '[' + rsAstralRange + ']',
15637      rsCombo = '[' + rsComboRange + ']',
15638      rsFitz = '\\ud83c[\\udffb-\\udfff]',
15639      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
15640      rsNonAstral = '[^' + rsAstralRange + ']',
15641      rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
15642      rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
15643      rsZWJ = '\\u200d';
15644
15645    /** Used to compose unicode regexes. */
15646    var reOptMod = rsModifier + '?',
15647      rsOptVar = '[' + rsVarRange + ']?',
15648      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
15649      rsSeq = rsOptVar + reOptMod + rsOptJoin,
15650      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
15651
15652    /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
15653    var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
15654
15655    /**
15656     * Gets the size of a Unicode `string`.
15657     *
15658     * @private
15659     * @param {string} string The string inspect.
15660     * @returns {number} Returns the string size.
15661     */
15662    function unicodeSize(string) {
15663      var result = reUnicode.lastIndex = 0;
15664      while (reUnicode.test(string)) {
15665        ++result;
15666      }
15667      return result;
15668    }
15669
15670    module.exports = unicodeSize;
15671
15672
15673    /***/
15674  }),
15675/* 271 */
15676/***/ (function (module, exports, __webpack_require__) {
15677
15678    var baseIteratee = __webpack_require__(7),
15679      negate = __webpack_require__(272),
15680      pickBy = __webpack_require__(273);
15681
15682    /**
15683     * The opposite of `_.pickBy`;
15683 this method creates an object composed of
15684     * the own and inherited enumerable string keyed properties of `object` that
15685     * `predicate` doesn't return truthy for. The predicate is invoked with two
15686     * arguments: (value, key).
15687     *
15688     * @static
15689     * @memberOf _
15690     * @since 4.0.0
15691     * @category Object
15692     * @param {Object} object The source object.
15693     * @param {Function} [predicate=_.identity] The function invoked per property.
15694     * @returns {Object} Returns the new object.
15695     * @example
15696     *
15697     * var object = { 'a': 1, 'b': '2', 'c': 3 };
15698     *
15699     * _.omitBy(object, _.isNumber);
15700     * // => { 'b': '2' }
15701     */
15702    function omitBy(object, predicate) {
15703      return pickBy(object, negate(baseIteratee(predicate)));
15704    }
15705
15706    module.exports = omitBy;
15707
15708
15709    /***/
15710  }),
15711/* 272 */
15712/***/ (function (module, exports) {
15713
15714    /** Error message constants. */
15715    var FUNC_ERROR_TEXT = 'Expected a function';
15716
15717    /**
15718     * Creates a function that negates the result of the predicate `func`. The
15719     * `func` predicate is invoked with the `this` binding and arguments of the
15720     * created function.
15721     *
15722     * @static
15723     * @memberOf _
15724     * @since 3.0.0
15725     * @category Function
15726     * @param {Function} predicate The predicate to negate.
15727     * @returns {Function} Returns the new negated function.
15728     * @example
15729     *
15730     * function isEven(n) {
15731     *   return n % 2 == 0;
15732     * }
15733     *
15734     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
15735     * // => [1, 3, 5]
15736     */
15737    function negate(predicate) {
15738      if (typeof predicate != 'function') {
15739        throw new TypeError(FUNC_ERROR_TEXT);
15740      }
15741      return function () {
15742        var args = arguments;
15743        switch (args.length) {
15744          case 0: return !predicate.call(this);
15745          case 1: return !predicate.call(this, args[0]);
15746          case 2: return !predicate.call(this, args[0], args[1]);
15747          case 3: return !predicate.call(this, args[0], args[1], args[2]);
15748        }
15749        return !predicate.apply(this, args);
15750      };
15751    }
15752
15753    module.exports = negate;
15754
15755
15756    /***/
15757  }),
15758/* 273 */
15759/***/ (function (module, exports, __webpack_require__) {
15760
15761    var arrayMap = __webpack_require__(103),
15762      baseIteratee = __webpack_require__(7),
15763      basePickBy = __webpack_require__(274),
15764      getAllKeysIn = __webpack_require__(277);
15765
15766    /**
vendor: 6,063 bytes, lines 15767-15976
15767     * Creates an object composed of the `object` properties `predicate` returns
15768     * truthy for. The predicate is invoked with two arguments: (value, key).
15769     *
15770     * @static
15771     * @memberOf _
15772     * @since 4.0.0
15773     * @category Object
15774     * @param {Object} object The source object.
15775     * @param {Function} [predicate=_.identity] The function invoked per property.
15776     * @returns {Object} Returns the new object.
15777     * @example
15778     *
15779     * var object = { 'a': 1, 'b': '2', 'c': 3 };
15780     *
15781     * _.pickBy(object, _.isNumber);
15782     * // => { 'a': 1, 'c': 3 }
15783     */
15784    function pickBy(object, predicate) {
15785      if (object == null) {
15786        return {};
15787      }
15788      var props = arrayMap(getAllKeysIn(object), function (prop) {
15789        return [prop];
15790      });
15791      predicate = baseIteratee(predicate);
15792      return basePickBy(object, props, function (value, path) {
15793        return predicate(value, path[0]);
15794      });
15795    }
15796
15797    module.exports = pickBy;
15798
15799
15800    /***/
15801  }),
15802/* 274 */
15803/***/ (function (module, exports, __webpack_require__) {
15804
15805    var baseGet = __webpack_require__(58),
15806      baseSet = __webpack_require__(275),
15807      castPath = __webpack_require__(35);
15808
15809    /**
15810     * The base implementation of  `_.pickBy` without support for iteratee shorthands.
15811     *
15812     * @private
15813     * @param {Object} object The source object.
15814     * @param {string[]} paths The property paths to pick.
15815     * @param {Function} predicate The function invoked per property.
15816     * @returns {Object} Returns the new object.
15817     */
15818    function basePickBy(object, paths, predicate) {
15819      var index = -1,
15820        length = paths.length,
15821        result = {};
15822
15823      while (++index < length) {
15824        var path = paths[index],
15825          value = baseGet(object, path);
15826
15827        if (predicate(value, path)) {
15828          baseSet(result, castPath(path, object), value);
15829        }
15830      }
15831      return result;
15832    }
15833
15834    module.exports = basePickBy;
15835
15836
15837    /***/
15838  }),
15839/* 275 */
15840/***/ (function (module, exports, __webpack_require__) {
15841
15842    var assignValue = __webpack_require__(276),
15843      castPath = __webpack_require__(35),
15844      isIndex = __webpack_require__(51),
15845      isObject = __webpack_require__(6),
15846      toKey = __webpack_require__(21);
15847
15848    /**
15849     * The base implementation of `_.set`.
15850     *
15851     * @private
15852     * @param {Object} object The object to modify.
15853     * @param {Array|string} path The path of the property to set.
15854     * @param {*} value The value to set.
15855     * @param {Function} [customizer] The function to customize path creation.
15856     * @returns {Object} Returns `object`.
15857     */
15858    function baseSet(object, path, value, customizer) {
15859      if (!isObject(object)) {
15860        return object;
15861      }
15862      path = castPath(path, object);
15863
15864      var index = -1,
15865        length = path.length,
15866        lastIndex = length - 1,
15867        nested = object;
15868
15869      while (nested != null && ++index < length) {
15870        var key = toKey(path[index]),
15871          newValue = value;
15872
15873        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
15874          return object;
15875        }
15876
15877        if (index != lastIndex) {
15878          var objValue = nested[key];
15879          newValue = customizer ? customizer(objValue, key, nested) : undefined;
15880          if (newValue === undefined) {
15881            newValue = isObject(objValue)
15882              ? objValue
15883              : (isIndex(path[index + 1]) ? [] : {});
15884          }
15885        }
15886        assignValue(nested, key, newValue);
15887        nested = nested[key];
15888      }
15889      return object;
15890    }
15891
15892    module.exports = baseSet;
15893
15894
15895    /***/
15896  }),
15897/* 276 */
15898/***/ (function (module, exports, __webpack_require__) {
15899
15900    var baseAssignValue = __webpack_require__(116),
15901      eq = __webpack_require__(46);
15902
15903    /** Used for built-in method references. */
15904    var objectProto = Object.prototype;
15905
15906    /** Used to check objects for own properties. */
15907    var hasOwnProperty = objectProto.hasOwnProperty;
15908
15909    /**
15910     * Assigns `value` to `key` of `object` if the existing value is not equivalent
15911     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
15912     * for equality comparisons.
15913     *
15914     * @private
15915     * @param {Object} object The object to modify.
15916     * @param {string} key The key of the property to assign.
15917     * @param {*} value The value to assign.
15918     */
15919    function assignValue(object, key, value) {
15920      var objValue = object[key];
15921      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
15922        (value === undefined && !(key in object))) {
15923        baseAssignValue(object, key, value);
15924      }
15925    }
15926
15927    module.exports = assignValue;
15928
15929
15930    /***/
15931  }),
15932/* 277 */
15933/***/ (function (module, exports, __webpack_require__) {
15934
15935    var baseGetAllKeys = __webpack_require__(94),
15936      getSymbolsIn = __webpack_require__(278),
15937      keysIn = __webpack_require__(280);
15938
15939    /**
15940     * Creates an array of own and inherited enumerable property names and
15941     * symbols of `object`.
15942     *
15943     * @private
15944     * @param {Object} object The object to query.
15945     * @returns {Array} Returns the array of property names and symbols.
15946     */
15947    function getAllKeysIn(object) {
15948      return baseGetAllKeys(object, keysIn, getSymbolsIn);
15949    }
15950
15951    module.exports = getAllKeysIn;
15952
15953
15954    /***/
15955  }),
15956/* 278 */
15957/***/ (function (module, exports, __webpack_require__) {
15958
15959    var arrayPush = __webpack_require__(49),
15960      getPrototype = __webpack_require__(279),
15961      getSymbols = __webpack_require__(95),
15962      stubArray = __webpack_require__(96);
15963
15964    /* Built-in method references for those with the same name as other `lodash` methods. */
15965    var nativeGetSymbols = Object.getOwnPropertySymbols;
15966
15967    /**
15968     * Creates an array of the own and inherited enumerable symbols of `object`.
15969     *
15970     * @private
15971     * @param {Object} object The object to query.
15972     * @returns {Array} Returns the array of symbols.
15973     */
15974    var getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) {
15975      var result = [];
15976      while (object) {
vendor: 9,963 bytes, lines 15977-16345
15977        arrayPush(result, getSymbols(object));
15978        object = getPrototype(object);
15979      }
15980      return result;
15981    };
15982
15983    module.exports = getSymbolsIn;
15984
15985
15986    /***/
15987  }),
15988/* 279 */
15989/***/ (function (module, exports, __webpack_require__) {
15990
15991    var overArg = __webpack_require__(99);
15992
15993    /** Built-in value references. */
15994    var getPrototype = overArg(Object.getPrototypeOf, Object);
15995
15996    module.exports = getPrototype;
15997
15998
15999    /***/
16000  }),
16001/* 280 */
16002/***/ (function (module, exports, __webpack_require__) {
16003
16004    var arrayLikeKeys = __webpack_require__(97),
16005      baseKeysIn = __webpack_require__(281),
16006      isArrayLike = __webpack_require__(12);
16007
16008    /**
16009     * Creates an array of the own and inherited enumerable property names of `object`.
16010     *
16011     * **Note:** Non-object values are coerced to objects.
16012     *
16013     * @static
16014     * @memberOf _
16015     * @since 3.0.0
16016     * @category Object
16017     * @param {Object} object The object to query.
16018     * @returns {Array} Returns the array of property names.
16019     * @example
16020     *
16021     * function Foo() {
16022     *   this.a = 1;
16023     *   this.b = 2;
16024     * }
16025     *
16026     * Foo.prototype.c = 3;
16027     *
16028     * _.keysIn(new Foo);
16029     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
16030     */
16031    function keysIn(object) {
16032      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
16033    }
16034
16035    module.exports = keysIn;
16036
16037
16038    /***/
16039  }),
16040/* 281 */
16041/***/ (function (module, exports, __webpack_require__) {
16042
16043    var isObject = __webpack_require__(6),
16044      isPrototype = __webpack_require__(55),
16045      nativeKeysIn = __webpack_require__(282);
16046
16047    /** Used for built-in method references. */
16048    var objectProto = Object.prototype;
16049
16050    /** Used to check objects for own properties. */
16051    var hasOwnProperty = objectProto.hasOwnProperty;
16052
16053    /**
16054     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
16055     *
16056     * @private
16057     * @param {Object} object The object to query.
16058     * @returns {Array} Returns the array of property names.
16059     */
16060    function baseKeysIn(object) {
16061      if (!isObject(object)) {
16062        return nativeKeysIn(object);
16063      }
16064      var isProto = isPrototype(object),
16065        result = [];
16066
16067      for (var key in object) {
16068        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
16069          result.push(key);
16070        }
16071      }
16072      return result;
16073    }
16074
16075    module.exports = baseKeysIn;
16076
16077
16078    /***/
16079  }),
16080/* 282 */
16081/***/ (function (module, exports) {
16082
16083    /**
16084     * This function is like
16085     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
16086     * except that it includes inherited enumerable properties.
16087     *
16088     * @private
16089     * @param {Object} object The object to query.
16090     * @returns {Array} Returns the array of property names.
16091     */
16092    function nativeKeysIn(object) {
16093      var result = [];
16094      if (object != null) {
16095        for (var key in Object(object)) {
16096          result.push(key);
16097        }
16098      }
16099      return result;
16100    }
16101
16102    module.exports = nativeKeysIn;
16103
16104
16105    /***/
16106  }),
16107/* 283 */
16108/***/ (function (module, exports, __webpack_require__) {
16109
16110    var baseKeys = __webpack_require__(54),
16111      getTag = __webpack_require__(56),
16112      isArguments = __webpack_require__(34),
16113      isArray = __webpack_require__(1),
16114      isArrayLike = __webpack_require__(12),
16115      isBuffer = __webpack_require__(50),
16116      isPrototype = __webpack_require__(55),
16117      isTypedArray = __webpack_require__(52);
16118
16119    /** `Object#toString` result references. */
16120    var mapTag = '[object Map]',
16121      setTag = '[object Set]';
16122
16123    /** Used for built-in method references. */
16124    var objectProto = Object.prototype;
16125
16126    /** Used to check objects for own properties. */
16127    var hasOwnProperty = objectProto.hasOwnProperty;
16128
16129    /**
16130     * Checks if `value` is an empty object, collection, map, or set.
16131     *
16132     * Objects are considered empty if they have no own enumerable string keyed
16133     * properties.
16134     *
16135     * Array-like values such as `arguments` objects, arrays, buffers, strings, or
16136     * jQuery-like collections are considered empty if they have a `length` of `0`.
16137     * Similarly, maps and sets are considered empty if they have a `size` of `0`.
16138     *
16139     * @static
16140     * @memberOf _
16141     * @since 0.1.0
16142     * @category Lang
16143     * @param {*} value The value to check.
16144     * @returns {boolean} Returns `true` if `value` is empty, else `false`.
16145     * @example
16146     *
16147     * _.isEmpty(null);
16148     * // => true
16149     *
16150     * _.isEmpty(true);
16151     * // => true
16152     *
16153     * _.isEmpty(1);
16154     * // => true
16155     *
16156     * _.isEmpty([1, 2, 3]);
16157     * // => false
16158     *
16159     * _.isEmpty({ 'a': 1 });
16160     * // => false
16161     */
16162    function isEmpty(value) {
16163      if (value == null) {
16164        return true;
16165      }
16166      if (isArrayLike(value) &&
16167        (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
16168          isBuffer(value) || isTypedArray(value) || isArguments(value))) {
16169        return !value.length;
16170      }
16171      var tag = getTag(value);
16172      if (tag == mapTag || tag == setTag) {
16173        return !value.size;
16174      }
16175      if (isPrototype(value)) {
16176        return !baseKeys(value).length;
16177      }
16178      for (var key in value) {
16179        if (hasOwnProperty.call(value, key)) {
16180          return false;
16181        }
16182      }
16183      return true;
16184    }
16185
16186    module.exports = isEmpty;
16187
16188
16189    /***/
16190  }),
16191/* 284 */
16192/***/ (function (module, exports, __webpack_require__) {
16193
16194    var baseAssignValue = __webpack_require__(116),
16195      baseForOwn = __webpack_require__(113),
16196      baseIteratee = __webpack_require__(7);
16197
16198    /**
16199     * Creates an object with the same keys as `object` and values generated
16200     * by running each own enumerable string keyed property of `object` thru
16201     * `iteratee`. The iteratee is invoked with three arguments:
16202     * (value, key, object).
16203     *
16204     * @static
16205     * @memberOf _
16206     * @since 2.4.0
16207     * @category Object
16208     * @param {Object} object The object to iterate over.
16209     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
16210     * @returns {Object} Returns the new mapped object.
16211     * @see _.mapKeys
16212     * @example
16213     *
16214     * var users = {
16215     *   'fred':    { 'user': 'fred',    'age': 40 },
16216     *   'pebbles': { 'user': 'pebbles', 'age': 1 }
16217     * };
16218     *
16219     * _.mapValues(users, function(o) { return o.age; });
16220     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
16221     *
16222     * // The `_.property` iteratee shorthand.
16223     * _.mapValues(users, 'age');
16224     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
16225     */
16226    function mapValues(object, iteratee) {
16227      var result = {};
16228      iteratee = baseIteratee(iteratee, 3);
16229
16230      baseForOwn(object, function (value, key, object) {
16231        baseAssignValue(result, key, iteratee(value, key, object));
16232      });
16233      return result;
16234    }
16235
16236    module.exports = mapValues;
16237
16238
16239    /***/
16240  }),
16241/* 285 */
16242/***/ (function (module, exports, __webpack_require__) {
16243
16244    var arrayEach = __webpack_require__(286),
16245      baseEach = __webpack_require__(112),
16246      castFunction = __webpack_require__(287),
16247      isArray = __webpack_require__(1);
16248
16249    /**
16250     * Iterates over elements of `collection` and invokes `iteratee` for each element.
16251     * The iteratee is invoked with three arguments: (value, index|key, collection).
16252     * Iteratee functions may exit iteration early by explicitly returning `false`.
16253     *
16254     * **Note:** As with other "Collections" methods, objects with a "length"
16255     * property are iterated like arrays. To avoid this behavior use `_.forIn`
16256     * or `_.forOwn` for object iteration.
16257     *
16258     * @static
16259     * @memberOf _
16260     * @since 0.1.0
16261     * @alias each
16262     * @category Collection
16263     * @param {Array|Object} collection The collection to iterate over.
16264     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
16265     * @returns {Array|Object} Returns `collection`.
16266     * @see _.forEachRight
16267     * @example
16268     *
16269     * _.forEach([1, 2], function(value) {
16270     *   console.log(value);
16271     * });
16272     * // => Logs `1` then `2`.
16273     *
16274     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
16275     *   console.log(key);
16276     * });
16277     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
16278     */
16279    function forEach(collection, iteratee) {
16280      var func = isArray(collection) ? arrayEach : baseEach;
16281      return func(collection, castFunction(iteratee));
16282    }
16283
16284    module.exports = forEach;
16285
16286
16287    /***/
16288  }),
16289/* 286 */
16290/***/ (function (module, exports) {
16291
16292    /**
16293     * A specialized version of `_.forEach` for arrays without support for
16294     * iteratee shorthands.
16295     *
16296     * @private
16297     * @param {Array} [array] The array to iterate over.
16298     * @param {Function} iteratee The function invoked per iteration.
16299     * @returns {Array} Returns `array`.
16300     */
16301    function arrayEach(array, iteratee) {
16302      var index = -1,
16303        length = array == null ? 0 : array.length;
16304
16305      while (++index < length) {
16306        if (iteratee(array[index], index, array) === false) {
16307          break;
16308        }
16309      }
16310      return array;
16311    }
16312
16313    module.exports = arrayEach;
16314
16315
16316    /***/
16317  }),
16318/* 287 */
16319/***/ (function (module, exports, __webpack_require__) {
16320
16321    var identity = __webpack_require__(60);
16322
16323    /**
16324     * Casts `value` to `identity` if it's not a function.
16325     *
16326     * @private
16327     * @param {*} value The value to inspect.
16328     * @returns {Function} Returns cast function.
16329     */
16330    function castFunction(value) {
16331      return typeof value == 'function' ? value : identity;
16332    }
16333
16334    module.exports = castFunction;
16335
16336
16337    /***/
16338  }),
16339/* 288 */
16340/***/ (function (module, exports, __webpack_require__) {
16341
16342    var debounce = __webpack_require__(289),
16343      isObject = __webpack_require__(6);
16344
16345    /** Error message constants. */
vendor: 4,353 bytes, lines 16346-16446
16346    var FUNC_ERROR_TEXT = 'Expected a function';
16347
16348    /**
16349     * Creates a throttled function that only invokes `func` at most once per
16350     * every `wait` milliseconds. The throttled function comes with a `cancel`
16351     * method to cancel delayed `func` invocations and a `flush` method to
16352     * immediately invoke them. Provide `options` to indicate whether `func`
16353     * should be invoked on the leading and/or trailing edge of the `wait`
16354     * timeout. The `func` is invoked with the last arguments provided to the
16355     * throttled function. Subsequent calls to the throttled function return the
16356     * result of the last `func` invocation.
16357     *
16358     * **Note:** If `leading` and `trailing` options are `true`, `func` is
16359     * invoked on the trailing edge of the timeout only if the throttled function
16360     * is invoked more than once during the `wait` timeout.
16361     *
16362     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16363     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16364     *
16365     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16366     * for details over the differences between `_.throttle` and `_.debounce`.
16367     *
16368     * @static
16369     * @memberOf _
16370     * @since 0.1.0
16371     * @category Function
16372     * @param {Function} func The function to throttle.
16373     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
16374     * @param {Object} [options={}] The options object.
16375     * @param {boolean} [options.leading=true]
16376     *  Specify invoking on the leading edge of the timeout.
16377     * @param {boolean} [options.trailing=true]
16378     *  Specify invoking on the trailing edge of the timeout.
16379     * @returns {Function} Returns the new throttled function.
16380     * @example
16381     *
16382     * // Avoid excessively updating the position while scrolling.
16383     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
16384     *
16385     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
16386     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
16387     * jQuery(element).on('click', throttled);
16388     *
16389     * // Cancel the trailing throttled invocation.
16390     * jQuery(window).on('popstate', throttled.cancel);
16391     */
16392    function throttle(func, wait, options) {
16393      var leading = true,
16394        trailing = true;
16395
16396      if (typeof func != 'function') {
16397        throw new TypeError(FUNC_ERROR_TEXT);
16398      }
16399      if (isObject(options)) {
16400        leading = 'leading' in options ? !!options.leading : leading;
16401        trailing = 'trailing' in options ? !!options.trailing : trailing;
16402      }
16403      return debounce(func, wait, {
16404        'leading': leading,
16405        'maxWait': wait,
16406        'trailing': trailing
16407      });
16408    }
16409
16410    module.exports = throttle;
16411
16412
16413    /***/
16414  }),
16415/* 289 */
16416/***/ (function (module, exports, __webpack_require__) {
16417
16418    var isObject = __webpack_require__(6),
16419      now = __webpack_require__(290),
16420      toNumber = __webpack_require__(61);
16421
16422    /** Error message constants. */
16423    var FUNC_ERROR_TEXT = 'Expected a function';
16424
16425    /* Built-in method references for those with the same name as other `lodash` methods. */
16426    var nativeMax = Math.max,
16427      nativeMin = Math.min;
16428
16429    /**
16430     * Creates a debounced function that delays invoking `func` until after `wait`
16431     * milliseconds have elapsed since the last time the debounced function was
16432     * invoked. The debounced function comes with a `cancel` method to cancel
16433     * delayed `func` invocations and a `flush` method to immediately invoke them.
16434     * Provide `options` to indicate whether `func` should be invoked on the
16435     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
16436     * with the last arguments provided to the debounced function. Subsequent
16437     * calls to the debounced function return the result of the last `func`
16438     * invocation.
16439     *
16440     * **Note:** If `leading` and `trailing` options are `true`, `func` is
16441     * invoked on the trailing edge of the timeout only if the debounced function
16442     * is invoked more than once during the `wait` timeout.
16443     *
16444     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
16445     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
16446     *
16447     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
16448     * for details over the differences between `_.debounce` and `_.throttle`.
16449     *
16450     * @static
16451     * @memberOf _
16452     * @since 0.1.0
16453     * @category Function
16454     * @param {Function} func The function to debounce.
16455     * @param {number} [wait=0] The number of milliseconds to delay.
16456     * @param {Object} [options={}] The options object.
16457     * @param {boolean} [options.leading=false]
16458     *  Specify invoking on the leading edge of the timeout.
16459     * @param {number} [options.maxWait]
16460     *  The maximum time `func` is allowed to be delayed before it's invoked.
16461     * @param {boolean} [options.trailing=true]
16462     *  Specify invoking on the trailing edge of the timeout.
16463     * @returns {Function} Returns the new debounced function.
16464     * @example
16465     *
16466     * // Avoid costly calculations while the window size is in flux.
16467     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
16468     *
16469     * // Invoke `sendMail` when clicked, debouncing subsequent calls.
16470     * jQuery(element).on('click', _.debounce(sendMail, 300, {
16471     *   'leading': true,
16472     *   'trailing': false
16473     * }));
16474     *
16475     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
16476     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
16477     * var source = new EventSource('/stream');
16478     * jQuery(source).on('message', debounced);
16479     *
16480     * // Cancel the trailing debounced invocation.
16481     * jQuery(window).on('popstate', debounced.cancel);
16482     */
16483    function debounce(func, wait, options) {
16484      var lastArgs,
16485        lastThis,
16486        maxWait,
16487        result,
16488        timerId,
16489        lastCallTime,
16490        lastInvokeTime = 0,
16491        leading = false,
16492        maxing = false,
16493        trailing = true;
16494
16495      if (typeof func != 'function') {
16496        throw new TypeError(FUNC_ERROR_TEXT);
16497      }
16498      wait = toNumber(wait) || 0;
16499      if (isObject(options)) {
16500        leading = !!options.leading;
16501        maxing = 'maxWait' in options;
16502        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
16503        trailing = 'trailing' in options ? !!options.trailing : trailing;
16504      }
16505
16506      function invokeFunc(time) {
16507        var args = lastArgs,
16508          thisArg = lastThis;
16509
16510        lastArgs = lastThis = undefined;
16511        lastInvokeTime = time;
16512        result = func.apply(thisArg, args);
16513        return result;
16514      }
16515
16516      function leadingEdge(time) {
16517        // Reset any `maxWait` timer.
16518        lastInvokeTime = time;
16519        // Start the timer for the trailing edge.
16520        timerId = setTimeout(timerExpired, wait);
16521        // Invoke the leading edge.
16522        return leading ? invokeFunc(time) : result;
16523      }
16524
16525      function remainingWait(time) {
16526        var timeSinceLastCall = time - lastCallTime,
16527          timeSinceLastInvoke = time - lastInvokeTime,
16528          timeWaiting = wait - timeSinceLastCall;
16529
16530        return maxing
16531          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
16532          : timeWaiting;
16533      }
16534
16535      function shouldInvoke(time) {
16536        var timeSinceLastCall = time - lastCallTime,
16537          timeSinceLastInvoke = time - lastInvokeTime;
16538
16539        // Either this is the first call, activity has stopped and we're at the
16540        // trailing edge, the system time has gone backwards and we're treating
16541        // it as the trailing edge, or we've hit the `maxWait` limit.
16542        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
16543          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
16544      }
16545
16546      function timerExpired() {
16547        var time = now();
16548        if (shouldInvoke(time)) {
16549          return trailingEdge(time);
16550        }
16551        // Restart the timer.
16552        timerId = setTimeout(timerExpired, remainingWait(time));
16553      }
16554
16555      function trailingEdge(time) {
16556        timerId = undefined;
16557
16558        // Only invoke if we have `lastArgs` which means `func` has been
16559        // debounced at least once.
16560        if (trailing && lastArgs) {
16561          return invokeFunc(time);
16562        }
16563        lastArgs = lastThis = undefined;
16564        return result;
16565      }
16566
16567      function cancel() {
16568        if (timerId !== undefined) {
16569          clearTimeout(timerId);
16570        }
16571        lastInvokeTime = 0;
16572        lastArgs = lastCallTime = lastThis = timerId = undefined;
16573      }
16574
16575      function flush() {
16576        return timerId === undefined ? result : trailingEdge(now());
16577      }
16578
16579      function debounced() {
16580        var time = now(),
16581          isInvoking = shouldInvoke(time);
16582
16583        lastArgs = arguments;
16584        lastThis = this;
16585        lastCallTime = time;
16586
16587        if (isInvoking) {
16588          if (timerId === undefined) {
16589            return leadingEdge(lastCallTime);
16590          }
16591          if (maxing) {
16592            // Handle invocations in a tight loop.
16593            clearTimeout(timerId);
16594            timerId = setTimeout(timerExpired, wait);
16595            return invokeFunc(lastCallTime);
16596          }
16597        }
16598        if (timerId === undefined) {
16599          timerId = setTimeout(timerExpired, wait);
16600        }
16601        return result;
16602      }
16603      debounced.cancel = cancel;
16604      debounced.flush = flush;
16605      return debounced;
16606    }
16607
16608    module.exports = debounce;
16609
16610
16611    /***/
16612  }),
16613/* 290 */
16614/***/ (function (module, exports, __webpack_require__) {
16615
16616    var root = __webpack_require__(5);
16617
16618    /**
16619     * Gets the timestamp of the number of milliseconds that have elapsed since
16620     * the Unix epoch (1 January 1970 00:00:00 UTC).
16621     *
16622     * @static
16623     * @memberOf _
16624     * @since 2.4.0
16625     * @category Date
16626     * @returns {number} Returns the timestamp.
16627     * @example
16628     *
16629     * _.defer(function(stamp) {
16630     *   console.log(_.now() - stamp);
16631     * }, _.now());
16632     * // => Logs the number of milliseconds it took for the deferred invocation.
16633     */
16634    var now = function () {
16635      return root.Date.now();
16636    };
16637
16638    module.exports = now;
16639
16640
16641    /***/
16642  }),
16643/* 291 */
16644/***/ (function (module, exports, __webpack_require__) {
16645
16646    "use strict";
16647
16648
16649    var _interopRequireDefault = __webpack_require__(0);
16650
16651    var _typeof2 = _interopRequireDefault(__webpack_require__(13));
16652
16653    Object.defineProperty(exports, "__esModule", {
16654      value: true
16655    });
16656    exports.setStyle = setStyle;
16657    exports.getStyle = getStyle;
16658    exports.getProperty = getProperty;
16659    exports.matchSelector = matchSelector;
16660    exports.getQuerySelector = getQuerySelector;
16661    exports.getValidDocument = getValidDocument;
16662    exports.queryDocument = queryDocument;
16663    exports.elementContains = elementContains;
16664    exports.isSiblingNode = isSiblingNode;
16665    exports.getChildElements = getChildElements;
16666    exports.getSiblingElements = getSiblingElements;
16667    exports.getRefType = getRefType;
16668    exports.getClosestElement = void 0;
16669
16670    var _shared = __webpack_require__(10);
16671
16672    var _constants = __webpack_require__(2);
16673    /* eslint-env browser */
16674
16675
16676    var ELEMENT_MATCHES = _shared.IX2BrowserSupport.ELEMENT_MATCHES;
16677    var _constants$IX2EngineC = _constants.IX2EngineConstants,
16678      IX2_ID_DELIMITER = _constants$IX2EngineC.IX2_ID_DELIMITER,
16679      HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
16680      PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
16681      WF_PAGE = _constants$IX2EngineC.WF_PAGE;
16682
16683    function setStyle(element, prop, value) {
16684      // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
16685      element.style[prop] = value;
16686    }
16687
16688    function getStyle(element, prop) {
16689      // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
16690      return element.style[prop];
16691    }
16692
16693    function getProperty(element, prop) {
16694      // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
16695      return element[prop];
16696    }
16697
16698    function matchSelector(selector) {
16699      // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
16700      return function (element) {
16701        return element[ELEMENT_MATCHES](selector);
16702      };
16703    }
16704
16705    function getQuerySelector(_ref) {
16706      var id = _ref.id,
16707        selector = _ref.selector;
16708
16709      if (id) {
16710        var nodeId = id;
16711
16712        if (id.indexOf(IX2_ID_DELIMITER) !== -1) {
16713          var pair = id.split(IX2_ID_DELIMITER);
16714          var pageId = pair[0];
16715          nodeId = pair[1]; // Short circuit query if we're on the wrong page
16716          // $FlowIgnore — if documentElement is null crash
16717
16718          if (pageId !== document.documentElement.getAttribute(WF_PAGE)) {
16719            return null;
16720          }
16721        }
16722
16723        return "[data-w-id^=\"".concat(nodeId, "\"]");
16724      }
16725
16726      return selector;
16727    }
16728
16729    function getValidDocument(pageId) {
16730      if (pageId == null || // $FlowIgnore — if documentElement is null crash
16731        pageId === document.documentElement.getAttribute(WF_PAGE)) {
16732        return document;
16733      }
16734
16735      return null;
16736    }
16737
16738    function queryDocument(baseSelector, descendantSelector) {
16739      return Array.prototype.slice.call(document.querySelectorAll(descendantSelector ? baseSelector + ' ' + descendantSelector : baseSelector));
16740    }
16741
16742    function elementContains(parent, child) {
16743      return parent.contains(child);
16744    }
16745
16746    function isSiblingNode(a, b) {
16747      return a !== b && a.parentNode === b.parentNode;
16748    }
16749
16750    function getChildElements(sourceElements) {
16751      var childElements = [];
16752
16753      for (var i = 0, _ref2 = sourceElements || [], length = _ref2.length; i < length; i++) {
16754        var children = sourceElements[i].children;
16755        var childCount = children.length;
16756
16757        if (!childCount) {
16758          continue;
16759        }
16760
16761        for (var j = 0; j < childCount; j++) {
16762          childElements.push(children[j]);
16763        }
16764      }
16765
16766      return childElements;
16767    } // $FlowFixMe
16768
16769
16770    function getSiblingElements() {
16771      var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
16772      var elements = [];
16773      var parentCache = [];
16774
16775      for (var i = 0, length = sourceElements.length; i < length; i++) {
16776        var parentNode = sourceElements[i].parentNode;
16777
16778        if (!parentNode || !parentNode.children || !parentNode.children.length) {
16779          continue;
16780        }
16781
16782        if (parentCache.indexOf(parentNode) !== -1) {
16783          continue;
16784        }
16785
16786        parentCache.push(parentNode);
16787        var el = parentNode.firstElementChild;
16788
16789        while (el != null) {
16790          if (sourceElements.indexOf(el) === -1) {
16791            elements.push(el);
16792          }
16793
16794          el = el.nextElementSibling;
16795        }
16796      }
16797
16798      return elements;
16799    }
16800
16801    var getClosestElement = Element.prototype.closest ? function (element, selector) {
16802      // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
16803      if (!document.documentElement.contains(element)) {
16804        return null;
16805      }
16806
16807      return element.closest(selector);
16808    } : function (element, selector) {
16809      // $FlowIgnore — if documentElement is null crash
16810      if (!document.documentElement.contains(element)) {
16811        return null;
16812      }
16813
16814      var el = element;
16815
16816      do {
16817        // $FlowIgnore — if documentElement is null crash
16818        if (el[ELEMENT_MATCHES] && el[ELEMENT_MATCHES](selector)) {
16819          return el;
16820        }
16821
16822        el = el.parentNode;
16823      } while (el != null);
16824
16825      return null;
16826    };
16827    exports.getClosestElement = getClosestElement;
16828
16829    function getRefType(ref) {
16830      if (ref != null && (0, _typeof2["default"])(ref) == 'object') {
16831        return ref instanceof Element ? HTML_ELEMENT : PLAIN_OBJECT;
16832      }
16833
16834      return null;
16835    }
16836
16837    /***/
16838  }),
16839/* 292 */
16840/***/ (function (module, exports, __webpack_require__) {
16841
16842    "use strict";
16843
16844
16845    var _interopRequireDefault2 = __webpack_require__(0);
16846
16847    var _defineProperty2 = _interopRequireDefault2(__webpack_require__(27));
16848
16849    var _typeof2 = _interopRequireDefault2(__webpack_require__(13));
16850
16851    var _default2;
16852
16853    var _interopRequireDefault = __webpack_require__(0);
16854
16855    Object.defineProperty(exports, "__esModule", {
16856      value: true
16857    });
16858    exports["default"] = void 0;
16859
16860    var _extends2 = _interopRequireDefault(__webpack_require__(28));
16861
16862    var _flow = _interopRequireDefault(__webpack_require__(293));
16863
16864    var _get = _interopRequireDefault(__webpack_require__(57));
16865
16866    var _clamp = _interopRequireDefault(__webpack_require__(312));
16867
16868    var _constants = __webpack_require__(2);
16869
16870    var _IX2VanillaEngine = __webpack_require__(115);
16871
16872    var _IX2EngineActions = __webpack_require__(62);
16873
16874    var _shared = __webpack_require__(10);
16875    /* eslint-env browser */
16876
16877
16878    var _constants$EventTypeC = _constants.EventTypeConsts,
16879      MOUSE_CLICK = _constants$EventTypeC.MOUSE_CLICK,
16880      MOUSE_SECOND_CLICK = _constants$EventTypeC.MOUSE_SECOND_CLICK,
16881      MOUSE_DOWN = _constants$EventTypeC.MOUSE_DOWN,
16882      MOUSE_UP = _constants$EventTypeC.MOUSE_UP,
16883      MOUSE_OVER = _constants$EventTypeC.MOUSE_OVER,
16884      MOUSE_OUT = _constants$EventTypeC.MOUSE_OUT,
16885      DROPDOWN_CLOSE = _constants$EventTypeC.DROPDOWN_CLOSE,
16886      DROPDOWN_OPEN = _constants$EventTypeC.DROPDOWN_OPEN,
16887      SLIDER_ACTIVE = _constants$EventTypeC.SLIDER_ACTIVE,
16888      SLIDER_INACTIVE = _constants$EventTypeC.SLIDER_INACTIVE,
16889      TAB_ACTIVE = _constants$EventTypeC.TAB_ACTIVE,
16890      TAB_INACTIVE = _constants$EventTypeC.TAB_INACTIVE,
16891      NAVBAR_CLOSE = _constants$EventTypeC.NAVBAR_CLOSE,
16892      NAVBAR_OPEN = _constants$EventTypeC.NAVBAR_OPEN,
16893      MOUSE_MOVE = _constants$EventTypeC.MOUSE_MOVE,
16894      PAGE_SCROLL_DOWN = _constants$EventTypeC.PAGE_SCROLL_DOWN,
16895      SCROLL_INTO_VIEW = _constants$EventTypeC.SCROLL_INTO_VIEW,
16896      SCROLL_OUT_OF_VIEW = _constants$EventTypeC.SCROLL_OUT_OF_VIEW,
16897      PAGE_SCROLL_UP = _constants$EventTypeC.PAGE_SCROLL_UP,
16898      SCROLLING_IN_VIEW = _constants$EventTypeC.SCROLLING_IN_VIEW,
16899      PAGE_FINISH = _constants$EventTypeC.PAGE_FINISH,
16900      ECOMMERCE_CART_CLOSE = _constants$EventTypeC.ECOMMERCE_CART_CLOSE,
16901      ECOMMERCE_CART_OPEN = _constants$EventTypeC.ECOMMERCE_CART_OPEN,
16902      PAGE_START = _constants$EventTypeC.PAGE_START,
16903      PAGE_SCROLL = _constants$EventTypeC.PAGE_SCROLL;
16904    var COMPONENT_ACTIVE = 'COMPONENT_ACTIVE';
16905    var COMPONENT_INACTIVE = 'COMPONENT_INACTIVE';
16906    var COLON_DELIMITER = _constants.IX2EngineConstants.COLON_DELIMITER;
16907    var getNamespacedParameterId = _shared.IX2VanillaUtils.getNamespacedParameterId;
16908
16909    var composableFilter = function composableFilter(predicate) {
16910      return function (options) {
16911        if ((0, _typeof2["default"])(options) === 'object' && predicate(options)) {
16912          return true;
16913        }
16914
16915        return options;
16916      };
16917    };
16918
16919    var isElement = composableFilter(function (_ref) {
16920      var element = _ref.element,
16921        nativeEvent = _ref.nativeEvent;
16922      return element === nativeEvent.target;
16923    });
16924    var containsElement = composableFilter(function (_ref2) {
16925      var element = _ref2.element,
16926        nativeEvent = _ref2.nativeEvent;
16927      return element.contains(nativeEvent.target);
16928    });
16929    var isOrContainsElement = (0, _flow["default"])([isElement, containsElement]);
16930
16931    var getAutoStopEvent = function getAutoStopEvent(store, autoStopEventId) {
16932      if (autoStopEventId) {
16933        var _store$getState = store.getState(),
16934          ixData = _store$getState.ixData;
16935
16936        var events = ixData.events;
16937        var eventToStop = events[autoStopEventId];
16938
16939        if (eventToStop && !AUTO_STOP_DISABLED_EVENTS[eventToStop.eventTypeId]) {
16940          return eventToStop;
16941        }
16942      }
16943
16944      return null;
16945    };
16946
16947    var hasAutoStopEvent = function hasAutoStopEvent(_ref3) {
16948      var store = _ref3.store,
16949        event = _ref3.event;
16950      var eventAction = event.action;
16951      var autoStopEventId = eventAction.config.autoStopEventId;
16952      return Boolean(getAutoStopEvent(store, autoStopEventId));
16953    };
16954
16955    var actionGroupCreator = function actionGroupCreator(_ref4, state) {
16956      var store = _ref4.store,
16957        event = _ref4.event,
16958        element = _ref4.element,
16959        eventStateKey = _ref4.eventStateKey;
16960      var eventAction = event.action,
16961        eventId = event.id;
16962      var _eventAction$config = eventAction.config,
16963        actionListId = _eventAction$config.actionListId,
16964        autoStopEventId = _eventAction$config.autoStopEventId;
16965      var eventToStop = getAutoStopEvent(store, autoStopEventId);
16966
16967      if (eventToStop) {
16968        (0, _IX2VanillaEngine.stopActionGroup)({
16969          store: store,
16970          eventId: autoStopEventId,
16971          eventTarget: element,
16972          eventStateKey: autoStopEventId + COLON_DELIMITER + eventStateKey.split(COLON_DELIMITER)[1],
16973          actionListId: (0, _get["default"])(eventToStop, 'action.config.actionListId')
16974        });
16975      }
16976
16977      (0, _IX2VanillaEngine.stopActionGroup)({
16978        store: store,
16979        eventId: eventId,
16980        eventTarget: element,
16981        eventStateKey: eventStateKey,
16982        actionListId: actionListId
16983      });
16984      (0, _IX2VanillaEngine.startActionGroup)({
16985        store: store,
16986        eventId: eventId,
16987        eventTarget: element,
16988        eventStateKey: eventStateKey,
16989        actionListId: actionListId
16990      });
16991      return state;
16992    }; // $FlowFixMe
16993
16994
16995    var withFilter = function withFilter(filter, handler) {
16996      return function (options, state) {
16997        return (// $FlowFixMe
16998          filter(options, state) === true ? handler(options, state) : state
16999        );
17000      };
17001    };
17002
17003    var baseActionGroupOptions = {
17004      handler: withFilter(isOrContainsElement, actionGroupCreator)
17005    };
17006    var baseActivityActionGroupOptions = (0, _extends2["default"])({}, baseActionGroupOptions, {
17007      types: [COMPONENT_ACTIVE, COMPONENT_INACTIVE].join(' ')
17008    });
17009    var SCROLL_EVENT_TYPES = [{
17010      target: window,
17011      types: 'resize orientationchange',
17012      throttle: true
17013    }, {
17014      target: document,
17015      types: 'scroll wheel readystatechange IX2_PAGE_UPDATE',
17016      throttle: true
17017    }];
17018    var MOUSE_OVER_OUT_TYPES = 'mouseover mouseout';
17019    var baseScrollActionGroupOptions = {
17020      types: SCROLL_EVENT_TYPES
17021    };
17022    var AUTO_STOP_DISABLED_EVENTS = {
17023      PAGE_START: PAGE_START,
17024      PAGE_FINISH: PAGE_FINISH
17025    };
17026
17027    var getDocumentState = function () {
17028      var supportOffset = window.pageXOffset !== undefined;
17029      var isCSS1Compat = document.compatMode === 'CSS1Compat';
17030      var rootElement = isCSS1Compat ? document.documentElement : document.body;
17031      return function () {
17032        return {
17033          // $FlowFixMe
17034          scrollLeft: supportOffset ? window.pageXOffset : rootElement.scrollLeft,
17035          // $FlowFixMe
17036          scrollTop: supportOffset ? window.pageYOffset : rootElement.scrollTop,
17037          // required to remove elasticity in Safari scrolling.
17038          stiffScrollTop: (0, _clamp["default"])( // $FlowFixMe
17039            supportOffset ? window.pageYOffset : rootElement.scrollTop, 0, // $FlowFixMe
17040            rootElement.scrollHeight - window.innerHeight),
17041          // $FlowFixMe
17042          scrollWidth: rootElement.scrollWidth,
17043          // $FlowFixMe
17044          scrollHeight: rootElement.scrollHeight,
17045          // $FlowFixMe
17046          clientWidth: rootElement.clientWidth,
17047          // $FlowFixMe
17048          clientHeight: rootElement.clientHeight,
17049          innerWidth: window.innerWidth,
17050          innerHeight: window.innerHeight
17051        };
17052      };
17053    }();
17054
17055    var areBoxesIntersecting = function areBoxesIntersecting(a, b) {
17056      return !(a.left > b.right || a.right < b.left || a.top > b.bottom || a.bottom < b.top);
17057    };
17058
17059    var isElementHovered = function isElementHovered(_ref5) {
17060      var element = _ref5.element,
17061        nativeEvent = _ref5.nativeEvent;
17062      var type = nativeEvent.type,
17063        target = nativeEvent.target,
17064        relatedTarget = nativeEvent.relatedTarget;
17065      var containsTarget = element.contains(target);
17066
17067      if (type === 'mouseover' && containsTarget) {
17068        return true;
17069      }
17070
17071      var containsRelated = element.contains(relatedTarget);
17072
17073      if (type === 'mouseout' && containsTarget && containsRelated) {
17074        return true;
17075      }
17076
17077      return false;
17078    };
17079
17080    var isElementVisible = function isElementVisible(options) {
17081      var element = options.element,
17082        config = options.event.config;
17083
17084      var _getDocumentState = getDocumentState(),
17085        clientWidth = _getDocumentState.clientWidth,
17086        clientHeight = _getDocumentState.clientHeight;
17087
17088      var scrollOffsetValue = config.scrollOffsetValue;
17089      var scrollOffsetUnit = config.scrollOffsetUnit;
17090      var isPX = scrollOffsetUnit === 'PX';
17091      var offsetPadding = isPX ? scrollOffsetValue : clientHeight * (scrollOffsetValue || 0) / 100;
17092      return areBoxesIntersecting(element.getBoundingClientRect(), {
17093        left: 0,
17094        top: offsetPadding,
17095        right: clientWidth,
17096        bottom: clientHeight - offsetPadding
17097      });
17098    };
17099
17100    var whenComponentActiveChange = function whenComponentActiveChange(handler) {
17101      return function (options, oldState) {
17102        var type = options.nativeEvent.type; // prettier-ignore
17103
17104        var isActive = [COMPONENT_ACTIVE, COMPONENT_INACTIVE].indexOf(type) !== -1 ? type === COMPONENT_ACTIVE : oldState.isActive;
17105        var newState = (0, _extends2["default"])({}, oldState, {
17106          isActive: isActive
17107        });
17108
17109        if (!oldState || newState.isActive !== oldState.isActive) {
17110          return handler(options, newState) || newState;
17111        }
17112
17113        return newState;
17114      };
17115    };
17116
17117    var whenElementHoverChange = function whenElementHoverChange(handler) {
17118      return function (options, oldState) {
17119        var newState = {
17120          elementHovered: isElementHovered(options)
17121        };
17122
17123        if (oldState ? newState.elementHovered !== oldState.elementHovered : newState.elementHovered) {
17124          return handler(options, newState) || newState;
17125        }
17126
17127        return newState;
17128      };
17129    }; // $FlowFixMe
17130
17131
17132    var whenElementVisibiltyChange = function whenElementVisibiltyChange(handler) {
17133      return function (options, oldState) {
17134        var newState = (0, _extends2["default"])({}, oldState, {
17135          elementVisible: isElementVisible(options)
17136        });
17137
17138        if (oldState ? newState.elementVisible !== oldState.elementVisible : newState.elementVisible) {
17139          return handler(options, newState) || newState;
17140        }
17141
17142        return newState;
17143      };
17144    }; // $FlowFixMe
17145
17146
17147    var whenScrollDirectionChange = function whenScrollDirectionChange(handler) {
17148      return function (options) {
17149        var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
17150
17151        var _getDocumentState2 = getDocumentState(),
17152          scrollTop = _getDocumentState2.stiffScrollTop,
17153          scrollHeight = _getDocumentState2.scrollHeight,
17154          innerHeight = _getDocumentState2.innerHeight;
17155
17156        var _options$event = options.event,
17157          config = _options$event.config,
17158          eventTypeId = _options$event.eventTypeId;
17159        var scrollOffsetValue = config.scrollOffsetValue,
17160          scrollOffsetUnit = config.scrollOffsetUnit;
17161        var isPX = scrollOffsetUnit === 'PX';
17162        var scrollHeightBounds = scrollHeight - innerHeight; // percent top since innerHeight may change for mobile devices which also changes the scrollTop value.
17163
17164        var percentTop = Number((scrollTop / scrollHeightBounds).toFixed(2)); // no state change
17165
17166        if (oldState && oldState.percentTop === percentTop) {
17167          return oldState;
17168        }
17169
17170        var scrollTopPadding = (isPX ? scrollOffsetValue : innerHeight * (scrollOffsetValue || 0) / 100) / scrollHeightBounds;
17171        var scrollingDown;
17172        var scrollDirectionChanged;
17173        var anchorTop = 0;
17174
17175        if (oldState) {
17176          scrollingDown = percentTop > oldState.percentTop;
17177          scrollDirectionChanged = oldState.scrollingDown !== scrollingDown;
17178          anchorTop = scrollDirectionChanged ? percentTop : oldState.anchorTop;
17179        }
17180
17181        var inBounds = eventTypeId === PAGE_SCROLL_DOWN ? percentTop >= anchorTop + scrollTopPadding : percentTop <= anchorTop - scrollTopPadding;
17182        var newState = (0, _extends2["default"])({}, oldState, {
17183          percentTop: percentTop,
17184          inBounds: inBounds,
17185          anchorTop: anchorTop,
17186          scrollingDown: scrollingDown
17187        });
17188
17189        if (oldState && inBounds && (scrollDirectionChanged || newState.inBounds !== oldState.inBounds)) {
17190          return handler(options, newState) || newState;
17191        }
17192
17193        return newState;
17194      };
17195    };
17196
17197    var pointIntersects = function pointIntersects(point, rect) {
17198      return point.left > rect.left && point.left < rect.right && point.top > rect.top && point.top < rect.bottom;
17199    };
17200
17201    var whenPageLoadFinish = function whenPageLoadFinish(handler) {
17202      return function (options, oldState) {
17203        var newState = {
17204          finished: document.readyState === 'complete'
17205        };
17206
17207        if (newState.finished && !(oldState && oldState.finshed)) {
17208          handler(options);
17209        }
17210
17211        return newState;
17212      };
17213    };
17214
17215    var whenPageLoadStart = function whenPageLoadStart(handler) {
17216      return function (options, oldState) {
17217        var newState = {
17218          started: true
17219        };
17220
17221        if (!oldState) {
17222          handler(options);
17223        }
17224
17225        return newState;
17226      };
17227    };
17228
17229    var whenClickCountChange = function whenClickCountChange(handler) {
17230      return function (options) {
17231        var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17232          clickCount: 0
17233        };
17234        var newState = {
17235          clickCount: oldState.clickCount % 2 + 1
17236        };
17237
17238        if (newState.clickCount !== oldState.clickCount) {
17239          return handler(options, newState) || newState;
17240        }
17241
17242        return newState;
17243      };
17244    };
17245
17246    var getComponentActiveOptions = function getComponentActiveOptions() {
17247      var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
17248      return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
17249        handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
17250          return state.isActive ? baseActionGroupOptions.handler(options, state) : state;
17251        }))
17252      });
17253    };
17254
17255    var getComponentInactiveOptions = function getComponentInactiveOptions() {
17256      var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
17257      return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
17258        handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
17259          return !state.isActive ? baseActionGroupOptions.handler(options, state) : state;
17260        }))
17261      });
17262    };
17263
17264    var scrollIntoOutOfViewOptions = (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17265      handler: whenElementVisibiltyChange(function (options, state) {
17266        var elementVisible = state.elementVisible;
17267        var event = options.event,
17268          store = options.store;
17269
17270        var _store$getState2 = store.getState(),
17271          ixData = _store$getState2.ixData;
17272
17273        var events = ixData.events; // trigger the handler only once if only one of SCROLL_INTO or SCROLL_OUT_OF event types
17274        // are registered.
17275
17276        if (!events[event.action.config.autoStopEventId] && state.triggered) {
17277          return state;
17278        }
17279
17280        if (event.eventTypeId === SCROLL_INTO_VIEW === elementVisible) {
17281          actionGroupCreator(options);
17282          return (0, _extends2["default"])({}, state, {
17283            triggered: true
17284          });
17285        } else {
17286          return state;
17287        }
17288      })
17289    });
17290    var MOUSE_OUT_ROUND_THRESHOLD = 0.05;
17291
17292    var _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, {
17293      types: 'ecommerce-cart-open',
17294      handler: withFilter(isOrContainsElement, actionGroupCreator)
17295    }), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_CLOSE, {
17296      types: 'ecommerce-cart-close',
17297      handler: withFilter(isOrContainsElement, actionGroupCreator)
17298    }), (0, _defineProperty2["default"])(_default2, MOUSE_CLICK, {
17299      types: 'click',
17300      handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref6) {
17301        var clickCount = _ref6.clickCount;
17302
17303        if (hasAutoStopEvent(options)) {
17304          clickCount === 1 && actionGroupCreator(options);
17305        } else {
17306          actionGroupCreator(options);
17307        }
17308      }))
17309    }), (0, _defineProperty2["default"])(_default2, MOUSE_SECOND_CLICK, {
17310      types: 'click',
17311      handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref7) {
17312        var clickCount = _ref7.clickCount;
17313
17314        if (clickCount === 2) {
17315          actionGroupCreator(options);
17316        }
17317      }))
17318    }), (0, _defineProperty2["default"])(_default2, MOUSE_DOWN, (0, _extends2["default"])({}, baseActionGroupOptions, {
17319      types: 'mousedown'
17320    })), (0, _defineProperty2["default"])(_default2, MOUSE_UP, (0, _extends2["default"])({}, baseActionGroupOptions, {
17321      types: 'mouseup'
17322    })), (0, _defineProperty2["default"])(_default2, MOUSE_OVER, {
17323      types: MOUSE_OVER_OUT_TYPES,
17324      handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
17325        if (state.elementHovered) {
17326          actionGroupCreator(options);
17327        }
17328      }))
17329    }), (0, _defineProperty2["default"])(_default2, MOUSE_OUT, {
17330      types: MOUSE_OVER_OUT_TYPES,
17331      handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
17332        if (!state.elementHovered) {
17333          actionGroupCreator(options);
17334        }
17335      }))
17336    }), (0, _defineProperty2["default"])(_default2, MOUSE_MOVE, {
17337      types: 'mousemove mouseout scroll',
17338      handler: function handler( // $FlowFixMe
17339        _ref8) {
17340        var store = _ref8.store,
17341          element = _ref8.element,
17342          eventConfig = _ref8.eventConfig,
17343          nativeEvent = _ref8.nativeEvent,
17344          eventStateKey = _ref8.eventStateKey;
17345        var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17346          clientX: 0,
17347          clientY: 0,
17348          pageX: 0,
17349          pageY: 0
17350        };
17351        var basedOn = eventConfig.basedOn,
17352          selectedAxis = eventConfig.selectedAxis,
17353          continuousParameterGroupId = eventConfig.continuousParameterGroupId,
17354          reverse = eventConfig.reverse,
17355          _eventConfig$restingS = eventConfig.restingState,
17356          restingState = _eventConfig$restingS === void 0 ? 0 : _eventConfig$restingS;
17357        var _nativeEvent$clientX = nativeEvent.clientX,
17358          clientX = _nativeEvent$clientX === void 0 ? state.clientX : _nativeEvent$clientX,
17359          _nativeEvent$clientY = nativeEvent.clientY,
17360          clientY = _nativeEvent$clientY === void 0 ? state.clientY : _nativeEvent$clientY,
17361          _nativeEvent$pageX = nativeEvent.pageX,
17362          pageX = _nativeEvent$pageX === void 0 ? state.pageX : _nativeEvent$pageX,
17363          _nativeEvent$pageY = nativeEvent.pageY,
17364          pageY = _nativeEvent$pageY === void 0 ? state.pageY : _nativeEvent$pageY;
17365        var isXAxis = selectedAxis === 'X_AXIS';
17366        var isMouseOut = nativeEvent.type === 'mouseout';
17367        var value = restingState / 100;
17368        var namespacedParameterId = continuousParameterGroupId;
17369        var elementHovered = false;
17370
17371        switch (basedOn) {
17372          case _constants.EventBasedOn.VIEWPORT:
17373            {
17374              value = isXAxis ? Math.min(clientX, window.innerWidth) / window.innerWidth : Math.min(clientY, window.innerHeight) / window.innerHeight;
17375              break;
17376            }
17377
17378          case _constants.EventBasedOn.PAGE:
17379            {
17380              var _getDocumentState3 = getDocumentState(),
17381                scrollLeft = _getDocumentState3.scrollLeft,
17382                scrollTop = _getDocumentState3.scrollTop,
17383                scrollWidth = _getDocumentState3.scrollWidth,
17384                scrollHeight = _getDocumentState3.scrollHeight;
17385
17386              value = isXAxis ? Math.min(scrollLeft + pageX, scrollWidth) / scrollWidth : Math.min(scrollTop + pageY, scrollHeight) / scrollHeight;
17387              break;
17388            }
17389
17390          case _constants.EventBasedOn.ELEMENT:
17391          default:
17392            {
17393              namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
17394              var isMouseEvent = nativeEvent.type.indexOf('mouse') === 0; // Use isOrContainsElement for mouse events since they are fired from the target
17395
17396              if (isMouseEvent && isOrContainsElement({
17397                element: element,
17398                nativeEvent: nativeEvent
17399              }) !== true) {
17400                break;
17401              }
17402
17403              var rect = element.getBoundingClientRect();
17404              var left = rect.left,
17405                top = rect.top,
17406                width = rect.width,
17407                height = rect.height; // Otherwise we'll need to calculate the mouse position from the previous handler state
17408              // against the target element's rect
17409
17410              if (!isMouseEvent && !pointIntersects({
17411                left: clientX,
17412                top: clientY
17413              }, rect)) {
17414                break;
17415              }
17416
17417              elementHovered = true;
17418              value = isXAxis ? (clientX - left) / width : (clientY - top) / height;
17419              break;
17420            }
17421        } // cover case where the event is a mouse out, but the value is not quite at 100%
17422
17423
17424        if (isMouseOut && (value > 1 - MOUSE_OUT_ROUND_THRESHOLD || value < MOUSE_OUT_ROUND_THRESHOLD)) {
17425          value = Math.round(value);
17426        } // Only update based on element if the mouse is moving over or has just left the element
17427
17428
17429        if (basedOn !== _constants.EventBasedOn.ELEMENT || elementHovered || // $FlowFixMe
17430          elementHovered !== state.elementHovered) {
17431          value = reverse ? 1 - value : value;
17432          store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, value));
17433        }
17434
17435        return {
17436          elementHovered: elementHovered,
17437          clientX: clientX,
17438          clientY: clientY,
17439          pageX: pageX,
17440          pageY: pageY
17441        };
17442      }
17443    }), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL, {
17444      types: SCROLL_EVENT_TYPES,
17445      // $FlowFixMe
17446      handler: function handler(_ref9) {
17447        var store = _ref9.store,
17448          eventConfig = _ref9.eventConfig;
17449        var continuousParameterGroupId = eventConfig.continuousParameterGroupId,
17450          reverse = eventConfig.reverse;
17451
17452        var _getDocumentState4 = getDocumentState(),
17453          scrollTop = _getDocumentState4.scrollTop,
17454          scrollHeight = _getDocumentState4.scrollHeight,
17455          clientHeight = _getDocumentState4.clientHeight;
17456
17457        var value = scrollTop / (scrollHeight - clientHeight);
17458        value = reverse ? 1 - value : value;
17459        store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
17460      }
17461    }), (0, _defineProperty2["default"])(_default2, SCROLLING_IN_VIEW, {
17462      types: SCROLL_EVENT_TYPES,
17463      handler: function handler( // $FlowFixMe
17464        _ref10) {
17465        var element = _ref10.element,
17466          store = _ref10.store,
17467          eventConfig = _ref10.eventConfig,
17468          eventStateKey = _ref10.eventStateKey;
17469        var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
17470          scrollPercent: 0
17471        };
17472
17473        var _getDocumentState5 = getDocumentState(),
17474          scrollLeft = _getDocumentState5.scrollLeft,
17475          scrollTop = _getDocumentState5.scrollTop,
17476          scrollWidth = _getDocumentState5.scrollWidth,
17477          scrollHeight = _getDocumentState5.scrollHeight,
17478          visibleHeight = _getDocumentState5.clientHeight;
17479
17480        var basedOn = eventConfig.basedOn,
17481          selectedAxis = eventConfig.selectedAxis,
17482          continuousParameterGroupId = eventConfig.continuousParameterGroupId,
17483          startsEntering = eventConfig.startsEntering,
17484          startsExiting = eventConfig.startsExiting,
17485          addEndOffset = eventConfig.addEndOffset,
17486          addStartOffset = eventConfig.addStartOffset,
17487          _eventConfig$addOffse = eventConfig.addOffsetValue,
17488          addOffsetValue = _eventConfig$addOffse === void 0 ? 0 : _eventConfig$addOffse,
17489          _eventConfig$endOffse = eventConfig.endOffsetValue,
17490          endOffsetValue = _eventConfig$endOffse === void 0 ? 0 : _eventConfig$endOffse;
17491        var isXAxis = selectedAxis === 'X_AXIS';
17492
17493        if (basedOn === _constants.EventBasedOn.VIEWPORT) {
17494          var value = isXAxis ? scrollLeft / scrollWidth : scrollTop / scrollHeight;
17495
17496          if (value !== state.scrollPercent) {
17497            store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
17498          }
17499
17500          return {
17501            scrollPercent: value
17502          };
17503        } else {
17504          var namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
17505          var elementRect = element.getBoundingClientRect();
17506          var offsetStartPerc = (addStartOffset ? addOffsetValue : 0) / 100;
17507          var offsetEndPerc = (addEndOffset ? endOffsetValue : 0) / 100; // flip the offset percentages depending on start / exit type
17508
17509          offsetStartPerc = startsEntering ? offsetStartPerc : 1 - offsetStartPerc;
17510          offsetEndPerc = startsExiting ? offsetEndPerc : 1 - offsetEndPerc;
17511          var offsetElementTop = elementRect.top + Math.min(elementRect.height * offsetStartPerc, visibleHeight);
17512          var offsetElementBottom = elementRect.top + elementRect.height * offsetEndPerc;
17513          var offsetHeight = offsetElementBottom - offsetElementTop;
17514          var fixedScrollHeight = Math.min(visibleHeight + offsetHeight, scrollHeight);
17515          var fixedScrollTop = Math.min(Math.max(0, visibleHeight - offsetElementTop), fixedScrollHeight);
17516          var fixedScrollPerc = fixedScrollTop / fixedScrollHeight;
17517
17518          if (fixedScrollPerc !== state.scrollPercent) {
17519            store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, fixedScrollPerc));
17520          }
17521
17522          return {
17523            scrollPercent: fixedScrollPerc
17524          };
17525        }
17526      }
17527    }), (0, _defineProperty2["default"])(_default2, SCROLL_INTO_VIEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, SCROLL_OUT_OF_V
17527IEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_DOWN, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17528      handler: whenScrollDirectionChange(function (options, state) {
17529        if (state.scrollingDown) {
17530          actionGroupCreator(options);
17531        }
17532      })
17533    })), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_UP, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17534      handler: whenScrollDirectionChange(function (options, state) {
17535        if (!state.scrollingDown) {
17536          actionGroupCreator(options);
17537        }
17538      })
17539    })), (0, _defineProperty2["default"])(_default2, PAGE_FINISH, {
17540      types: 'readystatechange IX2_PAGE_UPDATE',
17541      handler: withFilter(isElement, whenPageLoadFinish(actionGroupCreator))
17542    }), (0, _defineProperty2["default"])(_default2, PAGE_START, {
17543      types: 'readystatechange IX2_PAGE_UPDATE',
17544      handler: withFilter(isElement, whenPageLoadStart(actionGroupCreator))
17545    }), _default2);
17546
17547    exports["default"] = _default;
17548
17549    /***/
17550  }),
17551/* 293 */
17552/***/ (function (module, exports, __webpack_require__) {
17553
vendor: 4,322 bytes, lines 17554-17706
17554    var createFlow = __webpack_require__(294);
17555
17556    /**
17557     * Creates a function that returns the result of invoking the given functions
17558     * with the `this` binding of the created function, where each successive
17559     * invocation is supplied the return value of the previous.
17560     *
17561     * @static
17562     * @memberOf _
17563     * @since 3.0.0
17564     * @category Util
17565     * @param {...(Function|Function[])} [funcs] The functions to invoke.
17566     * @returns {Function} Returns the new composite function.
17567     * @see _.flowRight
17568     * @example
17569     *
17570     * function square(n) {
17571     *   return n * n;
17572     * }
17573     *
17574     * var addSquare = _.flow([_.add, square]);
17575     * addSquare(1, 2);
17576     * // => 9
17577     */
17578    var flow = createFlow();
17579
17580    module.exports = flow;
17581
17582
17583    /***/
17584  }),
17585/* 294 */
17586/***/ (function (module, exports, __webpack_require__) {
17587
17588    var LodashWrapper = __webpack_require__(63),
17589      flatRest = __webpack_require__(295),
17590      getData = __webpack_require__(119),
17591      getFuncName = __webpack_require__(120),
17592      isArray = __webpack_require__(1),
17593      isLaziable = __webpack_require__(308);
17594
17595    /** Error message constants. */
17596    var FUNC_ERROR_TEXT = 'Expected a function';
17597
17598    /** Used to compose bitmasks for function metadata. */
17599    var WRAP_CURRY_FLAG = 8,
17600      WRAP_PARTIAL_FLAG = 32,
17601      WRAP_ARY_FLAG = 128,
17602      WRAP_REARG_FLAG = 256;
17603
17604    /**
17605     * Creates a `_.flow` or `_.flowRight` function.
17606     *
17607     * @private
17608     * @param {boolean} [fromRight] Specify iterating from right to left.
17609     * @returns {Function} Returns the new flow function.
17610     */
17611    function createFlow(fromRight) {
17612      return flatRest(function (funcs) {
17613        var length = funcs.length,
17614          index = length,
17615          prereq = LodashWrapper.prototype.thru;
17616
17617        if (fromRight) {
17618          funcs.reverse();
17619        }
17620        while (index--) {
17621          var func = funcs[index];
17622          if (typeof func != 'function') {
17623            throw new TypeError(FUNC_ERROR_TEXT);
17624          }
17625          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
17626            var wrapper = new LodashWrapper([], true);
17627          }
17628        }
17629        index = wrapper ? index : length;
17630        while (++index < length) {
17631          func = funcs[index];
17632
17633          var funcName = getFuncName(func),
17634            data = funcName == 'wrapper' ? getData(func) : undefined;
17635
17636          if (data && isLaziable(data[0]) &&
17637            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
17638            !data[4].length && data[9] == 1
17639          ) {
17640            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
17641          } else {
17642            wrapper = (func.length == 1 && isLaziable(func))
17643              ? wrapper[funcName]()
17644              : wrapper.thru(func);
17645          }
17646        }
17647        return function () {
17648          var args = arguments,
17649            value = args[0];
17650
17651          if (wrapper && args.length == 1 && isArray(value)) {
17652            return wrapper.plant(value).value();
17653          }
17654          var index = 0,
17655            result = length ? funcs[index].apply(this, args) : value;
17656
17657          while (++index < length) {
17658            result = funcs[index].call(this, result);
17659          }
17660          return result;
17661        };
17662      });
17663    }
17664
17665    module.exports = createFlow;
17666
17667
17668    /***/
17669  }),
17670/* 295 */
17671/***/ (function (module, exports, __webpack_require__) {
17672
17673    var flatten = __webpack_require__(296),
17674      overRest = __webpack_require__(299),
17675      setToString = __webpack_require__(301);
17676
17677    /**
17678     * A specialized version of `baseRest` which flattens the rest array.
17679     *
17680     * @private
17681     * @param {Function} func The function to apply a rest parameter to.
17682     * @returns {Function} Returns the new function.
17683     */
17684    function flatRest(func) {
17685      return setToString(overRest(func, undefined, flatten), func + '');
17686    }
17687
17688    module.exports = flatRest;
17689
17690
17691    /***/
17692  }),
17693/* 296 */
17694/***/ (function (module, exports, __webpack_require__) {
17695
17696    var baseFlatten = __webpack_require__(297);
17697
17698    /**
17699     * Flattens `array` a single level deep.
17700     *
17701     * @static
17702     * @memberOf _
17703     * @since 0.1.0
17704     * @category Array
17705     * @param {Array} array The array to flatten.
17706     * @returns {Array} Returns the new flattened array.
vendor: 5,976 bytes, lines 17707-17915
17707     * @example
17708     *
17709     * _.flatten([1, [2, [3, [4]], 5]]);
17710     * // => [1, 2, [3, [4]], 5]
17711     */
17712    function flatten(array) {
17713      var length = array == null ? 0 : array.length;
17714      return length ? baseFlatten(array, 1) : [];
17715    }
17716
17717    module.exports = flatten;
17718
17719
17720    /***/
17721  }),
17722/* 297 */
17723/***/ (function (module, exports, __webpack_require__) {
17724
17725    var arrayPush = __webpack_require__(49),
17726      isFlattenable = __webpack_require__(298);
17727
17728    /**
17729     * The base implementation of `_.flatten` with support for restricting flattening.
17730     *
17731     * @private
17732     * @param {Array} array The array to flatten.
17733     * @param {number} depth The maximum recursion depth.
17734     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
17735     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
17736     * @param {Array} [result=[]] The initial result value.
17737     * @returns {Array} Returns the new flattened array.
17738     */
17739    function baseFlatten(array, depth, predicate, isStrict, result) {
17740      var index = -1,
17741        length = array.length;
17742
17743      predicate || (predicate = isFlattenable);
17744      result || (result = []);
17745
17746      while (++index < length) {
17747        var value = array[index];
17748        if (depth > 0 && predicate(value)) {
17749          if (depth > 1) {
17750            // Recursively flatten arrays (susceptible to call stack limits).
17751            baseFlatten(value, depth - 1, predicate, isStrict, result);
17752          } else {
17753            arrayPush(result, value);
17754          }
17755        } else if (!isStrict) {
17756          result[result.length] = value;
17757        }
17758      }
17759      return result;
17760    }
17761
17762    module.exports = baseFlatten;
17763
17764
17765    /***/
17766  }),
17767/* 298 */
17768/***/ (function (module, exports, __webpack_require__) {
17769
17770    var Symbol = __webpack_require__(20),
17771      isArguments = __webpack_require__(34),
17772      isArray = __webpack_require__(1);
17773
17774    /** Built-in value references. */
17775    var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
17776
17777    /**
17778     * Checks if `value` is a flattenable `arguments` object or array.
17779     *
17780     * @private
17781     * @param {*} value The value to check.
17782     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
17783     */
17784    function isFlattenable(value) {
17785      return isArray(value) || isArguments(value) ||
17786        !!(spreadableSymbol && value && value[spreadableSymbol]);
17787    }
17788
17789    module.exports = isFlattenable;
17790
17791
17792    /***/
17793  }),
17794/* 299 */
17795/***/ (function (module, exports, __webpack_require__) {
17796
17797    var apply = __webpack_require__(300);
17798
17799    /* Built-in method references for those with the same name as other `lodash` methods. */
17800    var nativeMax = Math.max;
17801
17802    /**
17803     * A specialized version of `baseRest` which transforms the rest array.
17804     *
17805     * @private
17806     * @param {Function} func The function to apply a rest parameter to.
17807     * @param {number} [start=func.length-1] The start position of the rest parameter.
17808     * @param {Function} transform The rest array transform.
17809     * @returns {Function} Returns the new function.
17810     */
17811    function overRest(func, start, transform) {
17812      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
17813      return function () {
17814        var args = arguments,
17815          index = -1,
17816          length = nativeMax(args.length - start, 0),
17817          array = Array(length);
17818
17819        while (++index < length) {
17820          array[index] = args[start + index];
17821        }
17822        index = -1;
17823        var otherArgs = Array(start + 1);
17824        while (++index < start) {
17825          otherArgs[index] = args[index];
17826        }
17827        otherArgs[start] = transform(array);
17828        return apply(func, this, otherArgs);
17829      };
17830    }
17831
17832    module.exports = overRest;
17833
17834
17835    /***/
17836  }),
17837/* 300 */
17838/***/ (function (module, exports) {
17839
17840    /**
17841     * A faster alternative to `Function#apply`, this function invokes `func`
17842     * with the `this` binding of `thisArg` and the arguments of `args`.
17843     *
17844     * @private
17845     * @param {Function} func The function to invoke.
17846     * @param {*} thisArg The `this` binding of `func`.
17847     * @param {Array} args The arguments to invoke `func` with.
17848     * @returns {*} Returns the result of `func`.
17849     */
17850    function apply(func, thisArg, args) {
17851      switch (args.length) {
17852        case 0: return func.call(thisArg);
17853        case 1: return func.call(thisArg, args[0]);
17854        case 2: return func.call(thisArg, args[0], args[1]);
17855        case 3: return func.call(thisArg, args[0], args[1], args[2]);
17856      }
17857      return func.apply(thisArg, args);
17858    }
17859
17860    module.exports = apply;
17861
17862
17863    /***/
17864  }),
17865/* 301 */
17866/***/ (function (module, exports, __webpack_require__) {
17867
17868    var baseSetToString = __webpack_require__(302),
17869      shortOut = __webpack_require__(304);
17870
17871    /**
17872     * Sets the `toString` method of `func` to return `string`.
17873     *
17874     * @private
17875     * @param {Function} func The function to modify.
17876     * @param {Function} string The `toString` result.
17877     * @returns {Function} Returns `func`.
17878     */
17879    var setToString = shortOut(baseSetToString);
17880
17881    module.exports = setToString;
17882
17883
17884    /***/
17885  }),
17886/* 302 */
17887/***/ (function (module, exports, __webpack_require__) {
17888
17889    var constant = __webpack_require__(303),
17890      defineProperty = __webpack_require__(117),
17891      identity = __webpack_require__(60);
17892
17893    /**
17894     * The base implementation of `setToString` without support for hot loop shorting.
17895     *
17896     * @private
17897     * @param {Function} func The function to modify.
17898     * @param {Function} string The `toString` result.
17899     * @returns {Function} Returns `func`.
17900     */
17901    var baseSetToString = !defineProperty ? identity : function (func, string) {
17902      return defineProperty(func, 'toString', {
17903        'configurable': true,
17904        'enumerable': false,
17905        'value': constant(string),
17906        'writable': true
17907      });
17908    };
17909
17910    module.exports = baseSetToString;
17911
17912
17913    /***/
17914  }),
17915/* 303 */
vendor: 7,975 bytes, lines 17916-18155
17916/***/ (function (module, exports) {
17917
17918    /**
17919     * Creates a function that returns `value`.
17920     *
17921     * @static
17922     * @memberOf _
17923     * @since 2.4.0
17924     * @category Util
17925     * @param {*} value The value to return from the new function.
17926     * @returns {Function} Returns the new constant function.
17927     * @example
17928     *
17929     * var objects = _.times(2, _.constant({ 'a': 1 }));
17930     *
17931     * console.log(objects);
17932     * // => [{ 'a': 1 }, { 'a': 1 }]
17933     *
17934     * console.log(objects[0] === objects[1]);
17935     * // => true
17936     */
17937    function constant(value) {
17938      return function () {
17939        return value;
17940      };
17941    }
17942
17943    module.exports = constant;
17944
17945
17946    /***/
17947  }),
17948/* 304 */
17949/***/ (function (module, exports) {
17950
17951    /** Used to detect hot functions by number of calls within a span of milliseconds. */
17952    var HOT_COUNT = 800,
17953      HOT_SPAN = 16;
17954
17955    /* Built-in method references for those with the same name as other `lodash` methods. */
17956    var nativeNow = Date.now;
17957
17958    /**
17959     * Creates a function that'll short out and invoke `identity` instead
17960     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
17961     * milliseconds.
17962     *
17963     * @private
17964     * @param {Function} func The function to restrict.
17965     * @returns {Function} Returns the new shortable function.
17966     */
17967    function shortOut(func) {
17968      var count = 0,
17969        lastCalled = 0;
17970
17971      return function () {
17972        var stamp = nativeNow(),
17973          remaining = HOT_SPAN - (stamp - lastCalled);
17974
17975        lastCalled = stamp;
17976        if (remaining > 0) {
17977          if (++count >= HOT_COUNT) {
17978            return arguments[0];
17979          }
17980        } else {
17981          count = 0;
17982        }
17983        return func.apply(undefined, arguments);
17984      };
17985    }
17986
17987    module.exports = shortOut;
17988
17989
17990    /***/
17991  }),
17992/* 305 */
17993/***/ (function (module, exports, __webpack_require__) {
17994
17995    var WeakMap = __webpack_require__(100);
17996
17997    /** Used to store function metadata. */
17998    var metaMap = WeakMap && new WeakMap;
17999
18000    module.exports = metaMap;
18001
18002
18003    /***/
18004  }),
18005/* 306 */
18006/***/ (function (module, exports) {
18007
18008    /**
18009     * This method returns `undefined`.
18010     *
18011     * @static
18012     * @memberOf _
18013     * @since 2.3.0
18014     * @category Util
18015     * @example
18016     *
18017     * _.times(2, _.noop);
18018     * // => [undefined, undefined]
18019     */
18020    function noop() {
18021      // No operation performed.
18022    }
18023
18024    module.exports = noop;
18025
18026
18027    /***/
18028  }),
18029/* 307 */
18030/***/ (function (module, exports) {
18031
18032    /** Used to lookup unminified function names. */
18033    var realNames = {};
18034
18035    module.exports = realNames;
18036
18037
18038    /***/
18039  }),
18040/* 308 */
18041/***/ (function (module, exports, __webpack_require__) {
18042
18043    var LazyWrapper = __webpack_require__(65),
18044      getData = __webpack_require__(119),
18045      getFuncName = __webpack_require__(120),
18046      lodash = __webpack_require__(309);
18047
18048    /**
18049     * Checks if `func` has a lazy counterpart.
18050     *
18051     * @private
18052     * @param {Function} func The function to check.
18053     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
18054     *  else `false`.
18055     */
18056    function isLaziable(func) {
18057      var funcName = getFuncName(func),
18058        other = lodash[funcName];
18059
18060      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
18061        return false;
18062      }
18063      if (func === other) {
18064        return true;
18065      }
18066      var data = getData(other);
18067      return !!data && func === data[0];
18068    }
18069
18070    module.exports = isLaziable;
18071
18072
18073    /***/
18074  }),
18075/* 309 */
18076/***/ (function (module, exports, __webpack_require__) {
18077
18078    var LazyWrapper = __webpack_require__(65),
18079      LodashWrapper = __webpack_require__(63),
18080      baseLodash = __webpack_require__(64),
18081      isArray = __webpack_require__(1),
18082      isObjectLike = __webpack_require__(9),
18083      wrapperClone = __webpack_require__(310);
18084
18085    /** Used for built-in method references. */
18086    var objectProto = Object.prototype;
18087
18088    /** Used to check objects for own properties. */
18089    var hasOwnProperty = objectProto.hasOwnProperty;
18090
18091    /**
18092     * Creates a `lodash` object which wraps `value` to enable implicit method
18093     * chain sequences. Methods that operate on and return arrays, collections,
18094     * and functions can be chained together. Methods that retrieve a single value
18095     * or may return a primitive value will automatically end the chain sequence
18096     * and return the unwrapped value. Otherwise, the value must be unwrapped
18097     * with `_#value`.
18098     *
18099     * Explicit chain sequences, which must be unwrapped with `_#value`, may be
18100     * enabled using `_.chain`.
18101     *
18102     * The execution of chained methods is lazy, that is, it's deferred until
18103     * `_#value` is implicitly or explicitly called.
18104     *
18105     * Lazy evaluation allows several methods to support shortcut fusion.
18106     * Shortcut fusion is an optimization to merge iteratee calls; this avoids
18107     * the creation of intermediate arrays and can greatly reduce the number of
18108     * iteratee executions. Sections of a chain sequence qualify for shortcut
18109     * fusion if the section is applied to an array and iteratees accept only
18110     * one argument. The heuristic for whether a section qualifies for shortcut
18111     * fusion is subject to change.
18112     *
18113     * Chaining is supported in custom builds as long as the `_#value` method is
18114     * directly or indirectly included in the build.
18115     *
18116     * In addition to lodash methods, wrappers have `Array` and `String` methods.
18117     *
18118     * The wrapper `Array` methods are:
18119     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
18120     *
18121     * The wrapper `String` methods are:
18122     * `replace` and `split`
18123     *
18124     * The wrapper methods that support shortcut fusion are:
18125     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
18126     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
18127     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
18128     *
18129     * The chainable wrapper methods are:
18130     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
18131     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
18132     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
18133     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
18134     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
18135     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
18136     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
18137     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
18138     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
18139     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
18140     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
18141     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
18142     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
18143     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
18144     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
18145     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
18146     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
18147     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
18148     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
18149     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
18150     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
18151     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
18152     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
18153     * `zipObject`, `zipObjectDeep`, and `zipWith`
18154     *
18155     * The wrapper methods that are **not** chainable by default are:
18156     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
18157     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
18158     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
18159     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
18160     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
18161     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
18162     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
18163     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
18164     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
18165     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
18166     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
18167     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
18168     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
18169     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
18170     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
18171     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
18172     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
18173     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
18174     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
18175     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
18176     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
18177     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
18178     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
18179     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
18180     * `upperFirst`, `value`, and `words`
18181     *
18182     * @name _
18183     * @constructor
18184     * @category Seq
18185     * @param {*} value The value to wrap in a `lodash` instance.
18186     * @returns {Object} Returns the new `lodash` wrapper instance.
18187     * @example
18188     *
18189     * function square(n) {
18190     *   return n * n;
18191     * }
18192     *
18193     * var wrapped = _([1, 2, 3]);
18194     *
18195     * // Returns an unwrapped value.
18196     * wrapped.reduce(_.add);
18197     * // => 6
18198     *
18199     * // Returns a wrapped value.
18200     * var squares = wrapped.map(square);
18201     *
18202     * _.isArray(squares);
18203     * // => false
18204     *
18205     * _.isArray(squares.value());
18206     * // => true
18207     */
18208    function lodash(value) {
18209      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
18210        if (value instanceof LodashWrapper) {
18211          return value;
18212        }
18213        if (hasOwnProperty.call(value, '__wrapped__')) {
18214          return wrapperClone(value);
18215        }
18216      }
18217      return new LodashWrapper(value);
18218    }
18219
18220    // Ensure wrappers are instances of `baseLodash`.
18221    lodash.prototype = baseLodash.prototype;
18222    lodash.prototype.constructor = lodash;
18223
18224    module.exports = lodash;
18225
18226
18227    /***/
18228  }),
18229/* 310 */
18230/***/ (function (module, exports, __webpack_require__) {
18231
18232    var LazyWrapper = __webpack_require__(65),
18233      LodashWrapper = __webpack_require__(63),
18234      copyArray = __webpack_require__(311);
18235
18236    /**
18237     * Creates a clone of `wrapper`.
18238     *
18239     * @private
18240     * @param {Object} wrapper The wrapper to clone.
18241     * @returns {Object} Returns the cloned wrapper.
18242     */
18243    function wrapperClone(wrapper) {
18244      if (wrapper instanceof LazyWrapper) {
18245        return wrapper.clone();
18246      }
18247      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
18248      result.__actions__ = copyArray(wrapper.__actions__);
18249      result.__index__ = wrapper.__index__;
18250      result.__values__ = wrapper.__values__;
18251      return result;
18252    }
18253
18254    module.exports = wrapperClone;
18255
18256
18257    /***/
18258  }),
18259/* 311 */
18260/***/ (function (module, exports) {
18261
18262    /**
18263     * Copies the values of `source` to `array`.
18264     *
18265     * @private
18266     * @param {Array} source The array to copy values from.
18267     * @param {Array} [array=[]] The array to copy values to.
18268     * @returns {Array} Returns `array`.
18269     */
18270    function copyArray(source, array) {
18271      var index = -1,
18272        length = source.length;
18273
18274      array || (array = Array(length));
18275      while (++index < length) {
18276        array[index] = source[index];
18277      }
18278      return array;
18279    }
18280
18281    module.exports = copyArray;
18282
18283
18284    /***/
18285  }),
18286/* 312 */
18287/***/ (function (module, exports, __webpack_require__) {
18288
18289    var baseClamp = __webpack_require__(313),
18290      toNumber = __webpack_require__(61);
18291
18292    /**
18293     * Clamps `number` within the inclusive `lower` and `upper` bounds.
18294     *
18295     * @static
18296     * @memberOf _
18297     * @since 4.0.0
18298     * @category Number
18299     * @param {number} number The number to clamp.
18300     * @param {number} [lower] The lower bound.
18301     * @param {number} upper The upper bound.
18302     * @returns {number} Returns the clamped number.
18303     * @example
18304     *
18305     * _.clamp(-10, -5, 5);
18306     * // => -5
18307     *
18308     * _.clamp(10, -5, 5);
18309     * // => 5
18310     */
18311    function clamp(number, lower, upper) {
18312      if (upper === undefined) {
18313        upper = lower;
18314        lower = undefined;
18315      }
18316      if (upper !== undefined) {
18317        upper = toNumber(upper);
18318        upper = upper === upper ? upper : 0;
18319      }
18320      if (lower !== undefined) {
18321        lower = toNumber(lower);
18322        lower = lower === lower ? lower : 0;
18323      }
18324      return baseClamp(toNumber(number), lower, upper);
18325    }
18326
18327    module.exports = clamp;
18328
18329
18330    /***/
18331  }),
18332/* 313 */
18333/***/ (function (module, exports) {
18334
18335    /**
18336     * The base implementation of `_.clamp` which doesn't coerce arguments.
18337     *
18338     * @private
18339     * @param {number} number The number to clamp.
18340     * @param {number} [lower] The lower bound.
18341     * @param {number} upper The upper bound.
18342     * @returns {number} Returns the clamped number.
18343     */
18344    function baseClamp(number, lower, upper) {
18345      if (number === number) {
18346        if (upper !== undefined) {
18347          number = number <= upper ? number : upper;
18348        }
18349        if (lower !== undefined) {
18350          number = number >= lower ? number : lower;
18351        }
18352      }
18353      return number;
18354    }
18355
18356    module.exports = baseClamp;
18357
18358
18359    /***/
18360  }),
18361/* 314 */
18362/***/ (function (module, exports, __webpack_require__) {
18363
18364    "use strict";
18365    // @wf-will-never-add-flow-to-this-file
18366
18367    /* globals window, document */
18368
18369    /* eslint-disable no-var */
18370
18371    /**
18372     * Webflow: Auto-select links to current page or section
18373     */
18374
18375    var Webflow = __webpack_require__(3);
18376
18377    Webflow.define('links', module.exports = function ($, _) {
18378      var api = {};
18379      var $win = $(window);
18380      var designer;
18381      var inApp = Webflow.env();
18382      var location = window.location;
18383      var tempLink = document.createElement('a');
18384      var linkCurrent = 'w--current';
18385      var indexPage = /index\.(html|php)$/;
18386      var dirList = /\/$/;
18387      var anchors;
18388      var slug; // -----------------------------------
18389      // Module methods
18390
18391      api.ready = api.design = api.preview = init; // -----------------------------------
18392      // Private methods
18393
18394      function init() {
18395        designer = inApp && Webflow.env('design');
18396        slug = Webflow.env('slug') || location.pathname || ''; // Reset scroll listener, init anchors
18397
18398        Webflow.scroll.off(scroll);
18399        anchors = []; // Test all links for a selectable href
18400
18401        var links = document.links;
18402
18403        for (var i = 0; i < links.length; ++i) {
18404          select(links[i]);
18405        } // Listen for scroll if any anchors exist
18406
18407
18408        if (anchors.length) {
18409          Webflow.scroll.on(scroll);
18410          scroll();
18411        }
18412      }
18413
18414      function select(link) {
18415        var href = designer && link.getAttribute('href-disabled') || link.getAttribute('href');
18416        tempLink.href = href; // Ignore any hrefs with a colon to safely avoid all uri schemes
18417
18418        if (href.indexOf(':') >= 0) {
18419          return;
18420        }
18421
18422        var $link = $(link); // Check for all links with hash (eg (this-host)(/this-path)#section) to this page
18423
18424        if (tempLink.hash.length > 1 && tempLink.host + tempLink.pathname === location.host + location.pathname) {
18425          // Ignore any hrefs with Google Translate type hash
18426          // Example: jQuery can't parse $('#googtrans(en|es)')
18427          // https://forum.webflow.com/t/dropdown-menus-not-working-on-site/87140
18428          if (!/^#[a-zA-Z0-9\-\_]+$/.test(tempLink.hash)) {
18429            return;
18430          }
18431
18432          var $section = $(tempLink.hash);
18433          $section.length && anchors.push({
18434            link: $link,
18435            sec: $section,
18436            active: false
18437          });
18438          return;
18439        } // Ignore empty # links
18440
18441
18442        if (href === '#' || href === '') {
18443          return;
18444        } // Determine whether the link should be selected
18445
18446
18447        var match = tempLink.href === location.href || href === slug || indexPage.test(href) && dirList.test(slug);
18448        setClass($link, linkCurrent, match);
18449      }
18450
18451      function scroll() {
18452        var viewTop = $win.scrollTop();
18453        var viewHeight = $win.height(); // Check each anchor for a section in view
18454
18455        _.each(anchors, function (anchor) {
18456          var $link = anchor.link;
18457          var $section = anchor.sec;
18458          var top = $section.offset().top;
18459          var height = $section.outerHeight();
18460          var offset = viewHeight * 0.5;
18461          var active = $section.is(':visible') && top + height - offset >= viewTop && top + offset <= viewTop + viewHeight;
18462
18463          if (anchor.active === active) {
18464            return;
18465          }
18466
18467          anchor.active = active;
18468          setClass($link, linkCurrent, active);
18469        });
18470      }
18471
18472      function setClass($elem, className, add) {
18473        var exists = $elem.hasClass(className);
18474
18475        if (add && exists) {
18476          return;
18477        }
18478
18479        if (!add && !exists) {
18480          return;
18481        }
18482
18483        add ? $elem.addClass(className) : $elem.removeClass(className);
18484      } // Export module
18485
18486
18487      return api;
18488    });
18489
18490    /***/
18491  }),
18492/* 315 */
18493/***/ (function (module, exports, __webpack_require__) {
18494
18495    "use strict";
18496    // @wf-will-never-add-flow-to-this-file
18497
18498    /* globals window, document */
18499
18500    /* eslint-disable no-var */
18501
18502    /**
18503     * Webflow: Smooth scroll
18504     */
18505
18506    var Webflow = __webpack_require__(3);
18507
18508    Webflow.define('scroll', module.exports = function ($) {
18509      // Native browser events & namespaces used in this module
18510      var CLICK = 'click';
18511      var CHANGE = 'change';
18512      var CHANGE_NS = '.wf-change';
18513      var EMPTY_LINK_NS = '.wf-empty-link';
18514      var SCROLL_NS = '.wf-scroll';
18515      /**
18516       * A collection of namespaced events found in this module.
18517       * Namespaced events encapsulate our code, and make it safer and easier
18518       * for designers to apply custom code overrides.
18519       * @see https://api.jquery.com/on/#event-names
18520       * @typedef {Object.<string>} NamespacedEventsCollection
18521       */
18522
18523      var NS_EVENTS = {
18524        WF_CHANGE: CHANGE + CHANGE_NS,
18525        WF_CLICK_EMPTY: CLICK + EMPTY_LINK_NS,
18526        WF_CLICK_SCROLL: CLICK + SCROLL_NS
18527      };
18528      var $doc = $(document);
18529      var win = window;
18530      var loc = win.location;
18531      var history = inIframe() ? null : win.history;
18532      var validHash = /^[a-zA-Z0-9][\w:.-]*$/;
18533      var emptyHrefSelector = 'a[href="#"]';
18534      /**
18535       * Select only links whose href:
18536       * - contains a #
18537       * - is not one of our namespaced TabLink elements
18538       * - is not _only_ a #
18539       */
18540
18541      var localHrefSelector = 'a[href*="#"]:not(.w-tab-link):not(' + emptyHrefSelector + ')';
18542      /**
18543       * The current page url, minus the hash.
18544       * Will be set in the `ready` function
18545       */
18546
18547      var locHref;
18548
18549      function inIframe() {
18550        try {
18551          return Boolean(win.frameElement);
18552        } catch (e) {
18553          return true;
18554        }
18555      }
18556      /**
18557       * Determine if we should execute custom scroll
18558       */
18559
18560
18561      function validateScroll(e) {
18562        if (Webflow.env('design')) {
18563          return;
18564        } // Ignore links being used by jQuery mobile
18565
18566
18567        if (window.$.mobile && $(e.currentTarget).hasClass('ui-link')) {
18568          return;
18569        } // The href property always contains the full url so we can compare
18570        // with the document’s location to only target links on this page.
18571
18572
18573        var parts = this.href.split('#');
18574        var hash = parts[0] === locHref ? parts[1] : null;
18575
18576        if (hash) {
18577          findEl(hash, e);
18578        }
18579      }
18580
18581      function findEl(hash, e) {
18582        if (!validHash.test(hash)) {
18583          return;
18584        }
18585
18586        var el = $('#' + hash);
18587
18588        if (!el.length) {
18589          return;
18590        }
18591
18592        if (e) {
18593          e.preventDefault();
18594          e.stopPropagation();
18595        } // Push new history state
18596
18597
18598        if (loc.hash !== hash && history && history.pushState && // Navigation breaks Chrome when the protocol is `file:`.
18599          !(Webflow.env.chrome && loc.protocol === 'file:')) {
18600          var oldHash = history.state && history.state.hash;
18601
18602          if (oldHash !== hash) {
18603            history.pushState({
18604              hash: hash
18605            }, '', '#' + hash);
18606          }
18607        } // If a fixed header exists, offset for the height
18608
18609
18610        var rootTag = Webflow.env('editor') ? '.w-editor-body' : 'body';
18611        var header = $('header, ' + rootTag + ' > .header, ' + rootTag + ' > .w-nav:not([data-no-scroll])');
18612        var offset = header.css('position') === 'fixed' ? header.outerHeight() : 0;
18613        win.setTimeout(function () {
18614          scroll(el, offset);
18615        }, e ? 0 : 300);
18616      }
18617
18618      function scroll(el, offset) {
18619        var start = $(win).scrollTop();
18620        var end = el.offset().top - offset; // If specified, scroll so that the element ends up in the middle of the viewport
18621
18622        if (el.data('scroll') === 'mid') {
18623          var available = $(win).height() - offset;
18624          var elHeight = el.outerHeight();
18625
18626          if (elHeight < available) {
18627            end -= Math.round((available - elHeight) / 2);
18628          }
18629        }
18630
18631        var mult = 1; // Check for custom time multiplier on the body and the element
18632
18633        $('body').add(el).each(function () {
18634          var time = parseFloat($(this).attr('data-scroll-time'), 10);
18635
18636          if (!isNaN(time) && (time === 0 || time > 0)) {
18637            mult = time;
18638          }
18639        }); // Shim for IE8 and below
18640
18641        if (!Date.now) {
18642          Date.now = function () {
18643            return new Date().getTime();
18644          };
18645        }
18646
18647        var clock = Date.now();
18648
18649        var animate = win.requestAnimationFrame || win.mozRequestAnimationFrame || win.webkitRequestAnimationFrame || function (fn) {
18650          win.setTimeout(fn, 15);
18651        };
18652
18653        var duration = (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult;
18654
18655        var step = function step() {
18656          var elapsed = Date.now() - clock;
18657          win.scroll(0, getY(start, end, elapsed, duration));
18658
18659          if (elapsed <= duration) {
18660            animate(step);
18661          }
18662        };
18663
18664        step();
18665      }
18666
18667      function getY(start, end, elapsed, duration) {
18668        if (elapsed > duration) {
18669          return end;
18670        }
18671
18672        return start + (end - start) * ease(elapsed / duration);
18673      }
18674
18675      function ease(t) {
18676        return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
18677      } // TODO: Re-implement after customer-facing comms
18678      // function handleReducedMotionChange(evt) {
18679      //   var {WF_CLICK_SCROLL} = NS_EVENTS;
18680      //   if (evt.target.matches) {
18681      //     $doc.off(WF_CLICK_SCROLL);
18682      //   } else {
18683      //     $doc.on(WF_CLICK_SCROLL, localHrefSelector, validateScroll);
18684      //   }
18685      // }
18686
18687
18688      function ready() {
18689        // eslint-disable-next-line no-unused-vars
18690        var WF_CHANGE = NS_EVENTS.WF_CHANGE,
18691          WF_CLICK_EMPTY = NS_EVENTS.WF_CLICK_EMPTY,
18692          WF_CLICK_SCROLL = NS_EVENTS.WF_CLICK_SCROLL;
18693        locHref = loc.href.split('#')[0]; // var reducedMotionQ = window.matchMedia(
18694        //   '(prefers-reduced-motion: reduce)'
18695        // );
18696        // if (!reducedMotionQ.matches) {
18697
18698        $doc.on(WF_CLICK_SCROLL, localHrefSelector, validateScroll); // }
18699        // $(reducedMotionQ).on(WF_CHANGE, handleReducedMotionChange);
18700
18701        /**
18702         * Prevent empty hash links from triggering scroll.
18703         * Legacy feature to preserve: use the default "#" link
18704         * to trigger an interaction, and do not want the page
18705         * to scroll to the top.
18706         */
18707
18708        $doc.on(WF_CLICK_EMPTY, emptyHrefSelector, function (e) {
18709          e.preventDefault();
18710        });
18711      } // Export module
18712
18713
18714      return {
18715        ready: ready
18716      };
18717    });
18718
18719    /***/
18720  }),
18721/* 316 */
18722/***/ (function (module, exports, __webpack_require__) {
18723
18724    "use strict";
18725    // @wf-will-never-add-flow-to-this-file
18726
18727    /* globals document, window */
18728
18729    /* eslint-disable no-var */
18730
18731    /**
18732     * Webflow: Touch events
18733     * Supports legacy 'tap' event
18734     * Adds a 'swipe' event to desktop and mobile
18735     */
18736
18737    var Webflow = __webpack_require__(3);
18738
18739    Webflow.define('touch', module.exports = function ($) {
18740      var api = {};
18741      var getSelection = window.getSelection; // Delegate all legacy 'tap' events to 'click'
18742
18743      $.event.special.tap = {
18744        bindType: 'click',
18745        delegateType: 'click'
18746      };
18747
18748      api.init = function (el) {
18749        el = typeof el === 'string' ? $(el).get(0) : el;
18750        return el ? new Touch(el) : null;
18751      };
18752
18753      function Touch(el) {
18754        var active = false;
18755        var useTouch = false;
18756        var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40);
18757        var startX;
18758        var lastX;
18759        el.addEventListener('touchstart', start, false);
18760        el.addEventListener('touchmove', move, false);
18761        el.addEventListener('touchend', end, false);
18762        el.addEventListener('touchcancel', cancel, false);
18763        el.addEventListener('mousedown', start, false);
18764        el.addEventListener('mousemove', move, false);
18765        el.addEventListener('mouseup', end, false);
18766        el.addEventListener('mouseout', cancel, false);
18767
18768        function start(evt) {
18769          // We don’t handle multi-touch events yet.
18770          var touches = evt.touches;
18771
18772          if (touches && touches.length > 1) {
18773            return;
18774          }
18775
18776          active = true;
18777
18778          if (touches) {
18779            useTouch = true;
18780            startX = touches[0].clientX;
18781          } else {
18782            startX = evt.clientX;
18783          }
18784
18785          lastX = startX;
18786        }
18787
18788        function move(evt) {
18789          if (!active) {
18790            return;
18791          }
18792
18793          if (useTouch && evt.type === 'mousemove') {
18794            evt.preventDefault();
18795            evt.stopPropagation();
18796            return;
18797          }
18798
18799          var touches = evt.touches;
18800          var x = touches ? touches[0].clientX : evt.clientX;
18801          var velocityX = x - lastX;
18802          lastX = x; // Allow swipes while pointer is down, but prevent them during text selection
18803
18804          if (Math.abs(velocityX) > thresholdX && getSelection && String(getSelection()) === '') {
18805            triggerEvent('swipe', evt, {
18806              direction: velocityX > 0 ? 'right' : 'left'
18807            });
18808            cancel();
18809          }
18810        }
18811
18812        function end(evt) {
18813          if (!active) {
18814            return;
18815          }
18816
18817          active = false;
18818
18819          if (useTouch && evt.type === 'mouseup') {
18820            evt.preventDefault();
18821            evt.stopPropagation();
18822            useTouch = false;
18823            return;
18824          }
18825        }
18826
18827        function cancel() {
18828          active = false;
18829        }
18830
18831        function destroy() {
18832          el.removeEventListener('touchstart', start, false);
18833          el.removeEventListener('touchmove', move, false);
18834          el.removeEventListener('touchend', end, false);
18835          el.removeEventListener('touchcancel', cancel, false);
18836          el.removeEventListener('mousedown', start, false);
18837          el.removeEventListener('mousemove', move, false);
18838          el.removeEventListener('mouseup', end, false);
18839          el.removeEventListener('mouseout', cancel, false);
18840          el = null;
18841        } // Public instance methods
18842
18843
18844        this.destroy = destroy;
18845      } // Wrap native event to supoprt preventdefault + stopPropagation
18846
18847
18848      function triggerEvent(type, evt, data) {
18849        var newEvent = $.Event(type, {
18850          originalEvent: evt
18851        });
18852        $(evt.target).trigger(newEvent, data);
18853      } // Listen for touch events on all nodes by default.
18854
18855
18856      api.instance = api.init(document); // Export module
18857
18858      return api;
18859    });
18860
18861    /***/
18862  }),
18863/* 317 */
18864/***/ (function (module, exports, __webpack_require__) {
18865
18866    "use strict";
18867    // @wf-will-never-add-flow-to-this-file
18868
18869    /* globals window, document */
18870
18871    /* eslint-disable no-var */
18872
18873    /**
18874     * Webflow: Dropdown component
18875     */
18876
18877    var Webflow = __webpack_require__(3);
18878
18879    var IXEvents = __webpack_require__(22);
18880
18881    var KEY_CODES = {
18882      ARROW_LEFT: 37,
18883      ARROW_UP: 38,
18884      ARROW_RIGHT: 39,
18885      ARROW_DOWN: 40,
18886      ESCAPE: 27,
18887      SPACE: 32,
18888      ENTER: 13,
18889      HOME: 36,
18890      END: 35
18891    };
18892    var FORCE_CLOSE = true;
18893    /**
18894     * This pattern matches links that begin with a `#` AND have some alphanumeric
18895     * characters after it, including also hyphens and underscores
18896     *
18897     * Matches:
18898     * #foo
18899     * #999
18900     * #foo-bar_baz
18901     *
18902     * Does not match:
18903     * #
18904     */
18905
18906    var INTERNAL_PAGE_LINK_HASHES_PATTERN = /^#[a-zA-Z0-9\-_]+$/;
18907    Webflow.define('dropdown', module.exports = function ($, _) {
18908      var debounce = _.debounce;
18909      var api = {};
18910      var inApp = Webflow.env();
18911      var inPreview = false;
18912      var inDesigner;
18913      var touch = Webflow.env.touch;
18914      var namespace = '.w-dropdown';
18915      var openStateClassName = 'w--open';
18916      var ix = IXEvents.triggers;
18917      var defaultZIndex = 900; // @dropdown-depth
18918
18919      var focusOutEvent = 'focusout' + namespace;
18920      var keydownEvent = 'keydown' + namespace;
18921      var mouseEnterEvent = 'mouseenter' + namespace;
18922      var mouseMoveEvent = 'mousemove' + namespace;
18923      var mouseLeaveEvent = 'mouseleave' + namespace;
18924      var mouseUpEvent = (touch ? 'click' : 'mouseup') + namespace;
18925      var closeEvent = 'w-close' + namespace;
18926      var settingEvent = 'setting' + namespace;
18927      var $doc = $(document);
18928      var $dropdowns; // -----------------------------------
18929      // Module methods
18930
18931      api.ready = init;
18932
18933      api.design = function () {
18934        // Close all when returning from preview
18935        if (inPreview) {
18936          closeAll();
18937        }
18938
18939        inPreview = false;
18940        init();
18941      };
18942
18943      api.preview = function () {
18944        inPreview = true;
18945        init();
18946      }; // -----------------------------------
18947      // Private methods
18948
18949
18950      function init() {
18951        inDesigner = inApp && Webflow.env('design'); // Find all instances on the page
18952
18953        $dropdowns = $doc.find(namespace);
18954        $dropdowns.each(build);
18955      }
18956
18957      function build(i, el) {
18958        var $el = $(el); // Store state in data
18959
18960        var data = $.data(el, namespace);
18961
18962        if (!data) {
18963          data = $.data(el, namespace, {
18964            open: false,
18965            el: $el,
18966            config: {},
18967            selectedIdx: -1
18968          });
18969        }
18970
18971        data.toggle = data.el.children('.w-dropdown-toggle');
18972        data.list = data.el.children('.w-dropdown-list');
18973        data.links = data.list.find('a:not(.w-dropdown .w-dropdown a)');
18974        data.complete = complete(data);
18975        data.mouseLeave = makeMouseLeaveHandler(data);
18976        data.mouseUpOutside = outside(data);
18977        data.mouseMoveOutside = moveOutside(data); // Set config from data attributes
18978
18979        configure(data); // Store the IDs of the toggle button & list
18980
18981        var toggleId = data.toggle.attr('id');
18982        var listId = data.list.attr('id'); // If user did not provide toggle ID, set it
18983
18984        if (!toggleId) {
18985          toggleId = 'w-dropdown-toggle-' + i;
18986        } // If user did not provide list ID, set it
18987
18988
18989        if (!listId) {
18990          listId = 'w-dropdown-list-' + i;
18991        } // Add attributes to toggle element
18992
18993
18994        data.toggle.attr('id', toggleId);
18995        data.toggle.attr('aria-controls', listId);
18996        data.toggle.attr('aria-haspopup', 'menu');
18997        data.toggle.attr('aria-expanded', 'false'); // If toggle element is not a button
18998
18999        if (data.toggle.prop('tagName') !== 'BUTTON') {
19000          // Give it an appropriate role
19001          data.toggle.attr('role', 'button'); // And give it a tabindex if user has not provided one
19002
19003          if (!data.toggle.attr('tabindex')) {
19004            data.toggle.attr('tabindex', '0');
19005          }
19006        } // Add attributes to list element
19007
19008
19009        data.list.attr('id', listId);
19010        data.list.attr('aria-labelledby', toggleId);
19011        data.links.each(function (idx, link) {
19012          /**
19013           * In macOS Safari, links don't take focus on click unless they have
19014           * a tabindex. Without this, the dropdown will break.
19015           * @see https://gist.github.com/cvrebert/68659d0333a578d75372
19016           */
19017          if (!link.hasAttribute('tabindex')) link.setAttribute('tabindex', '0'); // We want to close the drop down if the href links somewhere internally
19018          // to the page
19019
19020          if (INTERNAL_PAGE_LINK_HASHES_PATTERN.test(link.hash)) {
19021            link.addEventListener('click', close.bind(null, data));
19022          }
19023        }); // Remove old events
19024
19025        data.el.off(namespace);
19026        data.toggle.off(namespace);
19027
19028        if (data.nav) {
19029          data.nav.off(namespace);
19030        }
19031
19032        var initialToggler = makeToggler(data, FORCE_CLOSE);
19033
19034        if (inDesigner) {
19035          data.el.on(settingEvent, makeSettingEventHandler(data));
19036        }
19037
19038        if (!inDesigner) {
19039          // Close in preview mode and clean the data.hovering state
19040          if (inApp) {
19041            data.hovering = false;
19042            close(data);
19043          }
19044
19045          if (data.config.hover) {
19046            data.toggle.on(mouseEnterEvent, makeMouseEnterHandler(data));
19047          }
19048
19049          data.el.on(closeEvent, initialToggler);
19050          data.el.on(keydownEvent, makeDropdownKeydownHandler(data));
19051          data.el.on(focusOutEvent, makeDropdownFocusOutHandler(data));
19052          data.toggle.on(mouseUpEvent, initialToggler);
19053          data.toggle.on(keydownEvent, makeToggleKeydownHandler(data));
19054          data.nav = data.el.closest('.w-nav');
19055          data.nav.on(closeEvent, initialToggler);
19056        }
19057      }
19058      /**
19059       * Mutate the data object with a new config property
19060       */
19061
19062
19063      function configure(data) {
19064        // Determine if z-index should be managed
19065        var zIndex = Number(data.el.css('z-index'));
19066        data.manageZ = zIndex === defaultZIndex || zIndex === defaultZIndex + 1;
19067        data.config = {
19068          hover: (data.el.attr('data-hover') === true || data.el.attr('data-hover') === '1') && !touch,
19069          delay: Number(data.el.attr('data-delay')) || 0
19070        };
19071      }
19072
19073      function makeSettingEventHandler(data) {
19074        return function (evt, options) {
19075          options = options || {};
19076          configure(data);
19077          options.open === true && open(data, true);
19078          options.open === false && close(data, {
19079            immediate: true
19080          });
19081        };
19082      }
19083
19084      function makeToggler(data, forceClose) {
19085        return debounce(function (evt) {
19086          if (data.open || evt && evt.type === 'w-close') {
19087            return close(data, {
19088              forceClose: forceClose
19089            });
19090          }
19091
19092          open(data);
19093        });
19094      }
19095
19096      function open(data) {
19097        if (data.open) {
19098          return;
19099        }
19100
19101        closeOthers(data);
19102        data.open = true;
19103        data.list.addClass(openStateClassName);
19104        data.toggle.addClass(openStateClassName);
19105        data.toggle.attr('aria-expanded', 'true'); // ARIA
19106
19107        ix.intro(0, data.el[0]);
19108        Webflow.redraw.up(); // Increase z-index to keep above other managed dropdowns
19109
19110        data.manageZ && data.el.css('z-index', defaultZIndex + 1); // Listen for click outside events
19111
19112        var isEditor = Webflow.env('editor');
19113
19114        if (!inDesigner) {
19115          $doc.on(mouseUpEvent, data.mouseUpOutside);
19116        }
19117
19118        if (data.hovering && !isEditor) {
19119          data.el.on(mouseLeaveEvent, data.mouseLeave);
19120        }
19121
19122        if (data.hovering && isEditor) {
19123          $doc.on(mouseMoveEvent, data.mouseMoveOutside);
19124        } // Clear previous delay
19125
19126
19127        window.clearTimeout(data.delayId);
19128      }
19129
19130      function close(data) {
19131        var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
19132          immediate = _ref.immediate,
19133          forceClose = _ref.forceClose;
19134
19135        if (!data.open) {
19136          return;
19137        } // Do not close hover-based menus if currently hovering
19138
19139
19140        if (data.config.hover && data.hovering && !forceClose) {
19141          return;
19142        }
19143
19144        data.toggle.attr('aria-expanded', 'false');
19145        data.open = false;
19146        var config = data.config;
19147        ix.outro(0, data.el[0]); // Stop listening for click outside events
19148
19149        $doc.off(mouseUpEvent, data.mouseUpOutside);
19150        $doc.off(mouseMoveEvent, data.mouseMoveOutside);
19151        data.el.off(mouseLeaveEvent, data.mouseLeave); // Clear previous delay
19152
19153        window.clearTimeout(data.delayId); // Skip delay during immediate
19154
19155        if (!config.delay || immediate) {
19156          return data.complete();
19157        } // Optionally wait for delay before close
19158
19159
19160        data.delayId = window.setTimeout(data.complete, config.delay);
19161      }
19162
19163      function closeAll() {
19164        $doc.find(namespace).each(function (i, el) {
19165          $(el).triggerHandler(closeEvent);
19166        });
19167      }
19168
19169      function closeOthers(data) {
19170        var self = data.el[0];
19171        $dropdowns.each(function (i, other) {
19172          var $other = $(other);
19173
19174          if ($other.is(self) || $other.has(self).length) {
19175            return;
19176          }
19177
19178          $other.triggerHandler(closeEvent);
19179        });
19180      }
19181
19182      function outside(data) {
19183        // Unbind previous click handler if it exists
19184        if (data.mouseUpOutside) {
19185          $doc.off(mouseUpEvent, data.mouseUpOutside);
19186        } // Close menu when clicked outside
19187
19188
19189        return debounce(function (evt) {
19190          if (!data.open) {
19191            return;
19192          }
19193
19194          var $target = $(evt.target);
19195
19196          if ($target.closest('.w-dropdown-toggle').length) {
19197            return;
19198          }
19199
19200          var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1;
19201          var isEditor = Webflow.env('editor');
19202
19203          if (isEventOutsideDropdowns) {
19204            if (isEditor) {
19205              var isEventOnDetachedSvg = $target.parents().length === 1 && $target.parents('svg').length === 1;
19206              var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length;
19207
19208              if (isEventOnDetachedSvg || isEventOnHoverControls) {
19209                return;
19210              }
19211            }
19212
19213            close(data);
19214          }
19215        });
19216      }
19217
19218      function complete(data) {
19219        return function () {
19220          data.list.removeClass(openStateClassName);
19221          data.toggle.removeClass(openStateClassName); // Reset z-index for managed dropdowns
19222
19223          data.manageZ && data.el.css('z-index', '');
19224        };
19225      }
19226
19227      function makeMouseEnterHandler(data) {
19228        return function () {
19229          data.hovering = true;
19230          open(data);
19231        };
19232      }
19233
19234      function makeMouseLeaveHandler(data) {
19235        return function () {
19236          data.hovering = false; // We do not want the list to close upon mouseleave
19237          // if one of the links has focus
19238
19239          if (!data.links.is(':focus')) {
19240            close(data);
19241          }
19242        };
19243      }
19244
19245      function moveOutside(data) {
19246        return debounce(function (evt) {
19247          if (!data.open) {
19248            return;
19249          }
19250
19251          var $target = $(evt.target);
19252          var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1;
19253
19254          if (isEventOutsideDropdowns) {
19255            var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length;
19256            var isEventOnHoverToolbar = $target.parents('.w-editor-bem-RTToolbar').length;
19257            var $editorOverlay = $('.w-editor-bem-EditorOverlay');
19258            var isDropdownInEdition = $editorOverlay.find('.w-editor-edit-outline').length || $editorOverlay.find('.w-editor-bem-RTToolbar').length;
19259
19260            if (isEventOnHoverControls || isEventOnHoverToolbar || isDropdownInEdition) {
19261              return;
19262            }
19263
19264            data.hovering = false;
19265            close(data);
19266          }
19267        });
19268      }
19269
19270      function makeDropdownKeydownHandler(data) {
19271        return function (evt) {
19272          // Do not respond to keyboard events in designer or preview mode,
19273          // or if the list is not open
19274          if (inDesigner || inPreview || !data.open) {
19275            return;
19276          } // Realign selectedIdx with the menu item that is currently in focus.
19277          // We need this because we do not track the `Tab` key activity!
19278
19279
19280          data.selectedIdx = data.links.index(document.activeElement); // Evaluate item-selection logic
19281
19282          switch (evt.keyCode) {
19283            case KEY_CODES.HOME:
19284              {
19285                if (!data.open) return;
19286                data.selectedIdx = 0;
19287                focusSelectedLink(data);
19288                return evt.preventDefault();
19289              }
19290
19291            case KEY_CODES.END:
19292              {
19293                if (!data.open) return;
19294                data.selectedIdx = data.links.length - 1;
19295                focusSelectedLink(data);
19296                return evt.preventDefault();
19297              }
19298
19299            case KEY_CODES.ESCAPE:
19300              {
19301                close(data);
19302                data.toggle.focus();
19303                return evt.stopPropagation();
19304              }
19305
19306            case KEY_CODES.ARROW_RIGHT:
19307            case KEY_CODES.ARROW_DOWN:
19308              {
19309                data.selectedIdx = Math.min(data.links.length - 1, data.selectedIdx + 1);
19310                focusSelectedLink(data);
19311                return evt.preventDefault();
19312              }
19313
19314            case KEY_CODES.ARROW_LEFT:
19315            case KEY_CODES.ARROW_UP:
19316              {
19317                data.selectedIdx = Math.max(-1, data.selectedIdx - 1);
19318                focusSelectedLink(data);
19319                return evt.preventDefault();
19320              }
19321          }
19322        };
19323      }
19324
19325      function focusSelectedLink(data) {
19326        if (data.links[data.selectedIdx]) {
19327          data.links[data.selectedIdx].focus();
19328        }
19329      }
19330
19331      function makeToggleKeydownHandler(data) {
19332        // We want to close immediately
19333        // if interacting via keyboard
19334        var toggler = makeToggler(data, FORCE_CLOSE);
19335        return function (evt) {
19336          // Do not respond to keyboard events in designer or preview
19337          if (inDesigner || inPreview) return; // If the menu is not open, we don't want
19338          // the up or Down arrows to do anything
19339
19340          if (!data.open) {
19341            switch (evt.keyCode) {
19342              case KEY_CODES.ARROW_UP:
19343              case KEY_CODES.ARROW_DOWN:
19344                {
19345                  return evt.stopPropagation();
19346                }
19347            }
19348          }
19349
19350          switch (evt.keyCode) {
19351            case KEY_CODES.SPACE:
19352            case KEY_CODES.ENTER:
19353              {
19354                toggler();
19355                evt.stopPropagation();
19356                return evt.preventDefault();
19357              }
19358          }
19359        };
19360      }
19361
19362      function makeDropdownFocusOutHandler(data) {
19363        return debounce(function (evt) {
19364          var relatedTarget = evt.relatedTarget,
19365            target = evt.target;
19366          var menuEl = data.el[0];
19367          /**
19368           * Close menu
19369           * With focusout events, the `relatedTarget` is the element that will next receive focus.
19370           * @see: https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/relatedTarget
19371           */
19372
19373          var menuContainsFocus = menuEl.contains(relatedTarget) || menuEl.contains(target);
19374
19375          if (!menuContainsFocus) {
19376            close(data);
19377          }
19378
19379          return evt.stopPropagation();
19380        });
19381      } // Export module
19382
19383
19384      return api;
19385    });
19386
19387    /***/
19388  }),
19389/* 318 */
19390/***/ (function (module, exports, __webpack_require__) {
19391
19392    "use strict";
19393    // @wf-will-never-add-flow-to-this-file
19394
19395    /* globals
19396      window,
19397      document,
19398      FormData,
19399      WEBFLOW_FORM_API_HOST,
19400      WEBFLOW_FORM_OLDIE_HOST
19401    */
19402
19403    /* eslint-disable no-var */
19404
19405    /**
19406     * Webflow: Forms
19407     */
19408
19409    var _interopRequireDefault = __webpack_require__(0);
19410
19411    var _slicedToArray2 = _interopRequireDefault(__webpack_require__(319));
19412
19413    var Webflow = __webpack_require__(3);
19414
19415    Webflow.define('forms', module.exports = function ($, _) {
19416      var api = {};
19417      var $doc = $(document);
19418      var $forms;
19419      var loc = window.location;
19420      var retro = window.XDomainRequest && !window.atob;
19421      var namespace = '.w-form';
19422      var siteId;
19423      var emailField = /e(-)?mail/i;
19424      var emailValue = /^\S+@\S+$/;
19425      var alert = window.alert;
19426      var inApp = Webflow.env();
19427      var listening;
19428      var formUrl;
19429      var signFileUrl; // MailChimp domains: list-manage.com + mirrors
19430
19431      var chimpRegex = /list-manage[1-9]?.com/i;
19432
19433      var disconnected = _.debounce(function () {
19434        alert('Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.');
19435      }, 100);
19436
19437      api.ready = api.design = api.preview = function () {
19438        // Init forms
19439        init(); // Wire document events on published site only once
19440
19441        if (!inApp && !listening) {
19442          addListeners();
19443        }
19444      };
19445
19446      function init() {
19447        siteId = $('html').attr('data-wf-site');
19448        formUrl = "https://webflow.com" + '/api/v1/form/' + siteId; // Work around same-protocol IE XDR limitation - without this IE9 and below forms won't submit
19449
19450        if (retro && formUrl.indexOf("https://webflow.com") >= 0) {
19451          formUrl = formUrl.replace("https://webflow.com", "http://formdata.webflow.com");
19452        }
19453
19454        signFileUrl = "".concat(formUrl, "/signFile");
19455        $forms = $(namespace + ' form');
19456
19457        if (!$forms.length) {
19458          return;
19459        }
19460
19461        $forms.each(build);
19462      }
19463
19464      function build(i, el) {
19465        // Store form state using namespace
19466        var $el = $(el);
19467        var data = $.data(el, namespace);
19468
19469        if (!data) {
19470          data = $.data(el, namespace, {
19471            form: $el
19472          });
19473        } // data.form
19474
19475
19476        reset(data);
19477        var wrap = $el.closest('div.w-form');
19478        data.done = wrap.find('> .w-form-done');
19479        data.fail = wrap.find('> .w-form-fail');
19480        data.fileUploads = wrap.find('.w-file-upload');
19481        data.fileUploads.each(function (j) {
19482          initFileUpload(j, data);
19483        });
19484        var action = data.action = $el.attr('action');
19485        data.handler = null;
19486        data.redirect = $el.attr('data-redirect'); // MailChimp form
19487
19488        if (chimpRegex.test(action)) {
19489          data.handler = submitMailChimp;
19490          return;
19491        } // Custom form action
19492
19493
19494        if (action) {
19495          return;
19496        } // Webflow forms for hosting accounts
19497
19498
19499        if (siteId) {
19500          data.handler = typeof hostedSubmitWebflow === 'function' ? hostedSubmitWebflow : exportedSubmitWebflow;
19501          return;
19502        } // Alert for disconnected Webflow forms
19503
19504
19505        disconnected();
19506      }
19507
19508      function addListeners() {
19509        listening = true; // Handle form submission for Webflow forms
19510
19511        $doc.on('submit', namespace + ' form', function (evt) {
19512          var data = $.data(this, namespace);
19513
19514          if (data.handler) {
19515            data.evt = evt;
19516            data.handler(data);
19517          }
19518        }); // handle checked ui for custom checkbox and radio button
19519
19520        var CHECKBOX_CLASS_NAME = '.w-checkbox-input';
19521        var RADIO_INPUT_CLASS_NAME = '.w-radio-input';
19522        var CHECKED_CLASS = 'w--redirected-checked';
19523        var FOCUSED_CLASS = 'w--redirected-focus';
19524        var CUSTOM_CONTROLS = [['checkbox', CHECKBOX_CLASS_NAME], ['radio', RADIO_INPUT_CLASS_NAME]];
19525        $doc.on('change', namespace + " form input[type=\"checkbox\"]:not(" + CHECKBOX_CLASS_NAME + ')', function (evt) {
19526          $(evt.target).siblings(CHECKBOX_CLASS_NAME).toggleClass(CHECKED_CLASS);
19527        });
19528        $doc.on('change', namespace + " form input[type=\"radio\"]", function (evt) {
19529          $("input[name=\"".concat(evt.target.name, "\"]:not(").concat(CHECKBOX_CLASS_NAME, ")")).map(function (i, el) {
19530            return $(el).siblings(RADIO_INPUT_CLASS_NAME).removeClass(CHECKED_CLASS);
19531          });
19532          var $target = $(evt.target);
19533
19534          if (!$target.hasClass('w-radio-input')) {
19535            $target.siblings(RADIO_INPUT_CLASS_NAME).addClass(CHECKED_CLASS);
19536          }
19537        });
19538        CUSTOM_CONTROLS.forEach(function (_ref) {
19539          var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
19540            controlType = _ref2[0],
19541            customControlClassName = _ref2[1];
19542
19543          $doc.on('focus', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
19544            $(evt.target).siblings(customControlClassName).addClass(FOCUSED_CLASS);
19545          });
19546          $doc.on('blur', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
19547            $(evt.target).siblings(customControlClassName).removeClass(FOCUSED_CLASS);
19548          });
19549        });
19550      } // Reset data common to all submit handlers
19551
19552
19553      function reset(data) {
19554        var btn = data.btn = data.form.find(':input[type="submit"]');
19555        data.wait = data.btn.attr('data-wait') || null;
19556        data.success = false;
19557        btn.prop('disabled', false);
19558        data.label && btn.val(data.label);
19559      } // Disable submit button
19560
19561
19562      function disableBtn(data) {
19563        var btn = data.btn;
19564        var wait = data.wait;
19565        btn.prop('disabled', true); // Show wait text and store previous label
19566
19567        if (wait) {
19568          data.label = btn.val();
19569          btn.val(wait);
19570        }
19571      } // Find form fields, validate, and set value pairs
19572
19573
19574      function findFields(form, result) {
19575        var status = null;
19576        result = result || {}; // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas
19577
19578        form.find(':input:not([type="submit"]):not([type="file"])').each(function (i, el) {
19579          var field = $(el);
19580          var type = field.attr('type');
19581          var name = field.attr('data-name') || field.attr('name') || 'Field ' + (i + 1);
19582          var value = field.val();
19583
19584          if (type === 'checkbox') {
19585            value = field.is(':checked');
19586          } else if (type === 'radio') {
19587            // Radio group value already processed
19588            if (result[name] === null || typeof result[name] === 'string') {
19589              return;
19590            }
19591
19592            value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null;
19593          }
19594
19595          if (typeof value === 'string') {
19596            value = $.trim(value);
19597          }
19598
19599          result[name] = value;
19600          status = status || getStatus(field, type, name, value);
19601        });
19602        return status;
19603      }
19604
19605      function findFileUploads(form) {
19606        var result = {};
19607        form.find(':input[type="file"]').each(function (i, el) {
19608          var field = $(el);
19609          var name = field.attr('data-name') || field.attr('name') || 'File ' + (i + 1);
19610          var value = field.attr('data-value');
19611
19612          if (typeof value === 'string') {
19613            value = $.trim(value);
19614          }
19615
19616          result[name] = value;
19617        });
19618        return result;
19619      }
19620
19621      function getStatus(field, type, name, value) {
19622        var status = null;
19623
19624        if (type === 'password') {
19625          status = 'Passwords cannot be submitted.';
19626        } else if (field.attr('required')) {
19627          if (!value) {
19628            status = 'Please fill out the required field: ' + name;
19629          } else if (emailField.test(field.attr('type'))) {
19630            if (!emailValue.test(value)) {
19631              status = 'Please enter a valid email address for: ' + name;
19632            }
19633          }
19634        } else if (name === 'g-recaptcha-response' && !value) {
19635          status = 'Please confirm you’re not a robot.';
19636        }
19637
19638        return status;
19639      }
19640
19641      function exportedSubmitWebflow(data) {
19642        preventDefault(data);
19643        afterSubmit(data);
19644      } // Submit form to MailChimp
19645
19646
19647      function submitMailChimp(data) {
19648        reset(data);
19649        var form = data.form;
19650        var payload = {}; // Skip Ajax submission if http/s mismatch, fallback to POST instead
19651
19652        if (/^https/.test(loc.href) && !/^https/.test(data.action)) {
19653          form.attr('method', 'post');
19654          return;
19655        }
19656
19657        preventDefault(data); // Find & populate all fields
19658
19659        var status = findFields(form, payload);
19660
19661        if (status) {
19662          return alert(status);
19663        } // Disable submit button
19664
19665
19666        disableBtn(data); // Use special format for MailChimp params
19667
19668        var fullName;
19669
19670        _.each(payload, function (value, key) {
19671          if (emailField.test(key)) {
19672            payload.EMAIL = value;
19673          }
19674
19675          if (/^((full[ _-]?)?name)$/i.test(key)) {
19676            fullName = value;
19677          }
19678
19679          if (/^(first[ _-]?name)$/i.test(key)) {
19680            payload.FNAME = value;
19681          }
19682
19683          if (/^(last[ _-]?name)$/i.test(key)) {
19684            payload.LNAME = value;
19685          }
19686        });
19687
19688        if (fullName && !payload.FNAME) {
19689          fullName = fullName.split(' ');
19690          payload.FNAME = fullName[0];
19691          payload.LNAME = payload.LNAME || fullName[1];
19692        } // Use the (undocumented) MailChimp jsonp api
19693
19694
19695        var url = data.action.replace('/post?', '/post-json?') + '&c=?'; // Add special param to prevent bot signups
19696
19697        var userId = url.indexOf('u=') + 2;
19698        userId = url.substring(userId, url.indexOf('&', userId));
19699        var listId = url.indexOf('id=') + 3;
19700        listId = url.substring(listId, url.indexOf('&', listId));
19701        payload['b_' + userId + '_' + listId] = '';
19702        $.ajax({
19703          url: url,
19704          data: payload,
19705          dataType: 'jsonp'
19706        }).done(function (resp) {
19707          data.success = resp.result === 'success' || /already/.test(resp.msg);
19708
19709          if (!data.success) {
19710            console.info('MailChimp error: ' + resp.msg);
19711          }
19712
19713          afterSubmit(data);
19714        }).fail(function () {
19715          afterSubmit(data);
19716        });
19717      } // Common callback which runs after all Ajax submissions
19718
19719
19720      function afterSubmit(data) {
19721        var form = data.form;
19722        var redirect = data.redirect;
19723        var success = data.success; // Redirect to a success url if defined
19724
19725        if (success && redirect) {
19726          Webflow.location(redirect);
19727          return;
19728        } // Show or hide status divs
19729
19730
19731        data.done.toggle(success);
19732        data.fail.toggle(!success); // Hide form on success
19733
19734        form.toggle(!success); // Reset data and enable submit button
19735
19736        reset(data);
19737      }
19738
19739      function preventDefault(data) {
19740        data.evt && data.evt.preventDefault();
19741        data.evt = null;
19742      }
19743
19744      function initFileUpload(i, form) {
19745        if (!form.fileUploads || !form.fileUploads[i]) {
19746          return;
19747        }
19748
19749        var file;
19750        var $el = $(form.fileUploads[i]);
19751        var $defaultWrap = $el.find('> .w-file-upload-default');
19752        var $uploadingWrap = $el.find('> .w-file-upload-uploading');
19753        var $successWrap = $el.find('> .w-file-upload-success');
19754        var $errorWrap = $el.find('> .w-file-upload-error');
19755        var $input = $defaultWrap.find('.w-file-upload-input');
19756        var $label = $defaultWrap.find('.w-file-upload-label');
19757        var $labelChildren = $label.children();
19758        var $errorMsgEl = $errorWrap.find('.w-file-upload-error-msg');
19759        var $fileEl = $successWrap.find('.w-file-upload-file');
19760        var $removeEl = $successWrap.find('.w-file-remove-link');
19761        var $fileNameEl = $fileEl.find('.w-file-upload-file-name');
19762        var sizeErrMsg = $errorMsgEl.attr('data-w-size-error');
19763        var typeErrMsg = $errorMsgEl.attr('data-w-type-error');
19764        var genericErrMsg = $errorMsgEl.attr('data-w-generic-error');
19765
19766        if (!inApp) {
19767          $removeEl.on('click', function () {
19768            $input.removeAttr('data-value');
19769            $input.val('');
19770            $fileNameEl.html('');
19771            $defaultWrap.toggle(true);
19772            $successWrap.toggle(false);
19773          });
19774          $input.on('change', function (e) {
19775            file = e.target && e.target.files && e.target.files[0];
19776
19777            if (!file) {
19778              return;
19779            } // Show uploading
19780
19781
19782            $defaultWrap.toggle(false);
19783            $errorWrap.toggle(false);
19784            $uploadingWrap.toggle(true); // Set filename
19785
19786            $fileNameEl.text(file.name); // Disable submit button
19787
19788            if (!isUploading()) {
19789              disableBtn(form);
19790            }
19791
19792            form.fileUploads[i].uploading = true;
19793            signFile(file, afterSign);
19794          }); // Setting input width 1px and height equal label
19795          // This is so the browser required error will show up
19796
19797          var height = $label.outerHeight();
19798          $input.height(height);
19799          $input.width(1);
19800        } else {
19801          $input.on('click', function (e) {
19802            e.preventDefault();
19803          });
19804          $label.on('click', function (e) {
19805            e.preventDefault();
19806          });
19807          $labelChildren.on('click', function (e) {
19808            e.preventDefault();
19809          });
19810        }
19811
19812        function parseError(err) {
19813          var errorMsg = err.responseJSON && err.responseJSON.msg;
19814          var userError = genericErrMsg;
19815
19816          if (typeof errorMsg === 'string' && errorMsg.indexOf('InvalidFileTypeError') === 0) {
19817            userError = typeErrMsg;
19818          } else if (typeof errorMsg === 'string' && errorMsg.indexOf('MaxFileSizeError') === 0) {
19819            userError = sizeErrMsg;
19820          }
19821
19822          $errorMsgEl.text(userError);
19823          $input.removeAttr('data-value');
19824          $input.val('');
19825          $uploadingWrap.toggle(false);
19826          $defaultWrap.toggle(true);
19827          $errorWrap.toggle(true);
19828          form.fileUploads[i].uploading = false;
19829
19830          if (!isUploading()) {
19831            reset(form);
19832          }
19833        }
19834
19835        function afterSign(err, data) {
19836          if (err) {
19837            return parseError(err);
19838          }
19839
19840          var fileName = data.fileName;
19841          var postData = data.postData;
19842          var fileId = data.fileId;
19843          var s3Url = data.s3Url;
19844          $input.attr('data-value', fileId);
19845          uploadS3(s3Url, postData, file, fileName, afterUpload);
19846        }
19847
19848        function afterUpload(err) {
19849          if (err) {
19850            return parseError(err);
19851          } // Show success
19852
19853
19854          $uploadingWrap.toggle(false);
19855          $successWrap.css('display', 'inline-block');
19856          form.fileUploads[i].uploading = false;
19857
19858          if (!isUploading()) {
19859            reset(form);
19860          }
19861        }
19862
19863        function isUploading() {
19864          var uploads = form.fileUploads && form.fileUploads.toArray() || [];
19865          return uploads.some(function (value) {
19866            return value.uploading;
19867          });
19868        }
19869      }
19870
19871      function signFile(file, cb) {
19872        var payload = {
19873          name: file.name,
19874          size: file.size
19875        };
19876        $.ajax({
19877          type: 'POST',
19878          url: signFileUrl,
19879          data: payload,
19880          dataType: 'json',
19881          crossDomain: true
19882        }).done(function (data) {
19883          cb(null, data);
19884        }).fail(function (err) {
19885          cb(err);
19886        });
19887      }
19888
19889      function uploadS3(url, data, file, fileName, cb) {
19890        var formData = new FormData();
19891
19892        for (var k in data) {
19893          formData.append(k, data[k]);
19894        }
19895
19896        formData.append('file', file, fileName);
19897        $.ajax({
19898          type: 'POST',
19899          url: url,
19900          data: formData,
19901          processData: false,
19902          contentType: false
19903        }).done(function () {
19904          cb(null);
19905        }).fail(function (err) {
19906          cb(err);
19907        });
19908      } // Export module
19909
19910
19911      return api;
19912    });
19913
19914    /***/
19915  }),
19916/* 319 */
19917/***/ (function (module, exports, __webpack_require__) {
19918
19919    var arrayWithHoles = __webpack_require__(320);
19920
19921    var iterableToArrayLimit = __webpack_require__(321);
19922
19923    var nonIterableRest = __webpack_require__(322);
19924
19925    function _slicedToArray(arr, i) {
19926      return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
19927    }
19928
19929    module.exports = _slicedToArray;
19930
19931    /***/
19932  }),
19933/* 320 */
19934/***/ (function (module, exports) {
19935
19936    function _arrayWithHoles(arr) {
19937      if (Array.isArray(arr)) return arr;
19938    }
19939
19940    module.exports = _arrayWithHoles;
19941
19942    /***/
19943  }),
19944/* 321 */
19945/***/ (function (module, exports) {
19946
19947    function _iterableToArrayLimit(arr, i) {
19948      var _arr = [];
19949      var _n = true;
19950      var _d = false;
19951      var _e = undefined;
19952
19953      try {
19954        for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
19955          _arr.push(_s.value);
19956
19957          if (i && _arr.length === i) break;
19958        }
19959      } catch (err) {
19960        _d = true;
19961        _e = err;
19962      } finally {
19963        try {
19964          if (!_n && _i["return"] != null) _i["return"]();
19965        } finally {
19966          if (_d) throw _e;
19967        }
19968      }
19969
19970      return _arr;
19971    }
19972
19973    module.exports = _iterableToArrayLimit;
19974
19975    /***/
19976  }),
19977/* 322 */
19978/***/ (function (module, exports) {
19979
19980    function _nonIterableRest() {
19981      throw new TypeError("Invalid attempt to destructure non-iterable instance");
19982    }
19983
19984    module.exports = _nonIterableRest;
19985
19986    /***/
19987  }),
19988/* 323 */
19989/***/ (function (module, exports, __webpack_require__) {
19990
19991    "use strict";
19992    // @wf-will-never-add-flow-to-this-file
19993
19994    /* globals window, document, jQuery */
19995
19996    /* eslint-disable no-var */
19997
19998    /**
19999     * Webflow: Lightbox component
20000     */
20001
20002    var Webflow = __webpack_require__(3);
20003
20004    var CONDITION_INVISIBLE_CLASS = 'w-condition-invisible';
20005    var CONDVIS_SELECTOR = '.' + CONDITION_INVISIBLE_CLASS;
20006
20007    function withoutConditionallyHidden(items) {
20008      return items.filter(function (item) {
20009        return !isConditionallyHidden(item);
20010      });
20011    }
20012
20013    function isConditionallyHidden(item) {
20014      return Boolean(item.$el && item.$el.closest(CONDVIS_SELECTOR).length);
20015    }
20016
20017    function getPreviousVisibleIndex(start, items) {
20018      for (var i = start; i >= 0; i--) {
20019        if (!isConditionallyHidden(items[i])) {
20020          return i;
20021        }
20022      }
20023
20024      return -1;
20025    }
20026
20027    function getNextVisibleIndex(start, items) {
20028      for (var i = start; i <= items.length - 1; i++) {
20029        if (!isConditionallyHidden(items[i])) {
20030          return i;
20031        }
20032      }
20033
20034      return -1;
20035    }
20036
20037    function shouldSetArrowLeftInactive(currentIndex, items) {
20038      return getPreviousVisibleIndex(currentIndex - 1, items) === -1;
20039    }
20040
20041    function shouldSetArrowRightInactive(currentIndex, items) {
20042      return getNextVisibleIndex(currentIndex + 1, items) === -1;
20043    }
20044
20045    function createLightbox(window, document, $, container) {
20046      var tram = $.tram;
20047      var isArray = Array.isArray;
20048      var namespace = 'w-lightbox';
20049      var prefix = namespace + '-';
20050      var prefixRegex = /(^|\s+)/g; // Array of objects describing items to be displayed.
20051
20052      var items = []; // Index of the currently displayed item.
20053
20054      var currentIndex; // Object holding references to jQuery wrapped nodes.
20055
20056      var $refs; // Instance of Spinner
20057
20058      var spinner;
20059
20060      function lightbox(thing, index) {
20061        items = isArray(thing) ? thing : [thing];
20062
20063        if (!$refs) {
20064          lightbox.build();
20065        }
20066
20067        if (withoutConditionallyHidden(items).length > 1) {
20068          $refs.items = $refs.empty;
20069          items.forEach(function (item) {
20070            var $thumbnail = dom('thumbnail');
20071            var $item = dom('item').append($thumbnail);
20072
20073            if (isConditionallyHidden(item)) {
20074              $item.addClass(CONDITION_INVISIBLE_CLASS);
20075            }
20076
20077            $refs.items = $refs.items.add($item);
20078            loadImage(item.thumbnailUrl || item.url, function ($image) {
20079              if ($image.prop('width') > $image.prop('height')) {
20080                addClass($image, 'wide');
20081              } else {
20082                addClass($image, 'tall');
20083              }
20084
20085              $thumbnail.append(addClass($image, 'thumbnail-image'));
20086            });
20087          });
20088          $refs.strip.empty().append($refs.items);
20089          addClass($refs.content, 'group');
20090        }
20091
20092        tram( // Focus the lightbox to receive keyboard events.
20093          removeClass($refs.lightbox, 'hide').trigger('focus')).add('opacity .3s').start({
20094            opacity: 1
20095          }); // Prevent document from scrolling while lightbox is active.
20096
20097        addClass($refs.html, 'noscroll');
20098        return lightbox.show(index || 0);
20099      }
20100      /**
20101       * Creates the DOM structure required by the lightbox.
20102       */
20103
20104
20105      lightbox.build = function () {
20106        // In case `build` is called more than once.
20107        lightbox.destroy();
20108        $refs = {
20109          html: $(document.documentElement),
20110          // Empty jQuery object can be used to build new ones using `.add`.
20111          empty: $()
20112        };
20113        $refs.arrowLeft = dom('control left inactive');
20114        $refs.arrowRight = dom('control right inactive');
20115        $refs.close = dom('control close');
20116        $refs.spinner = dom('spinner');
20117        $refs.strip = dom('strip');
20118        spinner = new Spinner($refs.spinner, prefixed('hide'));
20119        $refs.content = dom('content').append($refs.spinner, $refs.arrowLeft, $refs.arrowRight, $refs.close);
20120        $refs.container = dom('container').append($refs.content, $refs.strip);
20121        $refs.lightbox = dom('backdrop hide').append($refs.container); // We are delegating events for performance reasons and also
20122        // to not have to reattach handlers when images change.
20123
20124        $refs.strip.on('click', selector('item'), itemTapHandler);
20125        $refs.content.on('swipe', swipeHandler).on('click', selector('left'), handlerPrev).on('click', selector('right'), handlerNext).on('click', selector('close'), handlerHide).on('click', selector('image, caption'), handlerNext);
20126        $refs.container.on('click', selector('view'), handlerHide) // Prevent images from being dragged around.
20127          .on('dragstart', selector('img'), preventDefault);
20128        $refs.lightbox.on('keydown', keyHandler) // IE loses focus to inner nodes without letting us know.
20129          .on('focusin', focusThis); // The `tabindex` attribute is needed to enable non-input elements
20130        // to receive keyboard events.
20131
20132        $(container).append($refs.lightbox.prop('tabIndex', 0));
20133        return lightbox;
20134      };
20135      /**
20136       * Dispose of DOM nodes created by the lightbox.
20137       */
20138
20139
20140      lightbox.destroy = function () {
20141        if (!$refs) {
20142          return;
20143        } // Event handlers are also removed.
20144
20145
20146        removeClass($refs.html, 'noscroll');
20147        $refs.lightbox.remove();
20148        $refs = undefined;
20149      };
20150      /**
20151       * Show a specific item.
20152       */
20153
20154
20155      lightbox.show = function (index) {
20156        // Bail if we are already showing this item.
20157        if (index === currentIndex) {
20158          return;
20159        }
20160
20161        var item = items[index];
20162
20163        if (!item) {
20164          return lightbox.hide();
20165        }
20166
20167        if (isConditionallyHidden(item)) {
20168          if (index < currentIndex) {
20169            var previousVisibleIndex = getPreviousVisibleIndex(index - 1, items);
20170            index = previousVisibleIndex > -1 ? previousVisibleIndex : index;
20171          } else {
20172            var nextVisibleIndex = getNextVisibleIndex(index + 1, items);
20173            index = nextVisibleIndex > -1 ? nextVisibleIndex : index;
20174          }
20175
20176          item = items[index];
20177        }
20178
20179        var previousIndex = currentIndex;
20180        currentIndex = index;
20181        spinner.show(); // For videos, load an empty SVG with the video dimensions to preserve
20182        // the video’s aspect ratio while being responsive.
20183
20184        var url = item.html && svgDataUri(item.width, item.height) || item.url;
20185        loadImage(url, function ($image) {
20186          // Make sure this is the last item requested to be shown since
20187          // images can finish loading in a different order than they were
20188          // requested in.
20189          if (index !== currentIndex) {
20190            return;
20191          }
20192
20193          var $figure = dom('figure', 'figure').append(addClass($image, 'image'));
20194          var $frame = dom('frame').append($figure);
20195          var $newView = dom('view').append($frame);
20196          var $html;
20197          var isIframe;
20198
20199          if (item.html) {
20200            $html = $(item.html);
20201            isIframe = $html.is('iframe');
20202
20203            if (isIframe) {
20204              $html.on('load', transitionToNewView);
20205            }
20206
20207            $figure.append(addClass($html, 'embed'));
20208          }
20209
20210          if (item.caption) {
20211            $figure.append(dom('caption', 'figcaption').text(item.caption));
20212          }
20213
20214          $refs.spinner.before($newView);
20215
20216          if (!isIframe) {
20217            transitionToNewView();
20218          }
20219
20220          function transitionToNewView() {
20221            spinner.hide();
20222
20223            if (index !== currentIndex) {
20224              $newView.remove();
20225              return;
20226            }
20227
20228            toggleClass($refs.arrowLeft, 'inactive', shouldSetArrowLeftInactive(index, items));
20229            toggleClass($refs.arrowRight, 'inactive', shouldSetArrowRightInactive(index, items));
20230
20231            if ($refs.view) {
20232              tram($refs.view).add('opacity .3s').start({
20233                opacity: 0
20234              }).then(remover($refs.view));
20235              tram($newView).add('opacity .3s').add('transform .3s').set({
20236                x: index > previousIndex ? '80px' : '-80px'
20237              }).start({
20238                opacity: 1,
20239                x: 0
20240              });
20241            } else {
20242              $newView.css('opacity', 1);
20243            }
20244
20245            $refs.view = $newView;
20246
20247            if ($refs.items) {
20248              removeClass($refs.items, 'active'); // Mark proper thumbnail as active
20249
20250              var $activeThumb = $refs.items.eq(index);
20251              addClass($activeThumb, 'active'); // Scroll into view
20252
20253              maybeScroll($activeThumb);
20254            }
20255          }
20256        });
20257        return lightbox;
20258      };
20259      /**
20260       * Hides the lightbox.
20261       */
20262
20263
20264      lightbox.hide = function () {
20265        tram($refs.lightbox).add('opacity .3s').start({
20266          opacity: 0
20267        }).then(hideLightbox);
20268        return lightbox;
20269      };
20270
20271      lightbox.prev = function () {
20272        var previousVisibleIndex = getPreviousVisibleIndex(currentIndex - 1, items);
20273
20274        if (previousVisibleIndex > -1) {
20275          lightbox.show(previousVisibleIndex);
20276        }
20277      };
20278
20279      lightbox.next = function () {
20280        var nextVisibleIndex = getNextVisibleIndex(currentIndex + 1, items);
20281
20282        if (nextVisibleIndex > -1) {
20283          lightbox.show(nextVisibleIndex);
20284        }
20285      };
20286
20287      function createHandler(action) {
20288        return function (event) {
20289          // We only care about events triggered directly on the bound selectors.
20290          if (this !== event.target) {
20291            return;
20292          }
20293
20294          event.stopPropagation();
20295          event.preventDefault();
20296          action();
20297        };
20298      }
20299
20300      var handlerPrev = createHandler(lightbox.prev);
20301      var handlerNext = createHandler(lightbox.next);
20302      var handlerHide = createHandler(lightbox.hide);
20303
20304      var itemTapHandler = function itemTapHandler(event) {
20305        var index = $(this).index();
20306        event.preventDefault();
20307        lightbox.show(index);
20308      };
20309
20310      var swipeHandler = function swipeHandler(event, data) {
20311        // Prevent scrolling.
20312        event.preventDefault();
20313
20314        if (data.direction === 'left') {
20315          lightbox.next();
20316        } else if (data.direction === 'right') {
20317          lightbox.prev();
20318        }
20319      };
20320
20321      var focusThis = function focusThis() {
20322        this.focus();
20323      };
20324
20325      function preventDefault(event) {
20326        event.preventDefault();
20327      }
20328
20329      function keyHandler(event) {
20330        var keyCode = event.keyCode; // [esc]
20331
20332        if (keyCode === 27) {
20333          lightbox.hide(); // [◀]
20334        } else if (keyCode === 37) {
20335          lightbox.prev(); // [▶]
20336        } else if (keyCode === 39) {
20337          lightbox.next();
20338        }
20339      }
20340
20341      function hideLightbox() {
20342        // If the lightbox hasn't been destroyed already
20343        if ($refs) {
20344          // Reset strip scroll, otherwise next lightbox opens scrolled to last position
20345          $refs.strip.scrollLeft(0).empty();
20346          removeClass($refs.html, 'noscroll');
20347          addClass($refs.lightbox, 'hide');
20348          $refs.view && $refs.view.remove(); // Reset some stuff
20349
20350          removeClass($refs.content, 'group');
20351          addClass($refs.arrowLeft, 'inactive');
20352          addClass($refs.arrowRight, 'inactive');
20353          currentIndex = $refs.view = undefined;
20354        }
20355      }
20356
20357      function loadImage(url, callback) {
20358        var $image = dom('img', 'img');
20359        $image.one('load', function () {
20360          callback($image);
20361        }); // Start loading image.
20362
20363        $image.attr('src', url);
20364        return $image;
20365      }
20366
20367      function remover($element) {
20368        return function () {
20369          $element.remove();
20370        };
20371      }
20372
20373      function maybeScroll($item) {
20374        var itemElement = $item.get(0);
20375        var stripElement = $refs.strip.get(0);
20376        var itemLeft = itemElement.offsetLeft;
20377        var itemWidth = itemElement.clientWidth;
20378        var stripScrollLeft = stripElement.scrollLeft;
20379        var stripWidth = stripElement.clientWidth;
20380        var stripScrollLeftMax = stripElement.scrollWidth - stripWidth;
20381        var newScrollLeft;
20382
20383        if (itemLeft < stripScrollLeft) {
20384          newScrollLeft = Math.max(0, itemLeft + itemWidth - stripWidth);
20385        } else if (itemLeft + itemWidth > stripWidth + stripScrollLeft) {
20386          newScrollLeft = Math.min(itemLeft, stripScrollLeftMax);
20387        }
20388
20389        if (newScrollLeft != null) {
20390          tram($refs.strip).add('scroll-left 500ms').start({
20391            'scroll-left': newScrollLeft
20392          });
20393        }
20394      }
20395      /**
20396       * Spinner
20397       */
20398
20399
20400      function Spinner($spinner, className, delay) {
20401        this.$element = $spinner;
20402        this.className = className;
20403        this.delay = delay || 200;
20404        this.hide();
20405      }
20406
20407      Spinner.prototype.show = function () {
20408        // eslint-disable-next-line no-shadow
20409        var spinner = this; // Bail if we are already showing the spinner.
20410
20411        if (spinner.timeoutId) {
20412          return;
20413        }
20414
20415        spinner.timeoutId = setTimeout(function () {
20416          spinner.$element.removeClass(spinner.className); // eslint-disable-next-line webflow/no-delete
20417
20418          delete spinner.timeoutId;
20419        }, spinner.delay);
20420      };
20421
20422      Spinner.prototype.hide = function () {
20423        // eslint-disable-next-line no-shadow
20424        var spinner = this;
20425
20426        if (spinner.timeoutId) {
20427          clearTimeout(spinner.timeoutId); // eslint-disable-next-line webflow/no-delete
20428
20429          delete spinner.timeoutId;
20430          return;
20431        }
20432
20433        spinner.$element.addClass(spinner.className);
20434      };
20435
20436      function prefixed(string, isSelector) {
20437        return string.replace(prefixRegex, (isSelector ? ' .' : ' ') + prefix);
20438      }
20439
20440      function selector(string) {
20441        return prefixed(string, true);
20442      }
20443      /**
20444       * jQuery.addClass with auto-prefixing
20445       * @param  {jQuery} Element to add class to
20446       * @param  {string}
20446 Class name that will be prefixed and added to element
20447       * @return {jQuery}
20448       */
20449
20450
20451      function addClass($element, className) {
20452        return $element.addClass(prefixed(className));
20453      }
20454      /**
20455       * jQuery.removeClass with auto-prefixing
20456       * @param  {jQuery} Element to remove class from
20457       * @param  {string} Class name that will be prefixed and removed from element
20458       * @return {jQuery}
20459       */
20460
20461
20462      function removeClass($element, className) {
20463        return $element.removeClass(prefixed(className));
20464      }
20465      /**
20466       * jQuery.toggleClass with auto-prefixing
20467       * @param  {jQuery}  Element where class will be toggled
20468       * @param  {string}  Class name that will be prefixed and toggled
20469       * @param  {boolean} Optional boolean that determines if class will be added or removed
20470       * @return {jQuery}
20471       */
20472
20473
20474      function toggleClass($element, className, shouldAdd) {
20475        return $element.toggleClass(prefixed(className), shouldAdd);
20476      }
20477      /**
20478       * Create a new DOM element wrapped in a jQuery object,
20479       * decorated with our custom methods.
20480       * @param  {string} className
20481       * @param  {string} [tag]
20482       * @return {jQuery}
20483       */
20484
20485
20486      function dom(className, tag) {
20487        return addClass($(document.createElement(tag || 'div')), className);
20488      }
20489
20490      function svgDataUri(width, height) {
20491        var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + width + '" height="' + height + '"/>';
20492        return 'data:image/svg+xml;charset=utf-8,' + encodeURI(svg);
20493      } // Compute some dimensions manually for iOS < 8, because of buggy support for VH.
20494      // Also, Android built-in browser does not support viewport units.
20495
20496
20497      (function () {
20498        var ua = window.navigator.userAgent;
20499        var iOSRegex = /(iPhone|iPad|iPod);[^OS]*OS (\d)/;
20500        var iOSMatches = ua.match(iOSRegex);
20501        var android = ua.indexOf('Android ') > -1 && ua.indexOf('Chrome') === -1;
20502
20503        if (!android && (!iOSMatches || iOSMatches[2] > 7)) {
20504          return;
20505        }
20506
20507        var styleNode = document.createElement('style');
20508        document.head.appendChild(styleNode);
20509        window.addEventListener('resize', refresh, true);
20510
20511        function refresh() {
20512          var vh = window.innerHeight;
20513          var vw = window.innerWidth;
20514          var content = '.w-lightbox-content, .w-lightbox-view, .w-lightbox-view:before {' + 'height:' + vh + 'px' + '}' + '.w-lightbox-view {' + 'width:' + vw + 'px' + '}' + '.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before {' + 'height:' + 0.86 * vh + 'px' + '}' + '.w-lightbox-image {' + 'max-width:' + vw + 'px;' + 'max-height:' + vh + 'px' + '}' + '.w-lightbox-group .w-lightbox-image {' + 'max-height:' + 0.86 * vh + 'px' + '}' + '.w-lightbox-strip {' + 'padding: 0 ' + 0.01 * vh + 'px' + '}' + '.w-lightbox-item {' + 'width:' + 0.1 * vh + 'px;' + 'padding:' + 0.02 * vh + 'px ' + 0.01 * vh + 'px' + '}' + '.w-lightbox-thumbnail {' + 'height:' + 0.1 * vh + 'px' + '}' + '@media (min-width: 768px) {' + '.w-lightbox-content, .w-lightbox-view, .w-lightbox-view:before {' + 'height:' + 0.96 * vh + 'px' + '}' + '.w-lightbox-content {' + 'margin-top:' + 0.02 * vh + 'px' + '}' + '.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before {' + 'height:' + 0.84 * vh + 'px' + '}' + '.w-lightbox-image {' + 'max-width:' + 0.96 * vw + 'px;' + 'max-height:' + 0.96 * vh + 'px' + '}' + '.w-lightbox-group .w-lightbox-image {' + 'max-width:' + 0.823 * vw + 'px;' + 'max-height:' + 0.84 * vh + 'px' + '}' + '}';
20515          styleNode.textContent = content;
20516        }
20517
20518        refresh();
20519      })();
20520
20521      return lightbox;
20522    }
20523
20524    Webflow.define('lightbox', module.exports = function ($) {
20525      var api = {};
20526      var inApp = Webflow.env();
20527      var lightbox = createLightbox(window, document, $, inApp ? '#lightbox-mountpoint' : 'body');
20528      var $doc = $(document);
20529      var $lightboxes;
20530      var designer;
20531      var namespace = '.w-lightbox';
20532      var groups; // -----------------------------------
20533      // Module methods
20534
20535      api.ready = api.design = api.preview = init; // -----------------------------------
20536      // Private methods
20537
20538      function init() {
20539        designer = inApp && Webflow.env('design'); // Reset Lightbox
20540
20541        lightbox.destroy(); // Reset groups
20542
20543        groups = {}; // Find all instances on the page
20544
20545        $lightboxes = $doc.find(namespace); // Instantiate all lighboxes
20546
20547        $lightboxes.webflowLightBox();
20548      }
20549
20550      jQuery.fn.extend({
20551        webflowLightBox: function webflowLightBox() {
20552          var $el = this;
20553          $.each($el, function (i, el) {
20554            // Store state in data
20555            var data = $.data(el, namespace);
20556
20557            if (!data) {
20558              data = $.data(el, namespace, {
20559                el: $(el),
20560                mode: 'images',
20561                images: [],
20562                embed: ''
20563              });
20564            } // Remove old events
20565
20566
20567            data.el.off(namespace); // Set config from json script tag
20568
20569            configure(data); // Add events based on mode
20570
20571            if (designer) {
20572              data.el.on('setting' + namespace, configure.bind(null, data));
20573            } else {
20574              data.el.on('click' + namespace, clickHandler(data)) // Prevent page scrolling to top when clicking on lightbox triggers.
20575                .on('click' + namespace, function (e) {
20576                  e.preventDefault();
20577                });
20578            }
20579          });
20580        }
20581      });
20582
20583      function configure(data) {
20584        var json = data.el.children('.w-json').html();
20585        var groupName;
20586        var groupItems;
20587
20588        if (!json) {
20589          data.items = [];
20590          return;
20591        }
20592
20593        try {
20594          json = JSON.parse(json);
20595        } catch (e) {
20596          console.error('Malformed lightbox JSON configuration.', e);
20597        }
20598
20599        supportOldLightboxJson(json);
20600        json.items.forEach(function (item) {
20601          item.$el = data.el;
20602        });
20603        groupName = json.group;
20604
20605        if (groupName) {
20606          groupItems = groups[groupName];
20607
20608          if (!groupItems) {
20609            groupItems = groups[groupName] = [];
20610          }
20611
20612          data.items = groupItems;
20613
20614          if (json.items.length) {
20615            data.index = groupItems.length;
20616            groupItems.push.apply(groupItems, json.items);
20617          }
20618        } else {
20619          data.items = json.items;
20620          data.index = 0;
20621        }
20622      }
20623
20624      function clickHandler(data) {
20625        return function () {
20626          data.items.length && lightbox(data.items, data.index || 0);
20627        };
20628      }
20629
20630      function supportOldLightboxJson(data) {
20631        if (data.images) {
20632          data.images.forEach(function (item) {
20633            item.type = 'image';
20634          });
20635          data.items = data.images;
20636        }
20637
20638        if (data.embed) {
20639          data.embed.type = 'video';
20640          data.items = [data.embed];
20641        }
20642
20643        if (data.groupId) {
20644          data.group = data.groupId;
20645        }
20646      } // Export module
20647
20648
20649      return api;
20650    });
20651
20652    /***/
20653  }),
20654/* 324 */
20655/***/ (function (module, exports, __webpack_require__) {
20656
20657    "use strict";
20658    // @wf-will-never-add-flow-to-this-file
20659
20660    /* global window, document */
20661
20662    /* eslint-disable no-var */
20663
20664    /**
20665     * Webflow: Slider component
20666     */
20667
20668    var Webflow = __webpack_require__(3);
20669
20670    var IXEvents = __webpack_require__(22);
20671
20672    var KEY_CODES = {
20673      ARROW_LEFT: 37,
20674      ARROW_UP: 38,
20675      ARROW_RIGHT: 39,
20676      ARROW_DOWN: 40,
20677      SPACE: 32,
20678      ENTER: 13,
20679      HOME: 36,
20680      END: 35
20681    };
20682    var FOCUSABLE_SELECTOR = 'a[href], area[href], [role="button"], input, select, textarea, button, iframe, object, embed, *[tabindex], *[contenteditable]';
20683    Webflow.define('slider', module.exports = function ($, _) {
20684      var api = {};
20685      var tram = $.tram;
20686      var $doc = $(document);
20687      var $sliders;
20688      var designer;
20689      var inApp = Webflow.env();
20690      var namespace = '.w-slider';
20691      var dot = '<div class="w-slider-dot" data-wf-ignore />';
20692      var ariaLiveLabelHtml = '<div aria-live="off" aria-atomic="true" class="w-slider-aria-label" data-wf-ignore />';
20693      var ix = IXEvents.triggers;
20694      var fallback;
20695      var inRedraw; // -----------------------------------
20696      // Module methods
20697
20698      api.ready = function () {
20699        designer = Webflow.env('design');
20700        init();
20701      };
20702
20703      api.design = function () {
20704        designer = true;
20705        init();
20706      };
20707
20708      api.preview = function () {
20709        designer = false;
20710        init();
20711      };
20712
20713      api.redraw = function () {
20714        inRedraw = true;
20715        init();
20716      };
20717
20718      api.destroy = removeListeners; // -----------------------------------
20719      // Private methods
20720
20721      function init() {
20722        // Find all sliders on the page
20723        $sliders = $doc.find(namespace);
20724
20725        if (!$sliders.length) {
20726          return;
20727        }
20728
20729        $sliders.each(build);
20730        inRedraw = null;
20731
20732        if (fallback) {
20733          return;
20734        }
20735
20736        removeListeners();
20737        addListeners();
20738      }
20739
20740      function removeListeners() {
20741        Webflow.resize.off(renderAll);
20742        Webflow.redraw.off(api.redraw);
20743      }
20744
20745      function addListeners() {
20746        Webflow.resize.on(renderAll);
20747        Webflow.redraw.on(api.redraw);
20748      }
20749
20750      function renderAll() {
20751        $sliders.filter(':visible').each(render);
20752      }
20753
20754      function build(i, el) {
20755        var $el = $(el); // Store slider state in data
20756
20757        var data = $.data(el, namespace);
20758
20759        if (!data) {
20760          data = $.data(el, namespace, {
20761            index: 0,
20762            depth: 1,
20763            hasFocus: {
20764              keyboard: false,
20765              mouse: false
20766            },
20767            el: $el,
20768            config: {}
20769          });
20770        }
20771
20772        data.mask = $el.children('.w-slider-mask');
20773        data.left = $el.children('.w-slider-arrow-left');
20774        data.right = $el.children('.w-slider-arrow-right');
20775        data.nav = $el.children('.w-slider-nav');
20776        data.slides = data.mask.children('.w-slide');
20777        data.slides.each(ix.reset);
20778
20779        if (inRedraw) {
20780          data.maskWidth = 0;
20781        }
20782
20783        if ($el.attr('role') === undefined) {
20784          $el.attr('role', 'region');
20785        }
20786
20787        if ($el.attr('aria-label') === undefined) {
20788          $el.attr('aria-label', 'carousel');
20789        } // Store the ID of the slider slide view mask
20790
20791
20792        var slideViewId = data.mask.attr('id'); // If user did not provide an ID, set it
20793
20794        if (!slideViewId) {
20795          slideViewId = 'w-slider-mask-' + i;
20796          data.mask.attr('id', slideViewId);
20797        } // Create aria live label
20798
20799
20800        data.ariaLiveLabel = $(ariaLiveLabelHtml).appendTo(data.mask); // Add attributes to left/right buttons
20801
20802        data.left.attr('role', 'button');
20803        data.left.attr('tabindex', '0');
20804        data.left.attr('aria-controls', slideViewId);
20805
20806        if (data.left.attr('aria-label') === undefined) {
20807          data.left.attr('aria-label', 'previous slide');
20808        }
20809
20810        data.right.attr('role', 'button');
20811        data.right.attr('tabindex', '0');
20812        data.right.attr('aria-controls', slideViewId);
20813
20814        if (data.right.attr('aria-label') === undefined) {
20815          data.right.attr('aria-label', 'next slide');
20816        } // Disable in old browsers
20817
20818
20819        if (!tram.support.transform) {
20820          data.left.hide();
20821          data.right.hide();
20822          data.nav.hide();
20823          fallback = true;
20824          return;
20825        } // Remove old events
20826
20827
20828        data.el.off(namespace);
20829        data.left.off(namespace);
20830        data.right.off(namespace);
20831        data.nav.off(namespace); // Set config from data attributes
20832
20833        configure(data); // Add events based on mode
20834
20835        if (designer) {
20836          data.el.on('setting' + namespace, handler(data));
20837          stopTimer(data);
20838          data.hasTimer = false;
20839        } else {
20840          data.el.on('swipe' + namespace, handler(data));
20841          data.left.on('click' + namespace, previousFunction(data));
20842          data.right.on('click' + namespace, next(data));
20843          data.left.on('keydown' + namespace, keyboardSlideButtonsFunction(data, previousFunction));
20844          data.right.on('keydown' + namespace, keyboardSlideButtonsFunction(data, next)); // Listen to nav keyboard events
20845
20846          data.nav.on('keydown' + namespace, '> div', handler(data)); // Start timer if autoplay is true, only once
20847
20848          if (data.config.autoplay && !data.hasTimer) {
20849            data.hasTimer = true;
20850            data.timerCount = 1;
20851            startTimer(data);
20852          }
20853
20854          data.el.on('mouseenter' + namespace, hasFocus(data, true, 'mouse'));
20855          data.el.on('focusin' + namespace, hasFocus(data, true, 'ke
20855yboard'));
20856          data.el.on('mouseleave' + namespace, hasFocus(data, false, 'mouse'));
20857          data.el.on('focusout' + namespace, hasFocus(data, false, 'keyboard'));
20858        } // Listen to nav click events
20859
20860
20861        data.nav.on('click' + namespace, '> div', handler(data)); // Remove gaps from formatted html (for inline-blocks)
20862
20863        if (!inApp) {
20864          data.mask.contents().filter(function () {
20865            return this.nodeType === 3;
20866          }).remove();
20867        } // If slider or any parent is hidden, temporarily show for measurements (https://github.com/webflow/webflow/issues/24921)
20868
20869
20870        var $elHidden = $el.filter(':hidden');
20871        $elHidden.show();
20872        var $elHiddenParents = $el.parents(':hidden');
20873        $elHiddenParents.show(); // Run first render
20874
20875        render(i, el); // If slider or any parent is hidden, reset after temporarily showing for measurements
20876
20877        $elHidden.css('display', '');
20878        $elHiddenParents.css('display', '');
20879      }
20880
20881      function configure(data) {
20882        var config = {};
20883        config.crossOver = 0; // Set config options from data attributes
20884
20885        config.animation = data.el.attr('data-animation') || 'slide';
20886
20887        if (config.animation === 'outin') {
20888          config.animation = 'cross';
20889          config.crossOver = 0.5;
20890        }
20891
20892        config.easing = data.el.attr('data-easing') || 'ease';
20893        var duration = data.el.attr('data-duration');
20894        config.duration = duration != null ? parseInt(duration, 10) : 500;
20895
20896        if (isAttrTrue(data.el.attr('data-infinite'))) {
20897          config.infinite = true;
20898        }
20899
20900        if (isAttrTrue(data.el.attr('data-disable-swipe'))) {
20901          config.disableSwipe = true;
20902        }
20903
20904        if (isAttrTrue(data.el.attr('data-hide-arrows'))) {
20905          config.hideArrows = true;
20906        } else if (data.config.hideArrows) {
20907          data.left.show();
20908          data.right.show();
20909        }
20910
20911        if (isAttrTrue(data.el.attr('data-autoplay'))) {
20912          config.autoplay = true;
20913          config.delay = parseInt(data.el.attr('data-delay'), 10) || 2000;
20914          config.timerMax = parseInt(data.el.attr('data-autoplay-limit'), 10); // Disable timer on first touch or mouse down
20915
20916          var touchEvents = 'mousedown' + namespace + ' touchstart' + namespace;
20917
20918          if (!designer) {
20919            data.el.off(touchEvents).one(touchEvents, function () {
20920              stopTimer(data);
20921            });
20922          }
20923        } // Use edge buffer to help calculate page count
20924
20925
20926        var arrowWidth = data.right.width();
20927        config.edge = arrowWidth ? arrowWidth + 40 : 100; // Store config in data
20928
20929        data.config = config;
20930      }
20931
20932      function isAttrTrue(value) {
20933        return value === '1' || value === 'true';
20934      }
20935
20936      function hasFocus(data, focusIn, eventType) {
20937        return function (evt) {
20938          if (!focusIn) {
20939            // Prevent Focus Out if moving to another element in the slider
20940            if ($.contains(data.el.get(0), evt.relatedTarget)) {
20941              return;
20942            }
20943
20944            data.hasFocus[eventType] = focusIn; // Prevent Aria live change if focused by other input
20945
20946            if (data.hasFocus.mouse && eventType === 'keyboard' || data.hasFocus.keyboard && eventType === 'mouse') {
20947              return;
20948            }
20949          } else {
20950            data.hasFocus[eventType] = focusIn;
20951          }
20952
20953          if (focusIn) {
20954            data.ariaLiveLabel.attr('aria-live', 'polite');
20955
20956            if (data.hasTimer) {
20957              stopTimer(data);
20958            }
20959          } else {
20960            data.ariaLiveLabel.attr('aria-live', 'off');
20961
20962            if (data.hasTimer) {
20963              startTimer(data);
20964            }
20965          }
20966
20967          return;
20968        };
20969      }
20970
20971      function keyboardSlideButtonsFunction(data, directionFunction) {
20972        return function (evt) {
20973          switch (evt.keyCode) {
20974            case KEY_CODES.SPACE:
20975            case KEY_CODES.ENTER:
20976              {
20977                // DirectionFunction returns a function
20978                directionFunction(data)();
20979                evt.preventDefault();
20980                return evt.stopPropagation();
20981              }
20982          }
20983        };
20984      }
20985
20986      function previousFunction(data) {
20987        return function () {
20988          change(data, {
20989            index: data.index - 1,
20990            vector: -1
20991          });
20992        };
20993      }
20994
20995      function next(data) {
20996        return function () {
20997          change(data, {
20998            index: data.index + 1,
20999            vector: 1
21000          });
21001        };
21002      }
21003
21004      function select(data, value) {
21005        // Select page based on slide element index
21006        var found = null;
21007
21008        if (value === data.slides.length) {
21009          init();
21010          layout(data); // Rebuild and find new slides
21011        }
21012
21013        _.each(data.anchors, function (anchor, index) {
21014          $(anchor.els).each(function (i, el) {
21015            if ($(el).index() === value) {
21016              found = index;
21017            }
21018          });
21019        });
21020
21021        if (found != null) {
21022          change(data, {
21023            index: found,
21024            immediate: true
21025          });
21026        }
21027      }
21028
21029      function startTimer(data) {
21030        stopTimer(data);
21031        var config = data.config;
21032        var timerMax = config.timerMax;
21033
21034        if (timerMax && data.timerCount++ > timerMax) {
21035          return;
21036        }
21037
21038        data.timerId = window.setTimeout(function () {
21039          if (data.timerId == null || designer) {
21040            return;
21041          }
21042
21043          next(data)();
21044          startTimer(data);
21045        }, config.delay);
21046      }
21047
21048      function stopTimer(data) {
21049        window.clearTimeout(data.timerId);
21050        data.timerId = null;
21051      }
21052
21053      function handler(data) {
21054        return function (evt, options) {
21055          options = options || {};
21056          var config = data.config; // Designer settings
21057
21058          if (designer && evt.type === 'setting') {
21059            if (options.select === 'prev') {
21060              return previousFunction(data)();
21061            }
21062
21063            if (options.select === 'next') {
21064              return next(data)();
21065            }
21066
21067            configure(data);
21068            layout(data);
21069
21070            if (options.select == null) {
21071              return;
21072            }
21073
21074            select(data, options.select);
21075            return;
21076          } // Swipe event
21077
21078
21079          if (evt.type === 'swipe') {
21080            if (config.disableSwipe) {
21081              return;
21082            }
21083
21084            if (Webflow.env('editor')) {
21085              return;
21086            }
21087
21088            if (options.direction === 'left') {
21089              return next(data)();
21090            }
21091
21092            if (options.direction === 'right') {
21093              return previousFunction(data)();
21094            }
21095
21096            return;
21097          } // Page buttons
21098
21099
21100          if (data.nav.has(evt.target).length) {
21101            var index = $(evt.target).index();
21102
21103            if (evt.type === 'click') {
21104              change(data, {
21105                index: index
21106              });
21107            }
21108
21109            if (evt.type === 'keydown') {
21110              switch (evt.keyCode) {
21111                case KEY_CODES.ENTER:
21112                case KEY_CODES.SPACE:
21113                  {
21114                    change(data, {
21115                      index: index
21116                    });
21117                    evt.preventDefault();
21118                    break;
21119                  }
21120
21121                case KEY_CODES.ARROW_LEFT:
21122                case KEY_CODES.ARROW_UP:
21123                  {
21124                    focusDot(data.nav, Math.max(index - 1, 0));
21125                    evt.preventDefault();
21126                    break;
21127                  }
21128
21129                case KEY_CODES.ARROW_RIGHT:
21130                case KEY_CODES.ARROW_DOWN:
21131                  {
21132                    focusDot(data.nav, Math.min(index + 1, data.pages));
21133                    evt.preventDefault();
21134                    break;
21135                  }
21136
21137                case KEY_CODES.HOME:
21138                  {
21139                    focusDot(data.nav, 0);
21140                    evt.preventDefault();
21141                    break;
21142                  }
21143
21144                case KEY_CODES.END:
21145                  {
21146                    focusDot(data.nav, data.pages);
21147                    evt.preventDefault();
21148                    break;
21149                  }
21150
21151                default:
21152                  {
21153                    return;
21154                  }
21155              }
21156            }
21157          }
21158        };
21159      }
21160
21161      function focusDot($nav, index) {
21162        // Focus nav dot; don't change class to active
21163        var $active = $nav.children().eq(index).focus();
21164        $nav.children().not($active);
21165      }
21166
21167      function change(data, options) {
21168        options = options || {};
21169        var config = data.config;
21170        var anchors = data.anchors; // Set new index
21171
21172        data.previous = data.index;
21173        var index = options.index;
21174        var shift = {};
21175
21176        if (index < 0) {
21177          index = anchors.length - 1;
21178
21179          if (config.infinite) {
21180            // Shift first slide to the end
21181            shift.x = -data.endX;
21182            shift.from = 0;
21183            shift.to = anchors[0].width;
21184          }
21185        } else if (index >= anchors.length) {
21186          index = 0;
21187
21188          if (config.infinite) {
21189            // Shift last slide to the start
21190            shift.x = anchors[anchors.length - 1].width;
21191            shift.from = -anchors[anchors.length - 1].x;
21192            shift.to = shift.from - shift.x;
21193          }
21194        }
21195
21196        data.index = index; // Select nav dot; set class active
21197
21198        var $active = data.nav.children().eq(index).addClass('w-active').attr('aria-selected', 'true').attr('tabindex', '0');
21199        data.nav.children().not($active).removeClass('w-active').attr('aria-selected', 'false').attr('tabindex', '-1'); // Hide arrows
21200
21201        if (config.hideArrows) {
21202          data.index === anchors.length - 1 ? data.right.hide() : data.right.show();
21203          data.index === 0 ? data.left.hide() : data.left.show();
21204        } // Get page offset from anchors
21205
21206
21207        var lastOffsetX = data.offsetX || 0;
21208        var offsetX = data.offsetX = -anchors[data.index].x;
21209        var resetConfig = {
21210          x: offsetX,
21211          opacity: 1,
21212          visibility: ''
21213        }; // Transition slides
21214
21215        var targets = $(anchors[data.index].els);
21216        var prevTargs = $(anchors[data.previous] && anchors[data.previous].els);
21217        var others = data.slides.not(targets);
21218        var animation = config.animation;
21219        var easing = config.easing;
21220        var duration = Math.round(config.duration);
21221        var vector = options.vector || (data.index > data.previous ? 1 : -1);
21222        var fadeRule = 'opacity ' + duration + 'ms ' + easing;
21223        var slideRule = 'transform ' + duration + 'ms ' + easing; // Make active slides' content focusable
21224
21225        targets.find(FOCUSABLE_SELECTOR).removeAttr('tabindex');
21226        targets.removeAttr('aria-hidden'); // Voiceover bug: Sometimes descendants are still visible, so hide everything...
21227
21228        targets.find('*').removeAttr('aria-hidden'); // Prevent focus on inactive slides' content
21229
21230        others.find(FOCUSABLE_SELECTOR).attr('tabindex', '-1');
21231        others.attr('aria-hidden', 'true'); // Voiceover bug: Sometimes descendants are still visible, so hide everything...
21232
21233        others.find('*').attr('aria-hidden', 'true'); // Trigger IX events
21234
21235        if (!designer) {
21236          targets.each(ix.intro);
21237          others.each(ix.outro);
21238        } // Set immediately after layout changes (but not during redraw)
21239
21240
21241        if (options.immediate && !inRedraw) {
21242          tram(targets).set(resetConfig);
21243          resetOthers();
21244          return;
21245        } // Exit early if index is unchanged
21246
21247
21248        if (data.index === data.previous) {
21249          return;
21250        } // Announce slide change to screen reader
21251
21252
21253        data.ariaLiveLabel.text("Slide ".concat(index + 1, " of ").concat(anchors.length, ".")); // Cross Fade / Out-In
21254
21255        if (animation === 'cross') {
21256          var reduced = Math.round(duration - duration * config.crossOver);
21257          var wait = Math.round(duration - reduced);
21258          fadeRule = 'opacity ' + reduced + 'ms ' + easing;
21259          tram(prevTargs).set({
21260            visibility: ''
21261          }).add(fadeRule).start({
21262            opacity: 0
21263          });
21264          tram(targets).set({
21265            visibility: '',
21266            x: offsetX,
21267            opacity: 0,
21268            zIndex: data.depth++
21269          }).add(fadeRule).wait(wait).then({
21270            opacity: 1
21271          }).then(resetOthers);
21272          return;
21273        } // Fade Over
21274
21275
21276        if (animation === 'fade') {
21277          tram(prevTargs).set({
21278            visibility: ''
21279          }).stop();
21280          tram(targets).set({
21281            visibility: '',
21282            x: offsetX,
21283            opacity: 0,
21284            zIndex: data.depth++
21285          }).add(fadeRule).start({
21286            opacity: 1
21287          }).then(resetOthers);
21288          return;
21289        } // Slide Over
21290
21291
21292        if (animation === 'over') {
21293          resetConfig = {
21294            x: data.endX
21295          };
21296          tram(prevTargs).set({
21297            visibility: ''
21298          }).stop();
21299          tram(targets).set({
21300            visibility: '',
21301            zIndex: data.depth++,
21302            x: offsetX + anchors[data.index].width * vector
21303          }).add(slideRule).start({
21304            x: offsetX
21305          }).then(resetOthers);
21306          return;
21307        } // Slide - infinite scroll
21308
21309
21310        if (config.infinite && shift.x) {
21311          tram(data.slides.not(prevTargs)).set({
21312            visibility: '',
21313            x: shift.x
21314          }).add(slideRule).start({
21315            x: offsetX
21316          });
21317          tram(prevTargs).set({
21318            visibility: '',
21319            x: shift.from
21320          }).add(slideRule).start({
21321            x: shift.to
21322          });
21323          data.shifted = prevTargs;
21324        } else {
21325          if (config.infinite && data.shifted) {
21326            tram(data.shifted).set({
21327              visibility: '',
21328              x: lastOffsetX
21329            });
21330            data.shifted = null;
21331          } // Slide - basic scroll
21332
21333
21334          tram(data.slides).set({
21335            visibility: ''
21336          }).add(slideRule).start({
21337            x: offsetX
21338          });
21339        } // Helper to move others out of view
21340
21341
21342        function resetOthers() {
21343          targets = $(anchors[data.index].els);
21344          others = data.slides.not(targets);
21345
21346          if (animation !== 'slide') {
21347            resetConfig.visibility = 'hidden';
21348          }
21349
21350          tram(others).set(resetConfig);
21351        }
21352      }
21353
21354      function render(i, el) {
21355        var data = $.data(el, namespace);
21356
21357        if (!data) {
21358          return;
21359        }
21360
21361        if (maskChanged(data)) {
21362          return layout(data);
21363        }
21364
21365        if (designer && slidesChanged(data)) {
21366          layout(data);
21367        }
21368      }
21369
21370      function layout(data) {
21371        // Determine page count from width of slides
21372        var pages = 1;
21373        var offset = 0;
21374        var anchor = 0;
21375        var width = 0;
21376        var maskWidth = data.maskWidth;
21377        var threshold = maskWidth - data.config.edge;
21378
21379        if (threshold < 0) {
21380          threshold = 0;
21381        }
21382
21383        data.anchors = [{
21384          els: [],
21385          x: 0,
21386          width: 0
21387        }];
21388        data.slides.each(function (i, el) {
21389          if (anchor - offset > threshold) {
21390            pages++;
21391            offset += maskWidth; // Store page anchor for transition
21392
21393            data.anchors[pages - 1] = {
21394              els: [],
21395              x: anchor,
21396              width: 0
21397            };
21398          } // Set next anchor using current width + margin
21399
21400
21401          width = $(el).outerWidth(true);
21402          anchor += width;
21403          data.anchors[pages - 1].width += width;
21404          data.anchors[pages - 1].els.push(el);
21405          var ariaLabel = i + 1 + ' of ' + data.slides.length;
21406          $(el).attr('aria-label', ariaLabel);
21407          $(el).attr('role', 'group');
21408        });
21409        data.endX = anchor; // Build dots if nav exists and needs updating
21410
21411        if (designer) {
21412          data.pages = null;
21413        }
21414
21415        if (data.nav.length && data.pages !== pages) {
21416          data.pages = pages;
21417          buildNav(data);
21418        } // Make sure index is still within range and call change handler
21419
21420
21421        var index = data.index;
21422
21423        if (index >= pages) {
21424          index = pages - 1;
21425        }
21426
21427        change(data, {
21428          immediate: true,
21429          index: index
21430        });
21431      }
21432
21433      function buildNav(data) {
21434        var dots = [];
21435        var $dot;
21436        var spacing = data.el.attr('data-nav-spacing');
21437
21438        if (spacing) {
21439          spacing = parseFloat(spacing) + 'px';
21440        }
21441
21442        for (var i = 0, len = data.pages; i < len; i++) {
21443          $dot = $(dot);
21444          $dot.attr('aria-label', 'Show slide ' + (i + 1) + ' of ' + len).attr('aria-selected', 'false').attr('role', 'button').attr('tabindex', '-1');
21445
21446          if (data.nav.hasClass('w-num')) {
21447            $dot.text(i + 1);
21448          }
21449
21450          if (spacing != null) {
21451            $dot.css({
21452              'margin-left': spacing,
21453              'margin-right': spacing
21454            });
21455          }
21456
21457          dots.push($dot);
21458        }
21459
21460        data.nav.empty().append(dots);
21461      }
21462
21463      function maskChanged(data) {
21464        var maskWidth = data.mask.width();
21465
21466        if (data.maskWidth !== maskWidth) {
21467          data.maskWidth = maskWidth;
21468          return true;
21469        }
21470
21471        return false;
21472      }
21473
21474      function slidesChanged(data) {
21475        var slidesWidth = 0;
21476        data.slides.each(function (i, el) {
21477          slidesWidth += $(el).outerWidth(true);
21478        });
21479
21480        if (data.slidesWidth !== slidesWidth) {
21481          data.slidesWidth = slidesWidth;
21482          return true;
21483        }
21484
21485        return false;
21486      } // Export module
21487
21488
21489      return api;
21490    });
21491
21492    /***/
21493  }),
21494/* 325 */
21495/***/ (function (module, exports, __webpack_require__) {
21496
21497    "use strict";
21498    // @wf-will-never-add-flow-to-this-file
21499
21500    /* global document window */
21501
21502    /* eslint-disable no-var */
21503
21504    /**
21505     * Webflow: Tabs component
21506     */
21507
21508    var Webflow = __webpack_require__(3);
21509
21510    var IXEvents = __webpack_require__(22);
21511
21512    Webflow.define('tabs', module.exports = function ($) {
21513      var api = {};
21514      var tram = $.tram;
21515      var $doc = $(document);
21516      var $tabs;
21517      var design;
21518      var env = Webflow.env;
21519      var safari = env.safari;
21520      var inApp = env();
21521      var tabAttr = 'data-w-tab';
21522      var paneAttr = 'data-w-pane';
21523      var namespace = '.w-tabs';
21524      var linkCurrent = 'w--current';
21525      var tabActive = 'w--tab-active';
21526      var ix = IXEvents.triggers;
21527      var inRedraw = false; // -----------------------------------
21528      // Module methods
21529
21530      api.ready = api.design = api.preview = init;
21531
21532      api.redraw = function () {
21533        inRedraw = true;
21534        init();
21535        inRedraw = false;
21536      };
21537
21538      api.destroy = function () {
21539        $tabs = $doc.find(namespace);
21540
21541        if (!$tabs.length) {
21542          return;
21543        }
21544
21545        $tabs.each(resetIX);
21546        removeListeners();
21547      }; // -----------------------------------
21548      // Private methods
21549
21550
21551      function init() {
21552        design = inApp && Webflow.env('design'); // Find all instances on the page
21553
21554        $tabs = $doc.find(namespace);
21555
21556        if (!$tabs.length) {
21557          return;
21558        }
21559
21560        $tabs.each(build);
21561
21562        if (Webflow.env('preview') && !inRedraw) {
21563          $tabs.each(resetIX);
21564        }
21565
21566        removeListeners();
21567        addListeners();
21568      }
21569
21570      function removeListeners() {
21571        Webflow.redraw.off(api.redraw);
21572      }
21573
21574      function addListeners() {
21575        Webflow.redraw.on(api.redraw);
21576      }
21577
21578      function resetIX(i, el) {
21579        var data = $.data(el, namespace);
21580
21581        if (!data) {
21582          return;
21583        }
21584
21585        data.links && data.links.each(ix.reset);
21586        data.panes && data.panes.each(ix.reset);
21587      }
21588
21589      function build(i, el) {
21590        var widgetHash = namespace.substr(1) + '-' + i;
21591        var $el = $(el); // Store state in data
21592
21593        var data = $.data(el, namespace);
21594
21595        if (!data) {
21596          data = $.data(el, namespace, {
21597            el: $el,
21598            config: {}
21599          });
21600        }
21601
21602        data.current = null;
21603        data.tabIdentifier = widgetHash + '-' + tabAttr;
21604        data.paneIdentifier = widgetHash + '-' + paneAttr;
21605        data.menu = $el.children('.w-tab-menu');
21606        data.links = data.menu.children('.w-tab-link');
21607        data.content = $el.children('.w-tab-content');
21608        data.panes = data.content.children('.w-tab-pane'); // Remove old events
21609
21610        data.el.off(namespace);
21611        data.links.off(namespace); // This role is necessary in the ARIA spec
21612
21613        data.menu.attr('role', 'tablist'); // Set all tabs unfocusable
21614
21615        data.links.attr('tabindex', '-1'); // Set config from data attributes
21616
21617        configure(data); // Wire up events when not in design mode
21618
21619        if (!design) {
21620          data.links.on('click' + namespace, linkSelect(data));
21621          data.links.on('keydown' + namespace, handleLinkKeydown(data)); // Trigger first intro event from current tab
21622
21623          var $link = data.links.filter('.' + linkCurrent);
21624          var tab = $link.attr(tabAttr);
21625          tab && changeTab(data, {
21626            tab: tab,
21627            immediate: true
21628          });
21629        }
21630      }
21631
21632      function configure(data) {
21633        var config = {}; // Set config options from data attributes
21634
21635        config.easing = data.el.attr('data-easing') || 'ease';
21636        var intro = parseInt(data.el.attr('data-duration-in'), 10); // eslint-disable-next-line no-self-compare
21637
21638        intro = config.intro = intro === intro ? intro : 0;
21639        var outro = parseInt(data.el.attr('data-duration-out'), 10); // eslint-disable-next-line no-self-compare
21640
21641        outro = config.outro = outro === outro ? outro : 0;
21642        config.immediate = !intro && !outro; // Store config in data
21643
21644        data.config = config;
21645      }
21646
21647      function getActiveTabIdx(data) {
21648        var tab = data.current;
21649        return Array.prototype.findIndex.call(data.links, function (t) {
21650          return t.getAttribute(tabAttr) === tab;
21651        }, null);
21652      }
21653
21654      function linkSelect(data) {
21655        return function (evt) {
21656          evt.preventDefault();
21657          var tab = evt.currentTarget.getAttribute(tabAttr);
21658          tab && changeTab(data, {
21659            tab: tab
21660          });
21661        };
21662      }
21663
21664      function handleLinkKeydown(data) {
21665        return function (evt) {
21666          var currentIdx = getActiveTabIdx(data);
21667          var keyName = evt.key;
21668          var keyMap = {
21669            ArrowLeft: currentIdx - 1,
21670            ArrowUp: currentIdx - 1,
21671            ArrowRight: currentIdx + 1,
21672            ArrowDown: currentIdx + 1,
21673            End: data.links.length - 1,
21674            Home: 0
21675          }; // Bail out of function if this key is not
21676          // involved in tab management
21677
21678          if (!(keyName in keyMap)) return;
21679          evt.preventDefault();
21680          var nextIdx = keyMap[keyName]; // go back to end of tabs if we wrap past the start
21681
21682          if (nextIdx === -1) {
21683            nextIdx = data.links.length - 1;
21684          } // go back to start if we wrap past the last tab
21685
21686
21687          if (nextIdx === data.links.length) {
21688            nextIdx = 0;
21689          }
21690
21691          var tabEl = data.links[nextIdx];
21692          var tab = tabEl.getAttribute(tabAttr);
21693          tab && changeTab(data, {
21694            tab: tab
21695          });
21696        };
21697      }
21698
21699      function changeTab(data, options) {
21700        options = options || {};
21701        var config = data.config;
21702        var easing = config.easing;
21703        var tab = options.tab; // Don't select the same tab twice
21704
21705        if (tab === data.current) {
21706          return;
21707        }
21708
21709        data.current = tab;
21710        /**
21711         * The currently active tab.
21712         * Will be referenced to manage focus after
21713         * TabLink attributes are changed
21714         * @type {HTMLAnchorElement}
21715         */
21716
21717        var currentTab; // Select the current link
21718
21719        data.links.each(function (i, el) {
21720          var $el = $(el); // Add important attributes at build time.
21721
21722          if (options.immediate || config.immediate) {
21723            // Store corresponding pane for reference.
21724            var pane = data.panes[i]; // IDs are necessary for ARIA relationships,
21725            // so if the user did not create one, we create one
21726            // using our generated identifier
21727
21728            if (!el.id) {
21729              el.id = data.tabIdentifier + '-' + i;
21730            }
21731
21732            if (!pane.id) {
21733              pane.id = data.paneIdentifier + '-' + i;
21734            }
21735
21736            el.href = '#' + pane.id; // Tab elements must take this role
21737
21738            el.setAttribute('role', 'tab'); // Tab elements must reference the unique ID of the panel
21739            // that they control
21740
21741            el.setAttribute('aria-controls', pane.id); // Tab elements must report that they are not selected
21742            // by default
21743
21744            el.setAttribute('aria-selected', 'false'); // Panes must take on the `Tabpanel` role
21745
21746            pane.setAttribute('role', 'tabpanel'); // Elements with tabpanel role must be labelled by
21747            // their controlling tab
21748
21749            pane.setAttribute('aria-labelledby', el.id);
21750          }
21751
21752          if (el.getAttribute(tabAttr) === tab) {
21753            // This is the current tab. Store it.
21754            currentTab = el;
21755            $el.addClass(linkCurrent).removeAttr('tabindex').attr({
21756              'aria-selected': 'true'
21757            }).each(ix.intro);
21758          } else if ($el.hasClass(linkCurrent)) {
21759            $el.removeClass(linkCurrent).attr({
21760              tabindex: '-1',
21761              'aria-selected': 'false'
21762            }).each(ix.outro);
21763          }
21764        }); // Find the new tab panes and keep track of previous
21765
21766        var targets = [];
21767        var previous = [];
21768        data.panes.each(function (i, el) {
21769          var $el = $(el);
21770
21771          if (el.getAttribute(tabAttr) === tab) {
21772            targets.push(el);
21773          } else if ($el.hasClass(tabActive)) {
21774            previous.push(el);
21775          }
21776        });
21777        var $targets = $(targets);
21778        var $previous = $(previous); // Switch tabs immediately and bypass transitions
21779
21780        if (options.immediate || config.immediate) {
21781          $targets.addClass(tabActive).each(ix.intro);
21782          $previous.removeClass(tabActive); // Redraw to benefit components in the hidden tab pane
21783          // But only if not currently in the middle of a redraw
21784
21785          if (!inRedraw) {
21786            Webflow.redraw.up();
21787          }
21788
21789          return;
21790        } // Focus if this is not the on-page-load call to `changeTab`
21791        else {
21792          // Backwards compatible hack to prevent focus from scrolling
21793          var x = window.scrollX;
21794          var y = window.scrollY;
21795          currentTab.focus();
21796          window.scrollTo(x, y);
21797        } // Fade out the currently active tab before intro
21798
21799
21800        if ($previous.length && config.outro) {
21801          $previous.each(ix.outro);
21802          tram($previous).add('opacity ' + config.outro + 'ms ' + easing, {
21803            fallback: safari
21804          }).start({
21805            opacity: 0
21806          }).then(function () {
21807            return fadeIn(config, $previous, $targets);
21808          });
21809        } else {
21810          // Skip the outro and play intro
21811          fadeIn(config, $previous, $targets);
21812        }
21813      } // Fade in the new target
21814
21815
21816      function fadeIn(config, $previous, $targets) {
21817        // Clear previous active class + styles touched by tram
21818        // We cannot remove the whole inline style because it could be dynamically bound
21819        $previous.removeClass(tabActive).css({
21820          opacity: '',
21821          transition: '',
21822          transform: '',
21823          width: '',
21824          height: ''
21825        }); // Add active class to new target
21826
21827        $targets.addClass(tabActive).each(ix.intro);
21828        Webflow.redraw.up(); // Set opacity immediately if intro is zero
21829
21830        if (!config.intro) {
21831          return tram($targets).set({
21832            opacity: 1
21833          });
21834        } // Otherwise fade in opacity
21835
21836
21837        tram($targets).set({
21838          opacity: 0
21839        }).redraw().add('opacity ' + config.intro + 'ms ' + config.easing, {
21840          fallback: safari
21841        }).start({
21842          opacity: 1
21843        });
21844      } // Export module
21845
21846
21847      return api;
21848    });
21849
21850    /***/
21851  })
21852/******/]);/**
21853 * ----------------------------------------------------------------------
21854 * Webflow: Interactions: Init
21855 */
21856Webflow.require('ix').init([
21857  { "slug": "sub-companies", "name": "Sub Companies", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".sub-companies", "stepsA": [{ "display": "flex", "opacity": 0 }, { "opacity": 1, "transition": "opacity 1200ms ease-out-quint 0" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-team", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-services", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }] } },
21858  { "slug": "sub-team", "name": "Sub Team", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".sub-team", "stepsA": [{ "display": "flex", "opacity": 0 }, { "opacity": 1, "transition": "opacity 1200ms ease-out-quint 0" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-companies", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-services", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }] } },
21859  { "slug": "sub-services", "name": "Sub Services", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".sub-services", "stepsA": [{ "display": "flex", "opacity": 0 }, { "opacity": 1, "transition": "opacity 1200ms ease-out-quint 0" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-companies", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-team", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }] } },
21860  { "slug": "sub-out", "name": "Sub Out", "value": { "style": {}, "triggers": [{ "type": "hover", "stepsA": [], "stepsB": [{ "opacity": 0, "transition": "opacity 500ms ease-out-quint 0" }, { "display": "none" }] }] } },
21861  { "slug": "hide-all-subs", "name": "Hide All Subs", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".sub-companies", "stepsA": [{ "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".sub-team", "stepsA": [{ "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".sub-services", "stepsA": [{ "opacity": 0 }], "stepsB": [] }] } },
21862  { "slug": "triangle-link", "name": "Triangle Link", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".hp1-link-arrow", "descend": true, "preserve3d": true, "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease-out-quint 0, transform 500ms ease-out-quint 0", "x": "1px", "y": "-1px", "z": "0px" }], "stepsB": [{ "opacity": 0, "transition": "transform 200 ease 0, opacity 500ms ease-out-quint 0", "x": "-1px", "y": "1px", "z": "0px" }] }] } },
21863  { "slug": "screen-fade", "name": "Screen Fade", "value": { "style": { "opacity": 0, "x": "0px", "y": "45px", "z": "0px" }, "triggers": [{ "type": "scroll", "offsetTop": "0%", "offsetBot": "0%", "stepsA": [{ "wait": "1000ms", "opacity": 1, "transition": "transform 2400ms ease-out-quint 0, opacity 1800ms ease-out-quint 0", "x": "0px", "y": "0px", "z": "0px" }], "stepsB": [{ "opacity": 0, "transition": "transform 200 ease 0, opacity 200 ease 0", "x": "0px", "y": "45px", "z": "0px" }] }] } },
21864  { "slug": "screen-fade-logos", "name": "Screen Fade Logos", "value": { "style": { "opacity": 0, "x": "0px", "y": "45px", "z": "0px" }, "triggers": [{ "type": "scroll", "offsetBot": "25%", "stepsA": [{ "wait": "1000ms", "opacity": 0.35, "transition": "transform 2400ms ease-out-quint 0, opacity 1800ms ease-out-quint 0", "x": "0px", "y": "0p
21864x", "z": "0px" }], "stepsB": [{ "opacity": 0, "transition": "transform 200 ease 0, opacity 200 ease 0", "x": "0px", "y": "45px", "z": "0px" }] }] } },
21865  { "slug": "vertical-divider", "name": "Vertical Divider", "value": { "style": { "height": "0px" }, "triggers": [{ "type": "scroll", "offsetBot": "0%", "stepsA": [{ "height": "30px", "transition": "height 1200ms ease-out-quint 0" }], "stepsB": [{ "height": "0px", "transition": "height 200 ease 0" }] }] } },
21866  { "slug": "show-menu", "name": "Show Menu", "value": { "style": {}, "triggers": [{ "type": "click", "selector": ".g-menu", "stepsA": [{ "display": "flex", "opacity": 1, "transition": "opacity 600ms ease 0" }], "stepsB": [] }, { "type": "click", "selector": ".menu-blur", "stepsA": [{ "display": "block", "opacity": 1, "transition": "opacity 600ms ease 0" }], "stepsB": [] }] } },
21867  { "slug": "close-menu", "name": "Close Menu", "value": { "style": {}, "triggers": [{ "type": "click", "selector": ".g-menu", "stepsA": [{ "opacity": 0, "transition": "opacity 300ms ease 0" }, { "display": "none" }], "stepsB": [] }, { "type": "click", "selector": ".menu-blur", "stepsA": [{ "opacity": 0, "transition": "opacity 300ms ease 0" }, { "display": "none" }], "stepsB": [] }] } },
21868  { "slug": "hover-example", "name": "Hover example", "value": { "style": {}, "triggers": [{ "type": "hover", "stepsA": [{ "width": "40%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db1", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db3", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0, width 200 ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-2", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi2", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-3", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0, width 200 ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi1", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi3", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }] } },
21869  { "slug": "hover-example-2", "name": "Hover example 2", "value": { "style": {}, "triggers": [{ "type": "hover", "stepsA": [{ "width": "40%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db2", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db3", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-2", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi1", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-3", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi2", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi3", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }] } },
21870  { "slug": "hover-example-3", "name": "Hover example 3", "value": { "style": {}, "triggers": [{ "type": "hover", "stepsA": [{ "width": "40%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db2", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db1", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-3", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-2", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi3", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi2", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi1", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }] } },
21871  { "slug": "phil-copy", "name": "Phil Copy", "value": { "style": {}, "triggers": [{ "type": "scroll", "selector": ".hp1-phil-copy", "offsetBot": "70%", "stepsA": [{ "wait": "1500ms", "opacity": 1, "transition": "opacity 1000ms ease 0" }], "stepsB": [] }] } },
21872  { "slug": "hp1-loc-info", "name": "HP1 Loc Info", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".hp1-loc-info", "descend": true, "stepsA": [{ "opacity": 1, "transition": "opacity 1000ms ease-out-quint 0" }], "stepsB": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }] }] } },
21873  { "slug": "show-test-images", "name": "Show Test Images", "value": { "style": {}, "triggers": [{ "type": "scroll", "selector": ".webpt-top", "offsetBot": "25%", "preserve3d": true, "stepsA": [{ "wait": "1000ms" }, { "opacity": 1, "transition": "opacity 1000ms ease 0, transform 1000ms ease 0", "x": "0px", "y": "0p
21873x", "z": "0px" }], "stepsB": [] }, { "type": "scroll", "selector": ".webpt-partner", "offsetBot": "25%", "preserve3d": true, "stepsA": [{ "wait": "1750ms" }, { "opacity": 1, "transition": "opacity 1000ms ease 0, transform 1000ms ease 0", "x": "0px", "y": "0px", "z": "0px" }], "stepsB": [] }] } },
21874  { "slug": "people-hover", "name": "People Hover", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".hp1-people-info", "descend": true, "preserve3d": true, "stepsA": [{ "opacity": 1, "height": "250px", "transition": "height 300ms ease-out-quart 0, opacity 200 ease 0, transform 200 ease 0", "x": "0px", "y": "0px", "z": "0px" }], "stepsB": [{ "height": "75px", "transition": "height 300ms ease-out 0" }] }, { "type": "hover", "selector": ".hp1-people-sub-info", "descend": true, "stepsA": [{ "opacity": 1, "transition": "opacity 1000ms ease-out-quad 0" }], "stepsB": [{ "opacity": 0, "transition": "opacity 500ms ease-out 0" }] }, { "type": "hover", "selector": ".people-triangle", "descend": true, "preserve3d": true, "stepsA": [{ "opacity": 1, "transition": "opacity 300ms ease 0, transform 300ms ease 0", "x": "0px", "y": "0px", "z": "0px" }], "stepsB": [{ "opacity": 0, "transition": "opacity 300ms ease 0, transform 200 ease 0", "x": "-10px", "y": "10px", "z": "0px" }] }] } },
21875  { "slug": "show-filters", "name": "Show Filters", "value": { "style": {}, "triggers": [{ "type": "click", "selector": ".hp1-people-filters", "stepsA": [{ "opacity": 1, "height": "auto", "transition": "opacity 500ms ease 0, height 300ms ease 0" }], "stepsB": [] }] } },
21876  { "slug": "hide-filters", "name": "Hide Filters", "value": { "style": {}, "triggers": [{ "type": "click", "selector": ".hp1-people-filters", "stepsA": [{ "opacity": 0, "height": "0px", "transition": "opacity 300ms ease 0, height 500ms ease 0" }], "stepsB": [] }] } },
21877  { "slug": "show-ham-menu", "name": "Show Ham Menu", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".ham-menu-over", "stepsA": [{ "display": "flex", "opacity": 0 }, { "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }] } },
21878  { "slug": "filters-companies", "name": "Filters Companies", "value": { "style": {}, "triggers": [{ "type": "scroll", "selector": ".companies-sub", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }, { "display": "none" }], "stepsB": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 500ms ease 0" }] }] } },
21879  { "slug": "show-sub-dd", "name": "Show Sub DD", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".new-filter-sector-dd-sub", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }] } },
21880  { "slug": "dd-sector", "name": "DD Sector", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-stage", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-status", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-role", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } },
21881  { "slug": "dd-location", "name": "DD Location", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-stage", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-status", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-role", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } },
21882  { "slug": "dd-stage", "name": "DD Stage", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-stage", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-status", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } },
21883  { "slug": "dd-status", "name": "DD Status", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-status", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-stage", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } },
21884  { "slug": "dd-role", "name": "DD Role", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-role", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } }
21885]);
21886/**
21887 * ----------------------------------------------------------------------
21888 * Webflow: Interactions 2.0: Init
21889 */
21890Webflow.require('ix2').init(
21891  { "events": { "e": { "id": "e", "name": "", "animationType": "custom", "eventTypeId": "MOUSE_CLICK", "action": { "id": "", "actionTypeId": "GENERAL_START_ACTION", "config": { "delay": 0, "easing": "", "duration": 0, "actionListId": "a-3", "affectedElements": {}, "playInReverse": false, "autoStopEventId": "e-2" } }, "mediaQueries": ["main", "medium", "small", "tiny"], "target": { "id": "e19bb167-2f95-e4d1-f26a-212fa7c92e98", "appliesTo": "ELEMENT", "styleBlockIds": [] }, "targets": [{ "id": "e19bb167-2f95-e4d1-f26a-212fa7c92e98", "appliesTo": "ELEMENT", "styleBlockIds": [] }], "config": { "loop": false, "playInReverse": false, "scrollOffsetValue": null, "scrollOffsetUnit": null, "delay": null, "direction": null, "effectIn": null }, "createdOn": 1611008145499 }, "e-3": { "id": "e-3", "name": "", "animationType": "custom", "eventTypeId": "MOUSE_CLICK", "action": { "id": "", "actionTypeId": "GENERAL_START_ACTION", "config": { "delay": 0, "easing": "", "duration": 0, "actionListId": "a-4", "affectedElements": {}, "playInReverse": false, "autoStopEventId": "e-4" } }, "mediaQueries": ["main", "medium", "small", "tiny"], "target": { "id": "TextBlock", "appliesTo": "ELEMENT", "styleBlockIds": [] }, "targets": [{ "id": "TextBlock", "appliesTo": "ELEMENT", "styleBlockIds": [] }], "config": { "loop": false, "playInReverse": false, "scrollOffsetValue": null, "scrollOffsetUnit": null, "delay": null, "direction": null, "effectIn": null }, "createdOn": 1611015773411 } }, "actionLists": { "a-3": { "id": "a-3", "title": "Global Search Show", "actionItemGroups": [{ "actionItems": [{ "id": "a-3-n", "actionTypeId": "GENERAL_DISPLAY", "config": { "delay": 0, "easing": "", "duration": 0, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": "block" } }, { "id": "a-3-n-3", "actionTypeId": "STYLE_OPACITY", "config": { "delay": 0, "easing": "", "duration": 0, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": 0, "unit": "" } }] }, { "actionItems": [{ "id": "a-3-n-2", "actionTypeId": "STYLE_OPACITY", "config": { "delay": 0, "easing": "ease", "duration": 500, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": 1, "unit": "" } }] }], "useFirstGroupAsInitialState": false, "createdOn": 1611008150271 }, "a-4": { "id": "a-4", "title": "Global Search Hide", "actionItemGroups": [{ "actionItems": [{ "id": "a-4-n-3", "actionTypeId": "STYLE_OPACITY", "config": { "delay": 0, "easing": "ease", "duration": 500, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": 0, "unit": "" } }] }, { "actionItems": [{ "id": "a-4-n", "actionTypeId": "GENERAL_DISPLAY", "config": { "delay": 0, "easing": "", "duration": 0, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": "none" } }, { "id": "a-4-n-2", "actionTypeId": "STYLE_OPACITY", "config": { "delay": 0, "easing": "", "duration": 0, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": 0, "unit": "" } }] }], "useFirstGroupAsInitialState": false, "createdOn": 1611008150271 } }, "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 }] } }
21892);
21893
21894
21895
21896
21897
21898
21899
21900
21901
21902$(document).ready(function () {
21903
21904  // if ($(window).width() < 769) {
21905  //   $(".new-filters.dropdown-menu nav > ul > li").hover(
21906  //     function () {
21907  //       $(this).addClass("dropdown-opened");
21908  //     }, function () {
21909  //       $(this).removeClass("dropdown-opened");
21910  //     }
21911  //   );
21912  //   $(".sector-dropdown li").click(function () {
21913  //     $('li.dropdown-opened').removeClass("dropdown-opened");
21914
21915  //   });
21916
21917  // }
21918
21919
21920  $("a.search-icon").click(function () {
21921    setTimeout(function () {
21922      $(".search-box .search-global input#search").focus();
21923    }, 1000);
21924  });
21925
21926  if (window.location.hash) {
21927    var hash = window.location.hash;
21928    if (hash.length && !hash.includes('=')) {
21929      $('html, body').animate({
21930        scrollTop: $(hash).offset().top + -70
21931      }, 0, 'swing');
21932    }
21933  }
21934
21935  // const video = document.querySelector('video');
21936
21937  // video.oncanplaythrough = (event) => {
21938  //   console.log('I think I can play thru the entire ' + ' video without ever having to stop to buffer.');
21939  // };
21940
21941  document.addEventListener("DOMContentLoaded", function () {
21942    var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy"));
21943
21944    if ("IntersectionObserver" in window) {
21945      var lazyVideoObserver = new IntersectionObserver(function (entries, observer) {
21946        entries.forEach(function (video) {
21947          if (video.isIntersecting) {
21948            for (var source in video.target.children) {
21949              var videoSource = video.target.children[source];
21950              if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") {
21951                videoSource.src = videoSource.dataset.src;
21952              }
21953            }
21954
21955            video.target.load();
21956            video.target.classList.remove("lazy");
21957            lazyVideoObserver.unobserve(video.target);
21958          }
21959        });
21960      });
21961
21962      lazyVideos.forEach(function (lazyVideo) {
21963        lazyVideoObserver.observe(lazyVideo);
21964      });
21965    }
21966  });
21967
21968
21969  setTimeout(function () {
21970    $('.hp1-hero-content, .services-hero, .about-hero, .people-hero-cool.companies .companies-2-intro').css('opacity', '1');
21971  }, 700);
21972  $('[data-lazysrc]').each(function () {
21973    var $this = $(this),
21974      src = $(this).data('lazysrc');
21975    $this.attr('src', src);
21976    console.log(src);
21977  });
21978
21979
21980
21981  //blog slider
21982  if ($(".blog-slider").length) {
21983    $('.blog-slider').slick({
21984      infinite: true,
21985      slidesToShow: 1,
21986      slidesToScroll: 1,
21987      arrows: false,
21988      speed: 500,
21989      fade: true,
21990      cssEase: 'linear'
21991    });
21992  }
21993
21994
21995  //blog slider navigation arrows
21996  $('.slider-button.r').click(function () {
21997    $('.blog-slider').slick('slickPrev');
21998  })
21999
22000  $('.slider-button.l').click(function () {
22001    $('.blog-slider').slick('slickNext');
22002  })
22003
22004
22005  //ie-message
22006  function msieversion() {
22007
22008    var ua = window.navigator.userAgent;
22009    var msie = ua.indexOf("MSIE ");
22010
22011    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))  // If Internet Explorer, return version number
22012    {
22013
22014      $('.explorer-wrapper').addClass('show');
22015    }
22016    else  // If another browser, return 0
22017    {
22018      $('.explorer-wrapper.show').removeClass('show');
22019    }
22020
22021    return false;
22022
22023  }
22024  msieversion();
22025
22026
22027});

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.